Страница 3 из 3

Re: Как закрыть тему для гостей

Добавлено: 29.10.2017 18:59
rxu

Re: Как закрыть тему для гостей

Добавлено: 29.10.2017 19:19
pantheonptz
Татьяна5, таким образом?

Код: Выделить всё

class listener implements EventSubscriberInterface
	{
	/**
	 * Constructor
	 *
	 * @param \phpbb\config\config     $config   Config object
	 */
	public function __construct( \phpbb\user $user )
	{
		$this->user = $user;
	}

	static public function getSubscribedEvents()
	{
		return array(
			'core.viewforum_get_topic_ids_data'					=>	'forbidden_topic',
			);
	}

	public function forbidden_topic()
	{
		if (!$this->user->data['is_registered'])
		{
			$sql_ary = $event['sql_ary'];
			$sql_ary['WHERE'] .= ' AND t.topic_id <> 49';
			$event['sql_ary'] = $sql_ary;
		}

	}
	}
Функция forbidden_topic должна что-то возвращать? Или она просто вставляется типа inline?
Sheer, Спасибо. Сейчас установлю и создам. Хочется для начала понять, как мне закодить сам функционал.

Re: Как закрыть тему для гостей

Добавлено: 29.10.2017 19:26
Sheer
pantheonptz писал(а): 29.10.2017 19:19Хочется для начала понять, как мне закодить сам функционал.
Так Создание страниц в стиле конференции

Re: Как закрыть тему для гостей

Добавлено: 29.10.2017 19:28
Татьяна5
public function forbidden_topic($event)
В остальном вроде всё верно
pantheonptz писал(а): 29.10.2017 19:19Функция forbidden_topic должна что-то возвращать?
Она возвращает элемент массива $event обратно в код движка. В строке

Код: Выделить всё

$event['sql_ary'] = $sql_ary;
---
А файл composer.json составили? (Он в теме не мелькал)

Re: Как закрыть тему для гостей

Добавлено: 29.10.2017 19:28
Sheer
pantheonptz писал(а): 29.10.2017 19:19forbidden_topic должна что-то возвращать
Нет, но объявлятся должна так

Код: Выделить всё

public function forbidden_topic($event)
Отправлено спустя 57 секунд:
Татьяна5 писал(а): 29.10.2017 19:28Она возвращает элемент
Ну, грубо говоря, не возвращает, а переназначает.

Re: Как закрыть тему для гостей

Добавлено: 29.10.2017 19:52
pantheonptz
Создал болванку расширения с помощью stk
В итоге

Код: Выделить всё

<?php
/**
*
* @package phpBB Extension - 
* @copyright (c) 2017 Anton Charov
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
*
*/
namespace Anton\forbiddentopic\event;

use Symfony\Component\EventDispatcher\EventSubscriberInterface;

/**
* Event listener
*/
class listener implements EventSubscriberInterface
{
/**
* Assign functions defined in this class to event listeners in the core
*
* @return array
* @static
* @access public
*/
	static public function getSubscribedEvents()
	{
		return array(
			'core.viewforum_get_topic_ids_data'					=>	'forbidden_topic',
			);
	}

	/** @var \phpbb\template\template */
	protected $template;

	//** @var string phpbb_root_path */
	protected $phpbb_root_path;

	/**
	* Constructor
	*/
	public function __construct(\phpbb\user $user)
	{
		$this->user = $user;
	}

	public function forbidden_topic($event)
	{
		if (!$this->user->data['is_registered'])
		{
			$sql_ary = $event['sql_ary'];
			$sql_ary['WHERE'] .= ' AND t.topic_id <> 49';
			$event['sql_ary'] = $sql_ary;
		}

	}
}

Всё так? ничего не забыл

Re: Как закрыть тему для гостей

Добавлено: 29.10.2017 19:54
rxu
pantheonptz писал(а): 29.10.2017 19:52Anton
Всё в нижнем регистре должно быть.

Re: Как закрыть тему для гостей

Добавлено: 29.10.2017 20:01
Sheer
и вместо

Код: Выделить всё

	/** @var \phpbb\template\template */
	protected $template;

	//** @var string phpbb_root_path */
	protected $phpbb_root_path;
нужно

Код: Выделить всё

	protected $user;

Re: Как закрыть тему для гостей

Добавлено: 29.10.2017 20:18
pantheonptz
По идее созданное stk расширение должно отображаться в админке-->персонализация-->управление расширениями
Что-то там ничего не появилось.

Re: Как закрыть тему для гостей

Добавлено: 29.10.2017 20:38
Sheer
По идее да, а вы вот создайте новую болванку и НЕ внося туда никаких правок, зайдите в админку.
И
rxu писал(а): 29.10.2017 19:54Всё в нижнем регистре должно быть
Отправлено спустя 1 минуту 11 секунд:
Всё. Имена вендора, папок, файлов, расширения. Всё!

Re: Как закрыть тему для гостей

Добавлено: 29.10.2017 20:51
pantheonptz
Sheer, Создал ещё одно. Все в нижнем регистре. ничего в админке не появилось. файлы создались.

Re: Как закрыть тему для гостей

Добавлено: 29.10.2017 21:10
Sheer
Ага, мой косяк.
composer.json
Найти

Код: Выделить всё

        "php": ">=5.3.3,"
Заменить на

Код: Выделить всё

        "php": ">=5.3.3",
Отправлено спустя 6 минут 50 секунд:
Исправлено https://github.com/AlexSheer/phpBB3.2-S ... fe49dab98c

Re: Как закрыть тему для гостей

Добавлено: 29.10.2017 21:19
pantheonptz
Sheer, Исправил и всё заработало! Спасибо огромное за терпение и массу полезной информации!