aboutsummaryrefslogtreecommitdiff
path: root/db/migrations/5.3.7_add_my_courses_widget.php
blob: 5837e35b7ebd24d9d9173a0d628833e5d562a7c9 (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
<?php

class AddMyCoursesWidget extends Migration
{
    public function description()
    {
        return 'add MyCoursesWidget (if not previously installed)';
    }

    public function up()
    {
        $db = DBManager::get();

        // check for previous installation
        $plugin_id = $db->fetchColumn('SELECT pluginid FROM plugins WHERE pluginclassname = ?', ['MyCoursesWidget']);

        if ($plugin_id) {
            $db->execute("UPDATE plugins SET pluginpath = '' WHERE pluginid = ?", [$plugin_id]);
        } else {
            // get position
            $pos = $db->fetchColumn("SELECT MAX(navigationpos) + 1 FROM plugins WHERE plugintype = 'PortalPlugin'");

            // install as portal plugin
            $sql = "INSERT INTO plugins (pluginclassname, pluginname, plugintype, enabled, navigationpos) VALUES (?)";
            $db->execute($sql, [['MyCoursesWidget', 'MyCoursesWidget', 'PortalPlugin', 'yes', $pos]]);

            $sql = "INSERT INTO roles_plugins (roleid, pluginid)
                    SELECT roleid, ? FROM roles WHERE `system` = 'y' AND rolename != 'Nobody'";
            $db->execute($sql, [$db->lastInsertId()]);
        }
    }

    public function down()
    {
        $db = DBManager::get();

        $plugin_id = $db->fetchColumn('SELECT pluginid FROM plugins WHERE pluginclassname = ?', ['MyCoursesWidget']);

        $db->execute('DELETE FROM widget_default WHERE pluginid = ?', [$plugin_id]);
        $db->execute('DELETE FROM widget_user WHERE pluginid = ?', [$plugin_id]);
        $db->execute('DELETE FROM roles_plugins WHERE pluginid = ?', [$plugin_id]);
        $db->execute('DELETE FROM plugins WHERE pluginid = ?', [$plugin_id]);
    }
}