Уважаемые пользователи!
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
Сообщения: 16370
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1745 раз

Re: Расширения - это просто!

Сообщение rxu »

global сейчас не поощряется, видимо, по соображениям ресурсоемкости, ну и архитектурно.
Везде, где можно, используются зависимости и сервисы.
Изображение
Shredder
Former team member
Сообщения: 2224
Стаж: 15 лет 4 месяца
Благодарил (а): 124 раза
Поблагодарили: 138 раз

Re: Расширения - это просто!

Сообщение Shredder »

Нужно в файл message_parser к стандартным проверкам содержимого текста добавить ещё одну, свою. Например, после этой:

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

		// Minimum message length check for post only
		if ($mode === 'post')
		{
			if (!$message_length || $message_length < (int) $config['min_post_chars'])
			{
				$this->warn_msg[] = (!$message_length) ? $user->lang['TOO_FEW_CHARS'] : ($user->lang('CHARS_POST_CONTAINS', $message_length) . '<br />' . $user->lang('TOO_FEW_CHARS_LIMIT', (int) $config['min_post_chars']));
				return (!$update_this_message) ? $return_message : $this->warn_msg;
			}
		}
Как я понимаю, нужных событий нету?
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16370
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1745 раз

Re: Расширения - это просто!

Сообщение rxu »

Shredder писал(а): нужных событий нету?
https://github.com/phpbb/phpbb/pull/3114
Ждем-с.
Изображение
Shredder
Former team member
Сообщения: 2224
Стаж: 15 лет 4 месяца
Благодарил (а): 124 раза
Поблагодарили: 138 раз

Re: Расширения - это просто!

Сообщение Shredder »

rxu
Вижу, уже что-то добавили:
https://github.com/rxu/phpbb3/commit/89 ... 8702010c40

А ошибку там свою можно будет задать? Как в примере выше, чтобы при определённом условии выводилась языковая строка.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16370
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1745 раз

Re: Расширения - это просто!

Сообщение rxu »

Shredder писал(а):Вижу, уже что-то добавили:
Еще нет, только PR.
Shredder писал(а):ошибку там свою можно будет задать
Думаю, что да.
Изображение
Shredder
Former team member
Сообщения: 2224
Стаж: 15 лет 4 месяца
Благодарил (а): 124 раза
Поблагодарили: 138 раз

Re: Расширения - это просто!

Сообщение Shredder »

А как можно задать, чтобы расширение не включалось на phpBB ниже 3.1.2? Или так сделать нельзя?
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16370
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1745 раз

Re: Расширения - это просто!

Сообщение rxu »

composer.json

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

        "soft-require": {
           "phpbb/phpbb": ">=3.1.2"
        },
Изображение
Shredder
Former team member
Сообщения: 2224
Стаж: 15 лет 4 месяца
Благодарил (а): 124 раза
Поблагодарили: 138 раз

Re: Расширения - это просто!

Сообщение Shredder »

Я так и сделал, но оно всё равно включается.
Можно, конечно, сделать эту проверку в администраторском модуле, чтобы там выдавалось предупреждение, но всё же.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16370
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1745 раз

Re: Расширения - это просто!

Сообщение rxu »

Shredder
OK, тогда в ext.php добавить функцию is_enableable() с телом вроде

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

public function is_enableable()
{
	$version_helper = $this->container->get('version_helper');
	return $version_helper->compare($version_helper->current, '3.1.2', '>=');
}
Изображение
Аватара пользователя
Webliberty
phpBB 2.0.5
Сообщения: 472
Стаж: 12 лет 4 месяца
Благодарил (а): 136 раз
Поблагодарили: 63 раза

Re: Расширения - это просто!

Сообщение Webliberty »

Есть два расширения и оба они используют одно и тоже php событие, например, core.viewtopic_get_post_data. Но событию сопоставлены разные функции:

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

'core.viewtopic_get_post_data' => 'data1',
'core.viewtopic_get_post_data' => 'data2',
Будут ли в таком случае работать оба расширения или необходимо использовать разные события?
Мой форум на phpBB 3.3.8 (начинал с phpBB 3.0.9)
Подпись заверена нотариусом :P
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16370
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1745 раз

Re: Расширения - это просто!

Сообщение rxu »

seodirection
Тут всё просто. Функция static public function getSubscribedEvents() возвращает ассоциативный массив, в котором ключ - имя события, значение - его подписчик. Таким образом, у вас не получится задать более одного подписчика с одним и тем же ключом, т.е. именем события. Если вы сначала сделаете 'core.viewtopic_get_post_data' => 'data1', и потом 'core.viewtopic_get_post_data' => 'data2', - то последнее значение перезапишет предыдущее и выполнится подписчик, указанный последним.
Т.е. здесь ничего особенного нет, обычная работа с массивами PHP.
Изображение
Shredder
Former team member
Сообщения: 2224
Стаж: 15 лет 4 месяца
Благодарил (а): 124 раза
Поблагодарили: 138 раз

Re: Расширения - это просто!

Сообщение Shredder »

seodirection писал(а):Есть два расширения и оба они используют одно и тоже php событие
Будут. И думаю, это не сложно проверить. Если случится конфликт, то можно использовать приоритет: Карта сайта для ботов (phpBB3 SEO Sitemap)
Приоритет делается обычной цифрой:

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

			'core.viewtopic_get_post_data'			=> array('viewtopic_handle_thanks', -2),
Если у первого расширения он меньше, чем у второго, то код первого выполняется позднее.

rxu
Он про разные расширения говорит. Либо я что-то не так понял.
Аватара пользователя
Webliberty
phpBB 2.0.5
Сообщения: 472
Стаж: 12 лет 4 месяца
Благодарил (а): 136 раз
Поблагодарили: 63 раза

Re: Расширения - это просто!

Сообщение Webliberty »

Так и получилось у меня, расширение которое включил вторым работает, зато первое перестало, хотя до написания второго работало) Поэтому объединил функции в одно расширение и заработало.
Мой форум на phpBB 3.3.8 (начинал с phpBB 3.0.9)
Подпись заверена нотариусом :P
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16370
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1745 раз

Re: Расширения - это просто!

Сообщение rxu »

seodirection
И в разных будут, надо определить приоритет, как указал выше Shredder.
Изображение
Аватара пользователя
Webliberty
phpBB 2.0.5
Сообщения: 472
Стаж: 12 лет 4 месяца
Благодарил (а): 136 раз
Поблагодарили: 63 раза

Re: Расширения - это просто!

Сообщение Webliberty »

Да, говорю про два разных расширения, когда они по отдельности используют одно событие - не работает.

Shredder, т.е. если задать приоритеты то все должно получиться?

Добавлено спустя 44 секунды:
rxu, Shredder, спасибо, теперь понял. Задам приоритеты)
Мой форум на phpBB 3.3.8 (начинал с phpBB 3.0.9)
Подпись заверена нотариусом :P

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