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

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Anvar
Former team member
Сообщения: 1965
Стаж: 14 лет 1 месяц
Благодарил (а): 57 раз
Поблагодарили: 625 раз

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

Сообщение Anvar »

Борис Бердичевский писал(а):А как можно предотвратить повторное создание страницы в Админке (если она, скажем, уже была создана в версиях 3.0)?
Т.е. в миграторе добавлен в функции update_data() ACP модуль, а вот как проверить его наличие?
Я проверяю по ранее установленной версии мода или расширения.

Примерно так:

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

			array('if', array(
				(!isset($this->config['module_version'])),
				array('module.add', array('acp', 'ACP_CAT_DOT_MODS', 'NEW_MODULE')),
				array('module.add', array('acp', 'NEW_MODULE', array(
					'module_basename'	=> 'new_module',
					'module_langname'	=> 'NEW_MODULE_SETTINGS',
					'module_mode'		=> 'config_module',
					'module_auth'		=> 'acl_a_board',
				))),
			)),
При желании вместо $this->config['module_version'], можно вызвать отдельную функцию, в которой осуществляется проверка на существование NEW_MODULE.
Аватара пользователя
Борис Бердичевский
phpBB 3.0.0 RC1
Сообщения: 1457
Стаж: 16 лет 4 месяца
Откуда: Израиль, Беэр-Шева
Благодарил (а): 33 раза
Поблагодарили: 61 раз

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

Сообщение Борис Бердичевский »

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

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

Сообщение rxu »

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

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

Сообщение Shredder »

Имеются ли какие-то правила при наименовании событий? Или события можно называть произвольно?
Аватара пользователя
Борис Бердичевский
phpBB 3.0.0 RC1
Сообщения: 1457
Стаж: 16 лет 4 месяца
Откуда: Израиль, Беэр-Шева
Благодарил (а): 33 раза
Поблагодарили: 61 раз

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

Сообщение Борис Бердичевский »

Удалено.
Последний раз редактировалось Борис Бердичевский 27.11.2014 20:18, всего редактировалось 1 раз.
После нескольких лет общения здесь и техсопровождения форумов я наконец понял, что ничего не понимаю в phpBB!
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16378
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1746 раз

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

Сообщение rxu »

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

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

Сообщение Shredder »

rxu
Именно так я и думал. Но заметил, что имя скрипта присутствует не всегда. Иногда вместо этого используется имя функции, в которой расположено расширение. И вроде бы встречалось что-то ещё, не запомнил, что именно.

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

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

Сообщение rxu »

Shredder писал(а):Иногда вместо этого используется имя функции, в которой расположено расширение.
Тоже вариант, иначе могут возникнуть повторы.
Изображение
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 2 месяца
Откуда: Калининград не Кенигсберг
Благодарил (а): 41 раз
Поблагодарили: 1716 раз

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

Сообщение Sheer »

Борис Бердичевский писал(а):а вот как проверить его наличие?
В миграторе создать кастомную функцию, которая поверит в таблице БД наличие этого модуля.
Борис Бердичевский писал(а):надо вносить константы логов в файл constants.php
Ответ неверный.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
Борис Бердичевский
phpBB 3.0.0 RC1
Сообщения: 1457
Стаж: 16 лет 4 месяца
Откуда: Израиль, Беэр-Шева
Благодарил (а): 33 раза
Поблагодарили: 61 раз

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

Сообщение Борис Бердичевский »

Sheer писал(а):В миграторе создать кастомную функцию, которая поверит в таблице БД наличие этого модуля.
В какой таблице БД обычно обитают модули ACP?
После нескольких лет общения здесь и техсопровождения форумов я наконец понял, что ничего не понимаю в phpBB!
Anvar
Former team member
Сообщения: 1965
Стаж: 14 лет 1 месяц
Благодарил (а): 57 раз
Поблагодарили: 625 раз

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

Сообщение Anvar »

Борис Бердичевский, Все модули в одной таблице.

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

define('MODULES_TABLE',				$table_prefix . 'modules');
Аватара пользователя
Борис Бердичевский
phpBB 3.0.0 RC1
Сообщения: 1457
Стаж: 16 лет 4 месяца
Откуда: Израиль, Беэр-Шева
Благодарил (а): 33 раза
Поблагодарили: 61 раз

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

Сообщение Борис Бердичевский »

Вроде нашёл:
SELECT * FROM phpbb_modules WHERE module_langname='ACP_REGISTER_LOGS';

Добавлено спустя 1 минуту 52 секунды:
Ну, конечно, следует использовать 'MODULES_TABLE'.

SELECT * FROM 'MODULES_TABLE' WHERE module_langname='ACP_REGISTER_LOGS';
После нескольких лет общения здесь и техсопровождения форумов я наконец понял, что ничего не понимаю в phpBB!
Аватара пользователя
Борис Бердичевский
phpBB 3.0.0 RC1
Сообщения: 1457
Стаж: 16 лет 4 месяца
Откуда: Израиль, Беэр-Шева
Благодарил (а): 33 раза
Поблагодарили: 61 раз

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

Сообщение Борис Бердичевский »

Опа-на!
Вставил эту проверочку, так оно теперь НЕ удаляет модуль, т.к. эта же функция update_data() выполняется и при удалении данных расширения!
После нескольких лет общения здесь и техсопровождения форумов я наконец понял, что ничего не понимаю в phpBB!
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16378
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1746 раз

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

Сообщение rxu »

Борис Бердичевский писал(а):т.к. эта же функция update_data() выполняется и при удалении данных расширения!
Задайте нужные действия в функции revert_data().
Изображение
Shredder
Former team member
Сообщения: 2224
Стаж: 15 лет 4 месяца
Благодарил (а): 124 раза
Поблагодарили: 138 раз

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

Сообщение Shredder »

Где, кроме session_create() и check_ban() можно проверить данные пользователя только в момент его входа на форум и в администраторский раздел? Есть для этого в движке готовые события?

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