services:
    wallabag_core.helper.detect_active_theme:
        class: Wallabag\CoreBundle\Helper\DetectActiveTheme
        arguments:
            - "@security.token_storage"
            - "%wallabag_core.theme%"

    # custom form type
    wallabag_core.form.type.config:
        class: Wallabag\CoreBundle\Form\Type\ConfigType
        arguments:
            - "%liip_theme.themes%"
            - "%wallabag_core.languages%"
        tags:
            - { name: form.type }

    wallabag_core.filter.type.entry:
        class: Wallabag\CoreBundle\Form\Type\EntryFilterType
        arguments:
            - "@wallabag_core.entry_repository"
            - "@security.token_storage"
        tags:
            - { name: form.type }

    wallabag_core.param_converter.username_rsstoken_converter:
        class: Wallabag\CoreBundle\ParamConverter\UsernameRssTokenConverter
        tags:
            - { name: request.param_converter, converter: username_rsstoken_converter }
        arguments:
            - "@doctrine"

    wallabag_core.table_prefix_subscriber:
        class: Wallabag\CoreBundle\Subscriber\TablePrefixSubscriber
        arguments:
            - "%database_table_prefix%"
        tags:
            - { name: doctrine.event_subscriber }

    wallabag_core.graby:
        class: Graby\Graby
        arguments:
            -
                error_message: "wallabag can't retrieve contents for this article. Please report this issue to us."
                http_client:
                    user_agents:
                        'lifehacker.com': 'PHP/5.2'
                        'gawker.com': 'PHP/5.2'
                        'deadspin.com': 'PHP/5.2'
                        'kotaku.com': 'PHP/5.2'
                        'jezebel.com': 'PHP/5.2'
                        'io9.com': 'PHP/5.2'
                        'jalopnik.com': 'PHP/5.2'
                        'gizmodo.com': 'PHP/5.2'
                        '.wikipedia.org': 'Mozilla/5.2'
                        '.fok.nl': 'Googlebot/2.1'
                        'getpocket.com': 'PHP/5.2'
                        'iansommerville.com': 'PHP/5.2'
        calls:
            - [ setLogger, [ "@logger" ] ]
        tags:
            - { name: monolog.logger, channel: graby }

    wallabag_core.content_proxy:
        class: Wallabag\CoreBundle\Helper\ContentProxy
        arguments:
            - "@wallabag_core.graby"
            - "@wallabag_core.rule_based_tagger"
            - "@wallabag_core.tag_repository"
            - "@logger"

    wallabag_core.rule_based_tagger:
        class: Wallabag\CoreBundle\Helper\RuleBasedTagger
        arguments:
            - "@rulerz"
            - "@wallabag_core.tag_repository"
            - "@wallabag_core.entry_repository"

    # repository as a service
    wallabag_core.entry_repository:
        class: Wallabag\CoreBundle\Repository\EntryRepository
        factory: [ "@doctrine.orm.default_entity_manager", getRepository ]
        arguments:
            - WallabagCoreBundle:Entry

    wallabag_core.tag_repository:
        class: Wallabag\CoreBundle\Repository\TagRepository
        factory: [ "@doctrine.orm.default_entity_manager", getRepository ]
        arguments:
            - WallabagCoreBundle:Tag

    wallabag_core.registration_confirmed:
        class: Wallabag\CoreBundle\EventListener\RegistrationConfirmedListener
        arguments:
            - "@doctrine.orm.entity_manager"
            - "%wallabag_core.theme%"
            - "%wallabag_core.items_on_page%"
            - "%wallabag_core.rss_limit%"
            - "%wallabag_core.language%"
        tags:
            - { name: kernel.event_subscriber }

    wallabag_core.helper.entries_export:
        class: Wallabag\CoreBundle\Helper\EntriesExport
        arguments:
            - "@craue_config"
            - src/Wallabag/CoreBundle/Resources/public/themes/_global/img/appicon/apple-touch-icon-152.png

    wallabag.operator.array.matches:
        class: Wallabag\CoreBundle\Operator\PHP\Matches
        tags:
            - { name: rulerz.operator, executor: rulerz.executor.array, operator: matches }

    wallabag.operator.doctrine.matches:
        class: Wallabag\CoreBundle\Operator\Doctrine\Matches
        tags:
            - { name: rulerz.operator, executor: rulerz.executor.doctrine, operator: matches, inline: true }

    wallabag_core.helper.redirect:
        class: Wallabag\CoreBundle\Helper\Redirect
        arguments:
            - "@router"
