Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
4 / 4
CRAP
100.00% covered (success)
100.00%
24 / 24
manager
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
4 / 4
7
100.00% covered (success)
100.00%
24 / 24
 __construct
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
4 / 4
 add_block
100.00% covered (success)
100.00%
1 / 1
4
100.00% covered (success)
100.00%
11 / 11
 add_question
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
8 / 8
 switched_column
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
<?php
/**
 *
 * This file is part of the phpBB Forum Software package.
 *
 * @copyright (c) phpBB Limited <https://www.phpbb.com>
 * @license GNU General Public License, version 2 (GPL-2.0)
 *
 * For full copyright and license information, please see
 * the docs/CREDITS.txt file.
 *
 */
namespace phpbb\help;
/**
 * Class help page manager
 */
class manager
{
    /** @var \phpbb\event\dispatcher_interface */
    protected $dispatcher;
    /** @var \phpbb\language\language */
    protected $language;
    /** @var \phpbb\template\template */
    protected $template;
    /** @var bool */
    protected $switched_column;
    /**
     * Constructor
     *
     * @param \phpbb\event\dispatcher_interface $dispatcher
     * @param \phpbb\language\language $language
     * @param \phpbb\template\template $template
     */
    public function __construct(\phpbb\event\dispatcher_interface $dispatcher, \phpbb\language\language $language, \phpbb\template\template $template)
    {
        $this->dispatcher = $dispatcher;
        $this->language = $language;
        $this->template = $template;
    }
    /**
     * Add a new faq block
     *
     * @param string $block_name    Name or language key with the name of the block
     * @param bool $switch_column    Switch the column of the menu
     * @param array $questions        Array of frequently asked questions
     */
    public function add_block($block_name, $switch_column = false, $questions = array())
    {
        /**
         * You can use this event to add a block before the current one.
         *
         * @event core.help_manager_add_block_before
         * @var    string    block_name        Language key of the block headline
         * @var    bool    switch_column    Should we switch the menu column before this headline
         * @var    array    questions        Array with questions
         * @since 3.2.0-a1
         */
        $vars = array('block_name', 'switch_column', 'questions');
        extract($this->dispatcher->trigger_event('core.help_manager_add_block_before', compact($vars)));
        $this->template->assign_block_vars('faq_block', array(
            'BLOCK_TITLE'        => $this->language->lang($block_name),
            'SWITCH_COLUMN'        => !$this->switched_column && $switch_column,
        ));
        foreach ($questions as $question => $answer)
        {
            $this->add_question($question, $answer);
        }
        $this->switched_column = $this->switched_column || $switch_column;
        /**
         * You can use this event to add a block after the current one.
         *
         * @event core.help_manager_add_block_after
         * @var    string    block_name        Language key of the block headline
         * @var    bool    switch_column    Should we switch the menu column before this headline
         * @var    array    questions        Array with questions
         * @since 3.2.0-a1
         */
        $vars = array('block_name', 'switch_column', 'questions');
        extract($this->dispatcher->trigger_event('core.help_manager_add_block_after', compact($vars)));
    }
    /**
     * Add a new faq question
     *
     * @param string $question    Question or language key with the question of the block
     * @param string $answer    Answer or language key with the answer of the block
     */
    public function add_question($question, $answer)
    {
        /**
         * You can use this event to add a question before the current one.
         *
         * @event core.help_manager_add_question_before
         * @var    string    question    Language key of the question
         * @var    string    answer        Language key of the answer
         * @since 3.2.0-a1
         */
        $vars = array('question', 'answer');
        extract($this->dispatcher->trigger_event('core.help_manager_add_question_before', compact($vars)));
        $this->template->assign_block_vars('faq_block.faq_row', array(
            'FAQ_QUESTION'        => $this->language->lang($question),
            'FAQ_ANSWER'        => $this->language->lang($answer),
        ));
        /**
         * You can use this event to add a question after the current one.
         *
         * @event core.help_manager_add_question_after
         * @var    string    question    Language key of the question
         * @var    string    answer        Language key of the answer
         * @since 3.2.0-a1
         */
        $vars = array('question', 'answer');
        extract($this->dispatcher->trigger_event('core.help_manager_add_question_after', compact($vars)));
    }
    /**
     * Returns whether the block titles switched side
     * @return bool
     */
    public function switched_column()
    {
        return $this->switched_column;
    }
}