aboutsummaryrefslogtreecommitdiff
path: root/db/migrations/1.238_db_updates_for_42.php
blob: 45c86fc0746dda1bd44e3566cdf386c0de20542d (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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?php
class DbUpdatesFor42 extends Migration
{
    public function description()
    {
        return 'various small db schema fixes for Stud.IP 4.2';
    }

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

        $db->exec('ALTER TABLE sem_classes DROP compact_mode, DROP workgroup_mode, DROP turnus_default');

        $db->exec('ALTER TABLE personal_notifications_user CHANGE user_id user_id char(32) COLLATE latin1_bin NOT NULL');

        $db->exec("ALTER TABLE plugins_activated
                    ADD range_type enum('sem','inst','user') COLLATE latin1_bin NOT NULL default 'sem' AFTER pluginid,
                    ADD range_id char(32) COLLATE latin1_bin NOT NULL AFTER range_type,
                    CHANGE state state tinyint(1) NOT NULL DEFAULT 1");

        $db->exec("UPDATE plugins_activated SET range_type = 'sem',  range_id = SUBSTRING(poiid, 4) WHERE poiid LIKE 'sem%'");
        $db->exec("UPDATE plugins_activated SET range_type = 'inst', range_id = SUBSTRING(poiid, 5) WHERE poiid LIKE 'inst%'");
        $db->exec("UPDATE plugins_activated SET range_type = 'user', range_id = SUBSTRING(poiid, 5) WHERE poiid LIKE 'user%'");
        $db->exec('UPDATE plugins_activated SET state = 0 WHERE state = 2');

        // delete invalid entries
        $db->exec("DELETE FROM plugins_activated WHERE range_id = ''");

        $db->exec('ALTER TABLE plugins_activated
                    DROP PRIMARY KEY, DROP KEY poiid,
                    ADD PRIMARY KEY (pluginid, range_type, range_id),
                    DROP poiid');
        //alter default for studygroups, see #9002
        $db->exec("UPDATE `sem_classes` SET `course_creation_forbidden` = 0 WHERE `studygroup_mode` = 1");

        $db->exec("DELETE FROM `config` WHERE `field` IN (
                    'ALLOW_METADATE_SORTING',
                    'ALLOW_DOWNLOAD_FOR_UNKNOWN_LICENSE',
                    'ADMISSION_ALLOW_DISABLE_WAITLIST',
                    'ASSI_SEMESTER_PRESELECT',
                    'ENABLE_PROTECTED_DOWNLOAD_RESTRICTION'
                    )");
        $db->exec("DELETE FROM `config_values` WHERE `field` IN (
                    'ALLOW_METADATE_SORTING',
                    'ALLOW_DOWNLOAD_FOR_UNKNOWN_LICENSE',
                    'ADMISSION_ALLOW_DISABLE_WAITLIST',
                    'ASSI_SEMESTER_PRESELECT',
                    'ENABLE_PROTECTED_DOWNLOAD_RESTRICTION'
                    )");
        $db->exec("ALTER TABLE `session_data` CHANGE COLUMN `val` `val` mediumblob NOT NULL"); //see #9106

    }

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

        $db->exec('ALTER TABLE sem_classes
                    ADD compact_mode tinyint(4) NOT NULL AFTER name,
                    ADD workgroup_mode tinyint(4) NOT NULL AFTER compact_mode,
                    ADD turnus_default int(11) NOT NULL AFTER only_inst_user');

        $db->exec("ALTER TABLE plugins_activated ADD poiid varchar(36) COLLATE latin1_bin NOT NULL DEFAULT '' AFTER pluginid");

        $db->exec('UPDATE plugins_activated SET poiid = CONCAT(range_type, range_id)');
        $db->exec('UPDATE plugins_activated SET state = 2 WHERE state = 0');

        $db->exec("ALTER TABLE plugins_activated
                    CHANGE state state enum('on','off') COLLATE latin1_bin NOT NULL DEFAULT 'on',
                    DROP PRIMARY KEY,
                    ADD PRIMARY KEY (pluginid, poiid),
                    ADD UNIQUE KEY poiid (poiid, pluginid, state),
                    DROP range_type, DROP range_id");
    }
}