litzinger/ basee
ExpressionEngine的插件基础
v1.4.8
2021-01-26 03:56 UTC
Requires
- php: >=5.3.9
README
composer require litzinger/basee
用法
在你的upd.mymodule.php文件中,向你的update方法添加以下内容。请确保设置你的更新文件路径和钩子模板路径。钩子模板将被用于通过addHooks()方法添加的所有钩子。
<?php
use Basee\Updater;
class MyModule {
/**
* Module Updater
*
* @param string $current
* @return bool true
*/
public function update($current = '')
{
$updater = new Updater();
$updater
->setFilePath(PATH_THIRD.'mymodule/updates')
->setHookTemplate([
'class' => MyModule,
'settings' => '',
'priority' => 5,
'version' => 1.0,
'enabled' => 'y',
])
->fetchUpdates($current)
->runUpdates();
return true;
}
}
在你的插件中创建一个更新文件夹,例如:mymodule/updates/up_2_00_00.php(在setFilePath中定义的路径)。
<?php
use Basee\Update\AbstractUpdate;
class Update_2_00_00 extends AbstractUpdate
{
public function doUpdate()
{
// Run some custom queries
ee()->db->update('modules', ['has_publish_fields' => 'y'], ['module_name' => 'Publisher']);
ee()->db->query("ALTER TABLE `". ee()->db->dbprefix ."publisher_titles` CHANGE COLUMN `publisher_lang_id` `lang_id` int(4) DEFAULT null");
ee()->db->query("ALTER TABLE `". ee()->db->dbprefix ."publisher_titles` CHANGE COLUMN `publisher_status` `status` varchar(24) DEFAULT null");
/** @var EntryTranslation $entryTranslation */
$entryTranslation = ee('Model')->make(EntryTranslation::NAME);
$entryTranslation->createTable();
// Add new hooks
$this->addHooks([
['hook'=>'before_channel_entry_save', 'method'=>'before_channel_entry_save'],
['hook'=>'after_channel_entry_save', 'method'=>'after_channel_entry_save'],
]);
// Remove existing hooks
$this->removeHooks('MyModule_ext', [
'entry_submission_ready',
'publish_form_channel_preferences',
]);
// Run another method in this file that might do something more complicated.
$this->updateSettings();
}