Добрый день!
Возникла такая задача. Есть архив формума на MyBB, в HTML формате. Как если бы скачали старый сайт с web-archive, но не совсем.
Есть желание превратить этот архив снова в работающий форум.
Порядок действий, как я вижу, простой:
1) Попарсить из html файлов темы и посты, сохранить в базу данных в какую-то промежуточную таблицу
2) Используя функцию submit_post заново создать все эти темы в phpBB
3) Настроить 301 переадресацию со старых урлов на новые
Пока устанавливается вагрант машина решил уточнить пару тонкостей.
Как создать расширение и сделать миграции для базы данных я понял.
Но сколько искал пока так и не нашел, как создать действие или скрипт, который будет вызываться из командной строки.
Посоветуйте, пожалуйста, где можно об этом почитать? Может есть готовые примеры расширений, работающие с командной строкой?
Отправлено спустя 12 минут 49 секунд:
Нашел официальный скелетон, в котором, как я понимаю, можно галочками выбрать что нужно, в том числе и создать команду для командной строки, и миграции и т.д.
https://www.phpbb.com/customise/db/offi ... _skeleton/
Буду пробовать.
[3.3] Создание расширения с командами для вызова из командной строки
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение

-
- phpBB Guru
- Сообщения: 16947
- Стаж: 18 лет 11 месяцев
- Откуда: Красноярск
- Благодарил (а): 549 раз
- Поблагодарили: 1700 раз
Re: [3.3] Создание расширения с командами для вызова из командной строки
RedNaxi, сколько зим 
Вопрос хороший, официальной документации по созданию кастомных команд для командной строки нет. Ориентироваться приходится на код ядра (
Пример добавления отдельной команды в ядро: https://github.com/phpbb/phpbb/pull/4843/files
По тому же принципу можно действовать и в расширении.

Вопрос хороший, официальной документации по созданию кастомных команд для командной строки нет. Ориентироваться приходится на код ядра (
/phpbb/console/command/
и определения сервисов /config/default/container/services_console.yml
).Пример добавления отдельной команды в ядро: https://github.com/phpbb/phpbb/pull/4843/files
По тому же принципу можно действовать и в расширении.
-
- Former team member
- Сообщения: 933
- Стаж: 18 лет 2 месяца
- Откуда: BeBoss.ru
- Благодарил (а): 2 раза
- Поблагодарили: 10 раз
Re: [3.3] Создание расширения с командами для вызова из командной строки
Лет 10 прошло с последнего моего поста на этом форуме, занимался всякой ерундой - писал под Yii2, Phalcon, мобильными приложениями побаловался, но душой я всегда был с phpBB :-)
Вот пытаюсь познать новую версию.
Документация конечно очень запутанная на оф. сайте английском.
Пока попробую через скелетон.
Вот тут есть немного про шаблон команды для phpbbcli:
https://area51.phpbb.com/docs/dev/3.2.x ... le-command
Вот пытаюсь познать новую версию.
Документация конечно очень запутанная на оф. сайте английском.
Пока попробую через скелетон.
Вот тут есть немного про шаблон команды для phpbbcli:
https://area51.phpbb.com/docs/dev/3.2.x ... le-command
-
- phpBB Guru
- Сообщения: 16947
- Стаж: 18 лет 11 месяцев
- Откуда: Красноярск
- Благодарил (а): 549 раз
- Поблагодарили: 1700 раз
Re: [3.3] Создание расширения с командами для вызова из командной строки
RedNaxi, пример расширения с консолью: https://github.com/phpBB-Studio/NoRe
-
- Former team member
- Сообщения: 933
- Стаж: 18 лет 2 месяца
- Откуда: BeBoss.ru
- Благодарил (а): 2 раза
- Поблагодарили: 10 раз
Re: [3.3] Создание расширения с командами для вызова из командной строки
Итак, как создать собственную команду в расширении для вызова из командной строки.
Условно считаем автором нашего расширения ext_author а название расширения ext_name
1. В файле
В список arguments передаем набор моделей и переменных, которые ваша команда должна принимать.
2. В папке
3. Добавляем языковой набор для нужных вам языков, если требуется. Для этого в папке
4. В принципе всё, теперь можно запускать команду
Условно считаем автором нашего расширения ext_author а название расширения ext_name
1. В файле
/ext/<ext_author>/<ext_name>/config/services.yml
добавляем конфиг для нашей команды по шаблону:
Код: Выделить всё
<ext_author>.<ext_name>.command.<command_name>:
class: <ext_author>\<ext_name>\console\command\<command_name>
arguments:
- '@user'
- '%core.root_path%'
tags:
- { name: console.command }
2. В папке
/ext/<ext_author>/<ext_name>
создаем папку console/command
(как прописано в пути в services.yml
) и в ней файл <command_name>.php
со следующим содержимым:Код: Выделить всё
<?php
namespace <ext_author>\<ext_name>\console\command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
/**
* Example console command.
*/
class <command_name> extends \phpbb\console\command\command
{
/** @var \phpbb\user */
protected $user;
/** @var string */
protected $root_path;
/**
* Параметры у конструктора должны совпадать со списком и порядком набора параметров в файле services.yml
* Обязательно надо вызвать parent::_constructor с параметром $user, остальные параметры сохраняем внутри класса
*
* @param \phpbb\user $user User instance (mostly for translation)
* @param string $phpbb_root_path
*/
public function __construct(\phpbb\user $user, $phpbb_root_path)
{
parent::__construct($user);
$this->root_path = $phpbb_root_path;
}
/**
* Настраиваем вызов команды. Можно прописать любое сочетание category:name
*/
protected function configure()
{
$this->user->add_lang_ext('<ext_author>/<ext_name>', 'cli');
$this
->setName('<ext_author>:<command_name>')
->setDescription($this->user->lang('CLI_DESCRIPTION'))
;
}
/**
* Собственно сама функция которая выполняет команду. Поддерживает ввод и вывод данных.
*
* @param InputInterface $input An InputInterface instance
* @param OutputInterface $output An OutputInterface instance
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
$output->writeln($this->user->lang('CLI_EXAMPLE_HELLO'));
}
}
3. Добавляем языковой набор для нужных вам языков, если требуется. Для этого в папке
/ext/<ext_author>/<ext_name>/language/<язык>
создаём файл cli.php
(в конфиге команды описывали, какой языковой набор использовать) со следующим содержимым:
Код: Выделить всё
<?php
if (!defined('IN_PHPBB'))
{
exit;
}
if (empty($lang) || !is_array($lang))
{
$lang = array();
}
$lang = array_merge($lang, array(
'CLI_DESCRIPTION' => 'Console command',
'CLI_EXAMPLE_HELLO' => 'Hello user',
));
4. В принципе всё, теперь можно запускать команду
Код: Выделить всё
php /bin/phpbbcli.php <ext_author>:<command_name>