blob: 94617b2b1aab6144cbaba2089106893c7efb1b91 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
<?php
/**
*
* @property int $id alias column for pluginid
* @property int $pluginid database column
* @property string $pluginclassname database column
* @property string $pluginpath database column
* @property string $pluginname database column
* @property string $plugintype database column
* @property string $enabled database column
* @property int $navigationpos database column
* @property int|null $dependentonid database column
* @property string|null $automatic_update_url database column
* @property string|null $automatic_update_secret database column
* @property I18NString|null $description database column
* @property string|null $description_mode database column
* @property int|null $highlight_until database column
* @property I18NString|null $highlight_text database column
*/
class Plugin extends SimpleORMap
{
protected static function configure($config = [])
{
$config['db_table'] = 'plugins';
$config['additional_fields']['full_plugin_path'] = [
'get' => function (Plugin $plugin) {
return Config::get()->PLUGINS_PATH . '/' . $plugin->pluginpath;
}
];
$config['additional_fields']['manifest'] = [
'get' => function (Plugin $plugin) {
return PluginManager::getInstance()->getPluginManifest($plugin->full_plugin_path);
}
];
$config['additional_fields']['migration_info'] = [
'get' => function (Plugin $plugin) {
$plugindir = $plugin->full_plugin_path;
if (!is_dir($plugindir . '/migrations')) {
return null;
}
$schema_version = new DBSchemaVersion($plugin->pluginname);
$migrator = new Migrator($plugindir . '/migrations', $schema_version);
return [
'pending_migrations' => $migrator->pendingMigrations(),
'schema_version' => $schema_version->get(),
];
}
];
$config['i18n_fields'] = ['description', 'highlight_text'];
parent::configure($config);
}
}
|