- Совместимость с XenForo
- 2.1
Открываем терминал и выполняем следующую команду
Enter an ID for this add-on: MMO/ApproveRegistration
Enter a title: [MMO] Approve Registration
Enter a version ID. This integer will be used for internal version comparisons. Each release of your add-on should increase this number: 2010070
Version string set to: 2.1.0
Does this add-on supersede a XenForo 1 add-on? (y/n) n
Does your add-on need a Setup file? (y/n) y
Does your Setup need to support running multiple steps? (y/n) y
Далее идем в директорию с плагином src\addons\MMO\ApproveRegistration\Setup.php и вставляем следующий код.
Здесь мы создаем установку плагина и проверяем наличие
данной таблицы. Устанавливаем ключи и индексы.
Здесь мы создаем установку плагина и проверяем наличие данной таблицы. Устанавливаем ключи и индексы.
Далее создаем директорию XF, затем Entity и создаем класс User.php. Выглядеть будет это так:
src\addons\MMO\ApproveRegistration\XF\Entity\User.php со следующим содержимым:
Здесь мы проверяем на изменное состояние пользователя с moderated, т.к у пользователя могут быть и другие состояния и если бы мы не проверяли и у пользователя устанавливалось состояние valid. Мы просто получали бы запись в бд, а есть различные состояния где ему нужно подтвердить почту и т.д. Таким образом мы проверяем флаг, что именно изменился из состояния модерирования и то что он активирован.
Далее нам необходимо включить режим разработки (Режим разработки)
Далее переходим в панель управления, открываем вкладку Разработка и выбираем Расширение классов или просто переходим по адресу /admin.php?class-extensions/. Добавляем расширение класса.
Название базового класса:
Название класса расширения:
Порядок выполнения:
Включить расширение
Плагин: [MMO] Approve Registration
Создаем директорию в корне нашего плагина Entity, т.е путь у нас будет таким MMO\ApproveRegistration\Entity и в ней создаем класс ApproveRegistration со следующим содержимым:
Здесь мы описываем структуру нашей таблицы в которую необходимо писать данные, мы можем конечно получить и так через джойн сведения о пользователи, но здесь сделано для примера как записывать данные текущего пользователя из 1 сущности в другую.
Далее мы набираем следующую команду в нашем терминале
И потом выполняем следующую команду в терминале
Соответственно релиз плагина прилагается для ленивых и тех, кто не хочет разбираться вообще с этим и ему не интересно.
php cmd.php xf-addon:create
. Поэтапно выполняем следующие командыEnter an ID for this add-on: MMO/ApproveRegistration
Enter a title: [MMO] Approve Registration
Enter a version ID. This integer will be used for internal version comparisons. Each release of your add-on should increase this number: 2010070
Version string set to: 2.1.0
Does this add-on supersede a XenForo 1 add-on? (y/n) n
Does your add-on need a Setup file? (y/n) y
Does your Setup need to support running multiple steps? (y/n) y
Далее идем в директорию с плагином src\addons\MMO\ApproveRegistration\Setup.php и вставляем следующий код.
PHP:
<?php
namespace MMO\ApproveRegistration;
use XF\AddOn\AbstractSetup;
use XF\AddOn\StepRunnerInstallTrait;
use XF\AddOn\StepRunnerUninstallTrait;
use XF\AddOn\StepRunnerUpgradeTrait;
use XF\Db\Schema\Create;
class Setup extends AbstractSetup
{
use StepRunnerInstallTrait;
use StepRunnerUpgradeTrait;
use StepRunnerUninstallTrait;
public function installStep1()
{
$this->schemaManager()->createTable('xf_mar_approve_registration', function(Create $table) {
$table->checkExists(true);
$table->addColumn('id', 'int')->autoIncrement();
$table->addColumn('user_id', 'int')->unsigned();
$table->addColumn('username', 'varchar', 50);
$table->addColumn('email', 'varchar', 120);
$table->addColumn('is_active', 'tinyint', 3)->setDefault(0);
$table->addPrimaryKey('id');
$table->addKey('email');
});
}
public function uninstallStep1()
{
$this->schemaManager()->dropTable('xf_mar_approve_registration');
}
}
данной таблицы. Устанавливаем ключи и индексы.
Здесь мы создаем установку плагина и проверяем наличие данной таблицы. Устанавливаем ключи и индексы.
Далее создаем директорию XF, затем Entity и создаем класс User.php. Выглядеть будет это так:
src\addons\MMO\ApproveRegistration\XF\Entity\User.php со следующим содержимым:
PHP:
<?php
namespace MMO\ApproveRegistration\XF\Entity;
class User extends XFCP_User
{
protected function _postSave()
{
if ($this->isStateChanged('user_state', 'moderated') && $this->user_state == 'valid')
{
/** @var \MMO\ApproveRegistration\XF\Entity\ApproveRegistration $approveUser */
$approveUser = $this->_em->create('MMO\ApproveRegistration:ApproveRegistration');
$approveUser->user_id = $this->user_id;
$approveUser->username = $this->username;
$approveUser->email = $this->email;
$approveUser->is_active = true;
$approveUser->save();
}
return parent::_postSave();
}
}
Далее нам необходимо включить режим разработки (Режим разработки)
Далее переходим в панель управления, открываем вкладку Разработка и выбираем Расширение классов или просто переходим по адресу /admin.php?class-extensions/. Добавляем расширение класса.
Название базового класса:
XF\Entity\User
Название класса расширения:
MMO\ApproveRegistration\XF\Entity\User
Порядок выполнения:
10
Включить расширение
Плагин: [MMO] Approve Registration
Создаем директорию в корне нашего плагина Entity, т.е путь у нас будет таким MMO\ApproveRegistration\Entity и в ней создаем класс ApproveRegistration со следующим содержимым:
PHP:
<?php
namespace MMO\ApproveRegistration\Entity;
use XF\Mvc\Entity\Entity;
use XF\Mvc\Entity\Structure;
class ApproveRegistration extends Entity
{
public static function getStructure(Structure $structure)
{
$structure->table = 'xf_mar_approve_registration';
$structure->shortName = 'MMO\ApproveRegistration:ApproveRegistration';
$structure->primaryKey = 'id';
$structure->columns = [
'id' => ['type' => self::UINT, 'autoIncrement' => true],
'user_id' => ['type' => self::UINT, 'default' => 0],
'username' => ['type' => self::STR, 'maxLength' => 50],
'email' => ['type' => self::STR, 'maxLength' => 120],
'is_active' => ['type' => self::BOOL, 'default' => true]
];
$structure->relations = [
'User' => [
'entity' => 'XF:User',
'type' => self::TO_ONE,
'conditions' => 'user_id',
'primary' => true
]
];
return $structure;
}
Далее мы набираем следующую команду в нашем терминале
php cmd.php xf-dev:entity-class-properties MMO/ApproveRegistration
И потом выполняем следующую команду в терминале
php cmd.php xf-addon:install-step MMO/ApproveRegistration 1
.Соответственно релиз плагина прилагается для ленивых и тех, кто не хочет разбираться вообще с этим и ему не интересно.