Subversion Repositories oidplus

Rev

Rev 830 | Rev 1130 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
441 daniel-mar 1
<?php
2
 
3
/*
4
 * OIDplus 2.0
511 daniel-mar 5
 * Copyright 2019 - 2021 Daniel Marschall, ViaThinkSoft
441 daniel-mar 6
 *
7
 * Licensed under the Apache License, Version 2.0 (the "License");
8
 * you may not use this file except in compliance with the License.
9
 * You may obtain a copy of the License at
10
 *
11
 *     http://www.apache.org/licenses/LICENSE-2.0
12
 *
13
 * Unless required by applicable law or agreed to in writing, software
14
 * distributed under the License is distributed on an "AS IS" BASIS,
15
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
 * See the License for the specific language governing permissions and
17
 * limitations under the License.
18
 */
19
 
1050 daniel-mar 20
use ViaThinkSoft\OIDplus\OIDplusDatabaseConnection;
21
 
441 daniel-mar 22
/**
23
 * This function will be called by OIDplusDatabaseConnection.class.php at method afterConnect().
24
 * @param OIDplusDatabaseConnection $db is the OIDplusDatabaseConnection class
830 daniel-mar 25
 * @return int new version set
1050 daniel-mar 26
 * @throws \ViaThinkSoft\OIDplus\OIDplusException
441 daniel-mar 27
 */
830 daniel-mar 28
function oidplus_dbupdate_204(OIDplusDatabaseConnection $db) {
29
        if ($db->transaction_supported()) $db->transaction_begin();
441 daniel-mar 30
 
830 daniel-mar 31
        if ($db->getSlang()->id() == 'mssql') {
32
                $db->query("alter table ###ra alter column [ra_name] [varchar](100) NULL;");
33
                $db->query("alter table ###ra alter column [personal_name] [varchar](100) NULL;");
34
                $db->query("alter table ###ra alter column [organization] [varchar](100) NULL;");
35
                $db->query("alter table ###ra alter column [office] [varchar](100) NULL;");
36
                $db->query("alter table ###ra alter column [street] [varchar](100) NULL;");
37
                $db->query("alter table ###ra alter column [zip_town] [varchar](100) NULL;");
38
                $db->query("alter table ###ra alter column [country] [varchar](100) NULL;");
39
                $db->query("alter table ###ra alter column [phone] [varchar](100) NULL;");
40
                $db->query("alter table ###ra alter column [mobile] [varchar](100) NULL;");
41
                $db->query("alter table ###ra alter column [fax] [varchar](100) NULL;");
42
                $db->query("alter table ###ra alter column [salt] [varchar](100) NULL;");
43
                $db->query("alter table ###ra alter column [authkey] [varchar](100) NULL;");
441 daniel-mar 44
 
830 daniel-mar 45
                $db->query("alter table ###objects alter column [title] [varchar](255) NULL;");
46
                $db->query("alter table ###objects alter column [description] [text] NULL;");
47
        }
48
        else if ($db->getSlang()->id() == 'mysql') {
49
                $db->query("alter table ###ra modify ra_name varchar(100) NULL;");
50
                $db->query("alter table ###ra modify personal_name varchar(100) NULL;");
51
                $db->query("alter table ###ra modify organization varchar(100) NULL;");
52
                $db->query("alter table ###ra modify office varchar(100) NULL;");
53
                $db->query("alter table ###ra modify street varchar(100) NULL;");
54
                $db->query("alter table ###ra modify zip_town varchar(100) NULL;");
55
                $db->query("alter table ###ra modify country varchar(100) NULL;");
56
                $db->query("alter table ###ra modify phone varchar(100) NULL;");
57
                $db->query("alter table ###ra modify mobile varchar(100) NULL;");
58
                $db->query("alter table ###ra modify fax varchar(100) NULL;");
59
                $db->query("alter table ###ra modify salt varchar(100) NULL;");
60
                $db->query("alter table ###ra modify authkey varchar(100) NULL;");
441 daniel-mar 61
 
830 daniel-mar 62
                $db->query("alter table ###objects modify title varchar(255) NULL;");
63
                $db->query("alter table ###objects modify description text NULL;");
64
        }
65
        else if ($db->getSlang()->id() == 'pgsql') {
66
                $db->query("alter table ###ra alter column ra_name DROP NOT NULL");
67
                $db->query("alter table ###ra alter column personal_name DROP NOT NULL");
68
                $db->query("alter table ###ra alter column organization DROP NOT NULL");
69
                $db->query("alter table ###ra alter column office DROP NOT NULL");
70
                $db->query("alter table ###ra alter column street DROP NOT NULL");
71
                $db->query("alter table ###ra alter column zip_town DROP NOT NULL");
72
                $db->query("alter table ###ra alter column country DROP NOT NULL");
73
                $db->query("alter table ###ra alter column phone DROP NOT NULL");
74
                $db->query("alter table ###ra alter column mobile DROP NOT NULL");
75
                $db->query("alter table ###ra alter column fax DROP NOT NULL");
76
                $db->query("alter table ###ra alter column salt DROP NOT NULL");
77
                $db->query("alter table ###ra alter column authkey DROP NOT NULL");
441 daniel-mar 78
 
830 daniel-mar 79
                $db->query("alter table ###objects alter column title DROP NOT NULL");
80
                $db->query("alter table ###objects alter column description DROP NOT NULL");
81
        }
82
        else if ($db->getSlang()->id() == 'sqlite') {
83
                $db->query("CREATE TABLE `###ra2` (".
84
                           "  `ra_id` INTEGER PRIMARY KEY AUTOINCREMENT,".
85
                           "  `email` TEXT NOT NULL UNIQUE,".
86
                           "  `ra_name` TEXT NULL,".
87
                           "  `personal_name` TEXT NULL,".
88
                           "  `organization` TEXT NULL,".
89
                           "  `office` TEXT NULL,".
90
                           "  `street` TEXT NULL,".
91
                           "  `zip_town` TEXT NULL,".
92
                           "  `country` TEXT NULL,".
93
                           "  `phone` TEXT NULL,".
94
                           "  `mobile` TEXT NULL,".
95
                           "  `fax` TEXT NULL,".
96
                           "  `privacy` INTEGER NOT NULL DEFAULT 0,".
97
                           "  `salt` TEXT NULL,".
98
                           "  `authkey` TEXT NULL,".
99
                           "  `registered` TEXT,".
100
                           "  `updated` TEXT,".
101
                           "  `last_login` datetime".
102
                           ");");
103
                $db->query("INSERT INTO ###ra2 SELECT * FROM ###ra;");
104
                $db->query("DROP TABLE ###ra;");
105
                $db->query("ALTER TABLE ###ra2 RENAME TO ###ra;");
441 daniel-mar 106
 
830 daniel-mar 107
                $db->query("CREATE TABLE `###objects2` (".
108
                           "  `id` TEXT NOT NULL,".
109
                           "  `parent` TEXT DEFAULT NULL REFERENCES `objects`(`id`),".
110
                           "  `title` TEXT NULL,".
111
                           "  `description` TEXT NULL,".
112
                           "  `ra_email` TEXT NULL REFERENCES `###ra`(`email`),".
113
                           "  `confidential` boolean NOT NULL,".
114
                           "  `created` TEXT,".
115
                           "  `updated` TEXT,".
116
                           "  `comment` TEXT NULL,".
117
                           "  PRIMARY KEY (`id`)".
118
                           ");");
119
                $db->query("INSERT INTO ###objects2 SELECT * FROM ###objects;");
120
                $db->query("DROP TABLE ###objects;");
121
                $db->query("ALTER TABLE ###objects2 RENAME TO ###objects;");
122
        }
441 daniel-mar 123
 
830 daniel-mar 124
        $version = 205;
125
        $db->query("UPDATE ###config SET value = ? WHERE name = 'database_version'", array($version));
441 daniel-mar 126
 
830 daniel-mar 127
        if ($db->transaction_supported()) $db->transaction_commit();
128
 
129
        return $version;
441 daniel-mar 130
}