Уважаемые пользователи!
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 | Как задавать вопросы | Как устанавливать расширения

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

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

Сообщение Sheer »

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

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

Сообщение pantheonptz »

Добавил ваш код в конец core.viewforum_get_topic_ids_data
При обращении выдаёт ошибку
Страница недоступна
Сайт epagneulbreton-mooir.ru пока не может обработать этот запрос.
HTTP ERROR 500

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

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

Сообщение rxu »

pantheonptz писал(а): 29.10.2017 15:53Добавил ваш код в конец
pantheonptz писал(а): 29.10.2017 15:53Где искать перехватчик?
Ну ё-моё. По-моему, тут уже ссылки давали на мануалы по расширениям.
Изображение
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

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

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

pantheonptz писал(а): 29.10.2017 15:53в конец core.viewforum_get_topic_ids_data
В конец - это куда? Файлы движка не правят. Совсем.
Надо обращаться к этому событию из вашего расширения, а именно из файла listener.php в нём (этот файл тут назвали перехватчиком, но если точно - называется "слушатель")

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

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

Сообщение Sheer »

Ты его как не назови, все равно он перехватчик, ибо он перехватывает выполнение сценария и вмешивается в его исполнение. И файл можно обозвать как угодно. Хоть listener.php, хоть main_listener.php
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16313
Стаж: 17 лет 10 месяцев
Откуда: Красноярск
Благодарил (а): 533 раза
Поблагодарили: 2119 раз
Контактная информация:

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

Сообщение rxu »

Sheer писал(а): 29.10.2017 16:25Хоть listener.php, хоть main_listener.php
И даже whatevenameyouwant.php.
Изображение
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 1 месяц
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2752 раза
Контактная информация:

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

Сообщение Sheer »

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

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

Сообщение pantheonptz »

То есть без написания собственного расширения никак? Это ж куча файлов и тонны текста для изучения.
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

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

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

Кучи файлов не надо, достаточно 3 штук (из которых 2 конфигурационные). Тонн текста тоже для такой мелочи не надо, достаточно пройти по ссылке (первой, что дала) и вникнуть в то, что там написано
А заготовку расширения, уже писала, можно сгенерировать через STK
Последний раз редактировалось Татьяна5 29.10.2017 17:29, всего редактировалось 1 раз.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16313
Стаж: 17 лет 10 месяцев
Откуда: Красноярск
Благодарил (а): 533 раза
Поблагодарили: 2119 раз
Контактная информация:

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

Сообщение rxu »

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

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

Сообщение Sheer »

Ну можно тупо в коде изменить SQL-запрос, нафиг там какие-то события, слушатели, перехватчики. Сваяем модик. Потом еще один.
Только все эти ваши эм.... потуги бесполезны, ибо даже если темы не будет в списке, то ее можно открыть по прямой ссылке. Значит и viewtopic.php править надо будет.

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

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

Сообщение pantheonptz »

Это servicies\config.yml расширения

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

services:
    forbiddentopic.listener:
        class: forbiddentopic\event\listener
        arguments:
            - @user            
        tags:
            - { name: event.listener }
Берем только один аргумент - user и в event\listener.php

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

<?php
	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()
	{
		if (!$this->user->data['is_registered'])
		{
			$sql_ary = $event['sql_ary'];
			$sql_ary['WHERE'] .= ' AND t.topic_id <> 49';
			$event['sql_ary'] = $sql_ary;
		}
	}

	}
	/>
Это уже ближе к теме вопроса? Или я опять туплю?

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

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

Сообщение rxu »

pantheonptz писал(а): 29.10.2017 18:01Это уже ближе к теме вопроса?
Существенно.
pantheonptz писал(а): 29.10.2017 18:01Или я опять туплю?
Есть немного. У расширения должна быть вполне конкретная структура папок, и namespace в скриптах. А вот это /> вообще не в тему.

Отправлено спустя 36 секунд:
pantheonptz писал(а): 29.10.2017 18:01static public function getSubscribedEvents()
{
if (!$this->user->data['is_registered'])
И вот тут совсем не так всё.
Изображение
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

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

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

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

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

Сообщение Sheer »

pantheonptz, Третий раз вам говорят, установите [3.1][3.2] [dev] STK for phpBB 3.1.x & 3.2.x и создайте там болванку расширения. Далее вам нужно будет отредактировать servicies\config.yml и event\listener.php
и не парьтесь.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Перенесено из форума Поддержка phpBB 3.2.x в форум Для авторов 29.10.2017 19:26 модератором rxu

Ответить

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