services:
    notification_manager:
        class: phpbb\notification\manager
        arguments:
            - @notification.type_collection
            - @notification.method_collection
            - @service_container
            - @user_loader
            - @config
            - @dispatcher
            - @dbal.conn
            - @cache
            - @user
            - %core.root_path%
            - %core.php_ext%
            - %tables.notification_types%
            - %tables.notifications%
            - %tables.user_notifications%

# ----- Notification's types -----
# Scope MUST be prototype for all the plugins to work.
    notification.type_collection:
        class: phpbb\di\service_collection
        arguments:
            - @service_container
        tags:
            - { name: service_collection, tag: notification.type }

    notification.type.approve_post:
        class: phpbb\notification\type\approve_post
        scope: prototype
        arguments:
            - @user_loader
            - @dbal.conn
            - @cache.driver
            - @user
            - @auth
            - @config
            - %core.root_path%
            - %core.php_ext%
            - %tables.notification_types%
            - %tables.notifications%
            - %tables.user_notifications%
        tags:
            - { name: notification.type }

    notification.type.approve_topic:
        class: phpbb\notification\type\approve_topic
        scope: prototype
        arguments:
            - @user_loader
            - @dbal.conn
            - @cache.driver
            - @user
            - @auth
            - @config
            - %core.root_path%
            - %core.php_ext%
            - %tables.notification_types%
            - %tables.notifications%
            - %tables.user_notifications%
        tags:
            - { name: notification.type }

    notification.type.bookmark:
        class: phpbb\notification\type\bookmark
        scope: prototype
        arguments:
            - @user_loader
            - @dbal.conn
            - @cache.driver
            - @user
            - @auth
            - @config
            - %core.root_path%
            - %core.php_ext%
            - %tables.notification_types%
            - %tables.notifications%
            - %tables.user_notifications%
        tags:
            - { name: notification.type }

    notification.type.disapprove_post:
        class: phpbb\notification\type\disapprove_post
        scope: prototype
        arguments:
            - @user_loader
            - @dbal.conn
            - @cache.driver
            - @user
            - @auth
            - @config
            - %core.root_path%
            - %core.php_ext%
            - %tables.notification_types%
            - %tables.notifications%
            - %tables.user_notifications%
        tags:
            - { name: notification.type }

    notification.type.disapprove_topic:
        class: phpbb\notification\type\disapprove_topic
        scope: prototype
        arguments:
            - @user_loader
            - @dbal.conn
            - @cache.driver
            - @user
            - @auth
            - @config
            - %core.root_path%
            - %core.php_ext%
            - %tables.notification_types%
            - %tables.notifications%
            - %tables.user_notifications%
        tags:
            - { name: notification.type }

    notification.type.group_request:
        class: phpbb\notification\type\group_request
        scope: prototype
        arguments:
            - @user_loader
            - @dbal.conn
            - @cache.driver
            - @user
            - @auth
            - @config
            - %core.root_path%
            - %core.php_ext%
            - %tables.notification_types%
            - %tables.notifications%
            - %tables.user_notifications%
        tags:
            - { name: notification.type }

    notification.type.group_request_approved:
        class: phpbb\notification\type\group_request_approved
        scope: prototype
        arguments:
            - @user_loader
            - @dbal.conn
            - @cache.driver
            - @user
            - @auth
            - @config
            - %core.root_path%
            - %core.php_ext%
            - %tables.notification_types%
            - %tables.notifications%
            - %tables.user_notifications%
        tags:
            - { name: notification.type }

    notification.type.pm:
        class: phpbb\notification\type\pm
        scope: prototype
        arguments:
            - @user_loader
            - @dbal.conn
            - @cache.driver
            - @user
            - @auth
            - @config
            - %core.root_path%
            - %core.php_ext%
            - %tables.notification_types%
            - %tables.notifications%
            - %tables.user_notifications%
        tags:
            - { name: notification.type }

    notification.type.post:
        class: phpbb\notification\type\post
        scope: prototype
        arguments:
            - @user_loader
            - @dbal.conn
            - @cache.driver
            - @user
            - @auth
            - @config
            - %core.root_path%
            - %core.php_ext%
            - %tables.notification_types%
            - %tables.notifications%
            - %tables.user_notifications%
        tags:
            - { name: notification.type }

    notification.type.post_in_queue:
        class: phpbb\notification\type\post_in_queue
        scope: prototype
        arguments:
            - @user_loader
            - @dbal.conn
            - @cache.driver
            - @user
            - @auth
            - @config
            - %core.root_path%
            - %core.php_ext%
            - %tables.notification_types%
            - %tables.notifications%
            - %tables.user_notifications%
        tags:
            - { name: notification.type }

    notification.type.quote:
        class: phpbb\notification\type\quote
        scope: prototype
        arguments:
            - @user_loader
            - @dbal.conn
            - @cache.driver
            - @user
            - @auth
            - @config
            - %core.root_path%
            - %core.php_ext%
            - %tables.notification_types%
            - %tables.notifications%
            - %tables.user_notifications%
        tags:
            - { name: notification.type }

    notification.type.report_pm:
        class: phpbb\notification\type\report_pm
        scope: prototype
        arguments:
            - @user_loader
            - @dbal.conn
            - @cache.driver
            - @user
            - @auth
            - @config
            - %core.root_path%
            - %core.php_ext%
            - %tables.notification_types%
            - %tables.notifications%
            - %tables.user_notifications%
        tags:
            - { name: notification.type }

    notification.type.report_pm_closed:
        class: phpbb\notification\type\report_pm_closed
        scope: prototype
        arguments:
            - @user_loader
            - @dbal.conn
            - @cache.driver
            - @user
            - @auth
            - @config
            - %core.root_path%
            - %core.php_ext%
            - %tables.notification_types%
            - %tables.notifications%
            - %tables.user_notifications%
        tags:
            - { name: notification.type }

    notification.type.report_post:
        class: phpbb\notification\type\report_post
        scope: prototype
        arguments:
            - @user_loader
            - @dbal.conn
            - @cache.driver
            - @user
            - @auth
            - @config
            - %core.root_path%
            - %core.php_ext%
            - %tables.notification_types%
            - %tables.notifications%
            - %tables.user_notifications%
        tags:
            - { name: notification.type }

    notification.type.report_post_closed:
        class: phpbb\notification\type\report_post_closed
        scope: prototype
        arguments:
            - @user_loader
            - @dbal.conn
            - @cache.driver
            - @user
            - @auth
            - @config
            - %core.root_path%
            - %core.php_ext%
            - %tables.notification_types%
            - %tables.notifications%
            - %tables.user_notifications%
        tags:
            - { name: notification.type }

    notification.type.topic:
        class: phpbb\notification\type\topic
        scope: prototype
        arguments:
            - @user_loader
            - @dbal.conn
            - @cache.driver
            - @user
            - @auth
            - @config
            - %core.root_path%
            - %core.php_ext%
            - %tables.notification_types%
            - %tables.notifications%
            - %tables.user_notifications%
        tags:
            - { name: notification.type }

    notification.type.topic_in_queue:
        class: phpbb\notification\type\topic_in_queue
        scope: prototype
        arguments:
            - @user_loader
            - @dbal.conn
            - @cache.driver
            - @user
            - @auth
            - @config
            - %core.root_path%
            - %core.php_ext%
            - %tables.notification_types%
            - %tables.notifications%
            - %tables.user_notifications%
        tags:
            - { name: notification.type }

    notification.type.admin_activate_user:
        class: phpbb\notification\type\admin_activate_user
        scope: prototype
        arguments:
            - @user_loader
            - @dbal.conn
            - @cache.driver
            - @user
            - @auth
            - @config
            - %core.root_path%
            - %core.php_ext%
            - %tables.notification_types%
            - %tables.notifications%
            - %tables.user_notifications%
        tags:
            - { name: notification.type }
            
# ----- Notification's methods -----
# Scope MUST be prototype for all the plugins to work.
    notification.method_collection:
        class: phpbb\di\service_collection
        arguments:
            - @service_container
        tags:
            - { name: service_collection, tag: notification.method }

    notification.method.email:
        class: phpbb\notification\method\email
        scope: prototype
        arguments:
            - @user_loader
            - @dbal.conn
            - @cache.driver
            - @user
            - @auth
            - @config
            - %core.root_path%
            - %core.php_ext%
        tags:
            - { name: notification.method }

    notification.method.jabber:
        class: phpbb\notification\method\jabber
        scope: prototype
        arguments:
            - @user_loader
            - @dbal.conn
            - @cache.driver
            - @user
            - @auth
            - @config
            - %core.root_path%
            - %core.php_ext%
        tags:
            - { name: notification.method }
