services: # ================================================================================ # TWIG # ================================================================================ markdown: class: AppBundle\Utils\Markdown app.twig.app_extension: public: false class: AppBundle\Twig\Extensions arguments: ['@markdown', '%app_locales%'] tags: - { name: twig.extension } # twig function: template_from_string() app.twig.loader_extension: class: Twig_Extension_StringLoader tags: - { name: 'twig.extension' } app.twig.intl_extension: public: false class: Twig_Extensions_Extension_Intl tags: - { name: twig.extension } # ================================================================================ # SECURITY # ================================================================================ # security voter to check user-profile access app.voter.user: class: AppBundle\Voter\UserVoter arguments: ["@security.access.decision_manager"] tags: - { name: security.voter } # security voter to check customer access timesheet.voter.customer: class: TimesheetBundle\Voter\CustomerVoter arguments: ["@security.access.decision_manager"] tags: - { name: security.voter } # security voter to check project access timesheet.voter.project: class: TimesheetBundle\Voter\ProjectVoter arguments: ["@security.access.decision_manager"] tags: - { name: security.voter } # security voter to check activity access timesheet.voter.activity: class: TimesheetBundle\Voter\ActivityVoter arguments: ["@security.access.decision_manager"] tags: - { name: security.voter } # security voter to check activity access timesheet.voter.timesheet: class: TimesheetBundle\Voter\TimesheetVoter arguments: ["@security.access.decision_manager"] tags: - { name: security.voter } # ================================================================================ # FORMS # ================================================================================ # form to edit user roles app.admin.user_profile_roles: class: AppBundle\Form\UserRolesType arguments: ["%security.role_hierarchy.roles%"] tags: - { name: form.type } # event-listener to populate the navigation app.menu_builder: class: AppBundle\EventListener\MenuBuilder arguments: ["@event_dispatcher", "@security.authorization_checker"] tags: - { name: kernel.event_listener, event: theme.sidebar_setup_menu, method: onSetupNavbar } # ================================================================================ # DATABASE # ================================================================================ # service that prefixes every database table app.tableprefix_subscriber: class: AppBundle\Doctrine\TablePrefixSubscriber arguments: ["%database_prefix%"] tags: - { name: doctrine.event_subscriber } app.database_listener.timesheet: class: TimesheetBundle\EventListener\TimesheetListener tags: - { name: doctrine.event_listener, event: prePersist, lazy: true } - { name: doctrine.event_listener, event: preUpdate, lazy: true } # Uncomment the following lines to define a service for the Post Doctrine repository. # It's not mandatory to create these services, but if you use repositories a lot, # these services simplify your code: # # app.post_repository: # class: Doctrine\ORM\EntityRepository # factory: ['@doctrine.orm.entity_manager', getRepository] # arguments: [AppBundle\Entity\User] # # // traditional code inside a controller # $entityManager = $this->getDoctrine()->getManager(); # $posts = $entityManager->getRepository('AppBundle:User')->findAll(); # # // same code using repository services # $posts = $this->get('app.user_repository')->findAll(); # ================================================================================ # THEME # ================================================================================ avanzu_admin_theme.navbar_user_listener: class: AppBundle\EventListener\NavbarShowUserListener arguments: ["@security.token_storage"] tags: - { name: kernel.event_listener, event: theme.navbar_user, method: onShowUser } - { name: kernel.event_listener, event: theme.sidebar_user, method: onShowUser } # avanzu_admin_theme.navbar_task_listener: # class: "%avanzu_admin_theme.navbar_task_listener.class%" # tags: # - { name: kernel.event_listener, event: theme.tasks, method: onListTasks } # # avanzu_admin_theme.navbar_notify_listener: # class: "%avanzu_admin_theme.navbar_notify_listener.class%" # tags: # - { name: kernel.event_listener, event: theme.notifications, method: onListNotifications } # # avanzu_admin_theme.navbar_msg_listener: # class: "%avanzu_admin_theme.navbar_msg_listener.class%" # tags: # - { name: kernel.event_listener, event: theme.messages, method: onListMessages } # # avanzu_admin_theme.setup_menu_listener: # class: "%avanzu_admin_theme.setup_menu_listener.class%" # tags: # - { name: kernel.event_listener, event: theme.sidebar_setup_menu, method: onSetupMenu } # - { name: kernel.event_listener, event: theme.breadcrumb, method: onSetupMenu } # ================================================================================ # APPLICATION CORE # ================================================================================ # a route listener, that injects the locale through a URL directory app.redirect_to_preferred_locale_listener: class: AppBundle\EventListener\RedirectToPreferredLocaleListener arguments: ['@router', '%app_locales%', '%locale%'] tags: - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest } # additional menu entries for the timesheet bundle timesheet.configure_menu_listener: class: TimesheetBundle\EventListener\Menu tags: - { name: kernel.event_listener, event: app.main_menu_configure, method: onMainMenuConfigure } - { name: kernel.event_listener, event: app.admin_menu_configure, method: onAdminMenuConfigure } # ================================================================================ # CONSOLE COMMANDS # ================================================================================ app.command.create_user: class: AppBundle\Command\CreateUserCommand arguments: ["@security.password_encoder", "@doctrine", "@validator"] tags: - { name: console.command, command: kimai:create-user }