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
|
<?php
class AddContentWidget extends Migration
{
public function description()
{
return "Adds ContentsWidget";
}
public function up()
{
$db = DBManager::get();
$classname = 'ContentsWidget';
// get highest position
$navpos = (int)$db->fetchColumn("SELECT navigationpos FROM plugins ORDER BY navigationpos DESC") + 1;
// insert plugin into db
$db->execute("INSERT INTO plugins
(pluginclassname, pluginpath, pluginname, plugintype, enabled, navigationpos)
VALUES (?, ?, ?, 'PortalPlugin', 'yes', ?)",
[$classname, 'core/' . $classname, $classname, $navpos]);
// get id of newly created plugin (we purposely do not use PDO::lastInserId())
$plugin_id = $db->fetchColumn("SELECT pluginid FROM plugins WHERE pluginclassname = ?", [$classname]);
// set all default roles for the plugin
$stmt = $db->prepare("INSERT INTO roles_plugins
(roleid, pluginid) VALUES (?, ?)");
foreach (range(1, 6) as $role_id) {
$stmt->execute([$role_id, $plugin_id]);
}
}
public function down()
{
$db = DBManager::get();
$classname = 'ContentsWidget';
// get id of widget
$widget_id = $db->fetchColumn("SELECT pluginid FROM plugins WHERE pluginclassname = ?", [$classname]);
$db->execute("DELETE FROM plugins WHERE pluginid = ?", [$widget_id]);
$db->execute("DELETE FROM widget_default WHERE pluginid = ?", [$widget_id]);
$db->execute("DELETE FROM widget_user WHERE pluginid = ?", [$widget_id]);
$db->execute("DELETE FROM roles_plugins WHERE pluginid = ?", [$widget_id]);
}
}
|