Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

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

Форум для авторов расширений для phpBB. Здесь можно попросить помощи в разработке у коллег.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16313
Стаж: 17 лет 10 месяцев
Откуда: Красноярск
Благодарил (а): 533 раза
Поблагодарили: 2119 раз
Контактная информация:

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

Сообщение rxu »

Изображение
Аватара пользователя
pantheonptz
phpBB 1.2.0
Сообщения: 13
Стаж: 6 лет 5 месяцев
Благодарил (а): 1 раз

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

Сообщение 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, Спасибо. Сейчас установлю и создам. Хочется для начала понять, как мне закодить сам функционал.
Перенесено из форума Поддержка phpBB 3.2.x в форум Для авторов 29.10.2017 19:26 модератором rxu

Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 1 месяц
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2752 раза
Контактная информация:

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

Сообщение Sheer »

pantheonptz писал(а): 29.10.2017 19:19Хочется для начала понять, как мне закодить сам функционал.
Так Создание страниц в стиле конференции
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

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

Сообщение Татьяна5 »

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

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

$event['sql_ary'] = $sql_ary;
---
А файл composer.json составили? (Он в теме не мелькал)
Последний раз редактировалось Татьяна5 29.10.2017 19:29, всего редактировалось 1 раз.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 1 месяц
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2752 раза
Контактная информация:

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

Сообщение Sheer »

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

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

public function forbidden_topic($event)
Отправлено спустя 57 секунд:
Татьяна5 писал(а): 29.10.2017 19:28Она возвращает элемент
Ну, грубо говоря, не возвращает, а переназначает.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
pantheonptz
phpBB 1.2.0
Сообщения: 13
Стаж: 6 лет 5 месяцев
Благодарил (а): 1 раз

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

Сообщение 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;
		}

	}
}

Всё так? ничего не забыл
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16313
Стаж: 17 лет 10 месяцев
Откуда: Красноярск
Благодарил (а): 533 раза
Поблагодарили: 2119 раз
Контактная информация:

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

Сообщение rxu »

pantheonptz писал(а): 29.10.2017 19:52Anton
Всё в нижнем регистре должно быть.
Изображение
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 1 месяц
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2752 раза
Контактная информация:

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

Сообщение Sheer »

и вместо

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

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

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

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

	protected $user;
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
pantheonptz
phpBB 1.2.0
Сообщения: 13
Стаж: 6 лет 5 месяцев
Благодарил (а): 1 раз

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

Сообщение pantheonptz »

По идее созданное stk расширение должно отображаться в админке-->персонализация-->управление расширениями
Что-то там ничего не появилось.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 1 месяц
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2752 раза
Контактная информация:

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

Сообщение Sheer »

По идее да, а вы вот создайте новую болванку и НЕ внося туда никаких правок, зайдите в админку.
И
rxu писал(а): 29.10.2017 19:54Всё в нижнем регистре должно быть
Отправлено спустя 1 минуту 11 секунд:
Всё. Имена вендора, папок, файлов, расширения. Всё!
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
pantheonptz
phpBB 1.2.0
Сообщения: 13
Стаж: 6 лет 5 месяцев
Благодарил (а): 1 раз

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

Сообщение pantheonptz »

Sheer, Создал ещё одно. Все в нижнем регистре. ничего в админке не появилось. файлы создались.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 1 месяц
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2752 раза
Контактная информация:

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

Сообщение Sheer »

Ага, мой косяк.
composer.json
Найти

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

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

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

        "php": ">=5.3.3",
Отправлено спустя 6 минут 50 секунд:
Исправлено https://github.com/AlexSheer/phpBB3.2-S ... fe49dab98c
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
pantheonptz
phpBB 1.2.0
Сообщения: 13
Стаж: 6 лет 5 месяцев
Благодарил (а): 1 раз

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

Сообщение pantheonptz »

Sheer, Исправил и всё заработало! Спасибо огромное за терпение и массу полезной информации!
Ответить

Вернуться в «Для разработчиков»