1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-01-19 15:17:16 +01:00
php-phpbb/phpBB/phpbb/help/manager.php
Agris ba5a2bcb73
[ticket/15251] Use dispatcher_interface in help manager
Allow TraceableEventDispatcher for webprofiler

PHPBB3-15251
2017-06-25 12:02:25 +02:00

138 lines
4.0 KiB
PHP

<?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;
}
}