services.yml 2.85 KB
Newer Older
parameters:
    irstea_file_upload.entity: Irstea\FileUploadBundle\Entity\UploadedFile

    irstea_file_upload.upload_controller.class: Irstea\FileUploadBundle\Controller\UploadController
    irstea_file_upload.entity_listener.class: Irstea\FileUploadBundle\Listener\UploadedFileListener
    irstea_file_upload.field_type.class: Irstea\FileUploadBundle\Form\Type\FileUploadType

    irstea_file_upload.filesystem.name: irstea_file_upload

    irstea_file_upload.max_chunk_size: 0

services:

    # Le gestionnaire de fichiers
    irstea_file_upload.file_manager:
        class: Irstea\FileUploadBundle\Model\FileManagerInterface
        factory:  [ @doctrine.orm.entity_manager, getRepository ]
        arguments:
            - %irstea_file_upload.entity%
        calls:
            - [ setFilesystem, [ @irstea_file_upload.filesystem ] ]
            - [ setLogger, [ @logger ] ]
            - [ setEventDispatcher, [ @event_dispatcher ] ]
        tags:
            - { name: monolog.logger, channel: irstea_file_upload }

    # Le contrôleur qui gère les uploads
    irstea_file_upload.upload_controller:
        class: %irstea_file_upload.upload_controller.class%
        arguments:
            - @irstea_file_upload.file_manager
            - @router
            - @form.csrf_provider

    # Type de champ
    irstea_file_upload.field_type:
        class: %irstea_file_upload.field_type.class%
        arguments:
            - @router
            - @irstea_file_upload.file_manager
            - %irstea_file_upload.max_chunk_size%
        tags:
            - { name: form.type, alias: file_upload }

    # Le listener
    irstea_file_upload.entity_listener:
        class: %irstea_file_upload.entity_listener.class%
        arguments:
            - @irstea_file_upload.filesystem
        tags:
            - { name: doctrine.orm.entity_listener }

    # Le backend de stockage des fichiers
    irstea_file_upload.filesystem:
        class: Gaufrette\Filesystem
        factory: [ @knp_gaufrette.filesystem_map, get ]
        arguments:
            - %irstea_file_upload.filesystem.name%

    # Scanner anti-virus
    irstea_file_upload.virus_scanner:
        class: Irstea\FileUploadBundle\Listener\VirusScannerListener
        arguments:
            - @cl_tissue.scanner
        tags:
            - { name: kernel.event_listener, event: file_upload.complete, method: onFileUploadCompleted }

    # Extension Twig
    irstea_file_upload.twig_extension:
        class: Irstea\FileUploadBundle\Twig\FileUploadExtension
        arguments:
            - @translator

    # Générateur d'URL
    irstea_file_upload.url_generator:
        class: Irstea\FileUploadBundle\Service\FileUrlGenerator
        arguments:
            - @router
            - @security.csrf.token_manager