# Learn more about services, parameters and containers at
# https://symfony.com/doc/current/service_container.html
parameters:
  image.image_uploader: BackBundle\Service\FileUpload
  app.twig.slider.globals.class: FrontBundle\Twig\Extension\SliderExtention
  app.twig.new.globals.class: FrontBundle\Twig\Extension\newExtention


services:
    # default configuration for services in *this* file
    _defaults:
        # automatically injects dependencies in your services
        autowire: true
        # automatically registers your services as commands, event subscribers, etc.
        autoconfigure: true
        # this means you cannot fetch services directly from the container via $container->get()
        # if you need to do this, you can override this setting on individual services
        public: false

    # makes classes in src/AppBundle available to be used as services
    # this creates a service per class whose id is the fully-qualified class name
    AppBundle\:
        resource: '../../src/AppBundle/*'
        # you can exclude directories or files
        # but if a service is unused, it's removed anyway
        exclude: '../../src/AppBundle/{Entity,Repository,Tests}'

    # controllers are imported separately to make sure they're public
    # and have a tag that allows actions to type-hint services
    AppBundle\Controller\:
        resource: '../../src/AppBundle/Controller'
        public: true
        tags: ['controller.service_arguments']

    # add more services, or override services that need manual wiring
    # AppBundle\Service\ExampleService:
    #     arguments:
    #         $someArgument: 'some_value'

    redirect.after.login:
        class: UserBundle\Redirection\AfterLoginRedirection
        arguments: ["@router"]

    redirect.after.logout:
        class: UserBundle\Redirection\AfterLogoutRedirection
        arguments: ["@router", "@security.authorization_checker"]

    image.image_uploader:
        class: BackBundle\Service\FileUpload
        arguments: ['%images_directory%']

    team.doctrine_image_listener:
        class: BackBundle\EventListener\TeamUploadListener
        arguments: ['@image.image_uploader']
        tags:
            - { name: doctrine.event_listener, event: prePersist }
            - { name: doctrine.event_listener, event: preUpdate }

    slider.doctrine_image_listener:
        class: BackBundle\EventListener\SliderUploadListener
        arguments: ['@image.image_uploader']
        tags:
            - { name: doctrine.event_listener, event: prePersist }
            - { name: doctrine.event_listener, event: preUpdate }

    post.doctrine_file_listener:
        class: BackBundle\EventListener\PostUploadListener
        arguments: ['@image.image_uploader']
        tags:
            - { name: doctrine.event_listener, event: prePersist }
            - { name: doctrine.event_listener, event: preUpdate }

    event.doctrine_picture_listener:
        class: BackBundle\EventListener\EventUploadListener
        arguments: ['@image.image_uploader']
        tags:
            - { name: doctrine.event_listener, event: prePersist }
            - { name: doctrine.event_listener, event: preUpdate }

    actualite.doctrine_picture_listener:
        class: BackBundle\EventListener\ActualiteUploadListener
        arguments: ['@image.image_uploader']
        tags:
            - { name: doctrine.event_listener, event: prePersist}
            - { name: doctrine.event_listener, event: preUpdate}

    media.doctrine_picture_listener:
        class: BackBundle\EventListener\MediaUploadListener
        arguments: ['@image.image_uploader']
        tags:
            - { name: doctrine.event_listener, event: prePersist}
            - { name: doctrine.event_listener, event: preUpdate}

    app.twig.slider.globals.extension:
        class: %app.twig.slider.globals.class%
        arguments: ["@doctrine.orm.entity_manager"]
        tags:
            - { name: twig.extension }

    app.twig.new.globals.extension:
        class: %app.twig.new.globals.class%
        arguments: ["@doctrine.orm.entity_manager"]
        tags:
            - { name: twig.extension }

    twig.extension.intl:
        class: Twig_Extensions_Extension_Intl
        public: false
        tags:
            - { name: twig.extension }