Mercurial > hg > fapweb
annotate managedb.php @ 1104:0a2117349f46
s/true/TRUE/g; s/false/FALSE/g;
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Tue, 14 May 2019 14:45:36 +0300 |
parents | 48e16e856646 |
children | 24e6915fc0fb |
rev | line source |
---|---|
8
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1 #!/usr/bin/php |
1074 | 2 <?php |
804 | 3 // |
4 // FAPWeb Database management utility | |
1072 | 5 // (C) Copyright 2012-2017 Tecnic Software productions (TNSP) |
804 | 6 // |
1024
2a96426159f1
Fix configuration file checking.
Matti Hamalainen <ccr@tnsp.org>
parents:
1019
diff
changeset
|
7 if (!file_exists(realpath(dirname(__FILE__))."/mconfig.inc.php")) |
1019
22b6442d5cb3
Add error messages for missing mconfig.inc.php.
Matti Hamalainen <ccr@tnsp.org>
parents:
1001
diff
changeset
|
8 { |
22b6442d5cb3
Add error messages for missing mconfig.inc.php.
Matti Hamalainen <ccr@tnsp.org>
parents:
1001
diff
changeset
|
9 die( |
22b6442d5cb3
Add error messages for missing mconfig.inc.php.
Matti Hamalainen <ccr@tnsp.org>
parents:
1001
diff
changeset
|
10 "ERROR: Missing site configuration file. Please copy ". |
22b6442d5cb3
Add error messages for missing mconfig.inc.php.
Matti Hamalainen <ccr@tnsp.org>
parents:
1001
diff
changeset
|
11 "'mconfig.inc.php.example' to 'mconfig.inc.php' and ". |
22b6442d5cb3
Add error messages for missing mconfig.inc.php.
Matti Hamalainen <ccr@tnsp.org>
parents:
1001
diff
changeset
|
12 "edit it as needed.\n"); |
22b6442d5cb3
Add error messages for missing mconfig.inc.php.
Matti Hamalainen <ccr@tnsp.org>
parents:
1001
diff
changeset
|
13 } |
22b6442d5cb3
Add error messages for missing mconfig.inc.php.
Matti Hamalainen <ccr@tnsp.org>
parents:
1001
diff
changeset
|
14 |
175
8df523e6326a
User require_once instead of require.
Matti Hamalainen <ccr@tnsp.org>
parents:
170
diff
changeset
|
15 require_once "mconfig.inc.php"; |
8df523e6326a
User require_once instead of require.
Matti Hamalainen <ccr@tnsp.org>
parents:
170
diff
changeset
|
16 require_once "msite.inc.php"; |
555
206196b610fd
Move site specific things to dbdefs.inc.php
Matti Hamalainen <ccr@tnsp.org>
parents:
553
diff
changeset
|
17 require_once "dbdefs.inc.php"; |
8
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
18 |
479
86ee2b42a995
Move CLI helper functions to msitegen, again.
Matti Hamalainen <ccr@tnsp.org>
parents:
426
diff
changeset
|
19 stCheckCLIExec(); |
50
184a4188555c
Move CLI helper functions to createdb.php, as they are now only used there.
Matti Hamalainen <ccr@tnsp.org>
parents:
47
diff
changeset
|
20 |
555
206196b610fd
Move site specific things to dbdefs.inc.php
Matti Hamalainen <ccr@tnsp.org>
parents:
553
diff
changeset
|
21 |
542
8c1a53532be0
Rename various database tables and column names for better SQL compatibility.
Matti Hamalainen <ccr@tnsp.org>
parents:
541
diff
changeset
|
22 $currVersion = -1; |
555
206196b610fd
Move site specific things to dbdefs.inc.php
Matti Hamalainen <ccr@tnsp.org>
parents:
553
diff
changeset
|
23 $dbMetaData = array( |
199
dbc6f214b825
Work on a database upgrade function.
Matti Hamalainen <ccr@tnsp.org>
parents:
185
diff
changeset
|
24 "dbVersion" => array(VT_INT, $dbVersion, "Database version"), |
dbc6f214b825
Work on a database upgrade function.
Matti Hamalainen <ccr@tnsp.org>
parents:
185
diff
changeset
|
25 ); |
dbc6f214b825
Work on a database upgrade function.
Matti Hamalainen <ccr@tnsp.org>
parents:
185
diff
changeset
|
26 |
620
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
27 // Add database meta table into tables to be created |
555
206196b610fd
Move site specific things to dbdefs.inc.php
Matti Hamalainen <ccr@tnsp.org>
parents:
553
diff
changeset
|
28 $sqlTables["dbmeta"] = array( |
206196b610fd
Move site specific things to dbdefs.inc.php
Matti Hamalainen <ccr@tnsp.org>
parents:
553
diff
changeset
|
29 array("key" , "VARCHAR(32)", "PRIMARY KEY"), |
206196b610fd
Move site specific things to dbdefs.inc.php
Matti Hamalainen <ccr@tnsp.org>
parents:
553
diff
changeset
|
30 array("vtype" , "INT"), |
206196b610fd
Move site specific things to dbdefs.inc.php
Matti Hamalainen <ccr@tnsp.org>
parents:
553
diff
changeset
|
31 array("vstr" , "VARCHAR(128)"), |
206196b610fd
Move site specific things to dbdefs.inc.php
Matti Hamalainen <ccr@tnsp.org>
parents:
553
diff
changeset
|
32 array("vtext" , "TEXT"), |
206196b610fd
Move site specific things to dbdefs.inc.php
Matti Hamalainen <ccr@tnsp.org>
parents:
553
diff
changeset
|
33 array("vint" , "INT"), |
206196b610fd
Move site specific things to dbdefs.inc.php
Matti Hamalainen <ccr@tnsp.org>
parents:
553
diff
changeset
|
34 array("sdesc" , "VARCHAR(128)"), |
8
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
35 ); |
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
36 |
515 | 37 |
88
784953d60ba5
More work on test data generation.
Matti Hamalainen <ccr@tnsp.org>
parents:
85
diff
changeset
|
38 |
8
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
39 // |
36 | 40 // Helper functions |
8
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
41 // |
502
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
42 function stCreateTables($dbh, $upgrade) |
8
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
43 { |
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
44 global $sqlTables; |
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
45 echo "Creating tables...\n"; |
503
3232f682f0d2
Change how table schemas are defined, in preparation for future database
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
46 foreach ($sqlTables as $name => $schemaData) |
8
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
47 { |
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
48 echo " - '".$name."'\n"; |
540
ab08640b4302
Improve database upgrade code.
Matti Hamalainen <ccr@tnsp.org>
parents:
533
diff
changeset
|
49 stDBExecSQL($dbh, "DROP TABLE IF EXISTS ".$name); |
620
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
50 if (!stDBCreateOneTable($dbh, $name, stDBGetTableSchema($dbh, $schemaData))) |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
51 { |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
52 if (!$upgrade) |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
53 return FALSE; |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
54 else |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
55 echo "\nFailed to create table '".$name."'\n"; |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
56 } |
8
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
57 } |
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
58 return TRUE; |
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
59 } |
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
60 |
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
61 |
540
ab08640b4302
Improve database upgrade code.
Matti Hamalainen <ccr@tnsp.org>
parents:
533
diff
changeset
|
62 function stUpgradeMap($type, $name) |
502
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
63 { |
540
ab08640b4302
Improve database upgrade code.
Matti Hamalainen <ccr@tnsp.org>
parents:
533
diff
changeset
|
64 global $upgradeMappings, $currVersion, $dbVersion; |
502
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
65 |
540
ab08640b4302
Improve database upgrade code.
Matti Hamalainen <ccr@tnsp.org>
parents:
533
diff
changeset
|
66 $converted = FALSE; |
ab08640b4302
Improve database upgrade code.
Matti Hamalainen <ccr@tnsp.org>
parents:
533
diff
changeset
|
67 $tmpName = $name; |
ab08640b4302
Improve database upgrade code.
Matti Hamalainen <ccr@tnsp.org>
parents:
533
diff
changeset
|
68 |
ab08640b4302
Improve database upgrade code.
Matti Hamalainen <ccr@tnsp.org>
parents:
533
diff
changeset
|
69 for ($ver = $currVersion; $ver <= $dbVersion; $ver++) |
502
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
70 { |
540
ab08640b4302
Improve database upgrade code.
Matti Hamalainen <ccr@tnsp.org>
parents:
533
diff
changeset
|
71 if (isset($upgradeMappings[$ver]) && |
590
94b9bf155fdb
Revert a completely broken change. :S
Matti Hamalainen <ccr@tnsp.org>
parents:
586
diff
changeset
|
72 isset($upgradeMappings[$ver][$tmpName]) && |
94b9bf155fdb
Revert a completely broken change. :S
Matti Hamalainen <ccr@tnsp.org>
parents:
586
diff
changeset
|
73 isset($upgradeMappings[$ver][$tmpName][$type])) |
502
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
74 { |
590
94b9bf155fdb
Revert a completely broken change. :S
Matti Hamalainen <ccr@tnsp.org>
parents:
586
diff
changeset
|
75 $tmpName = $upgradeMappings[$ver][$tmpName][$type]; |
540
ab08640b4302
Improve database upgrade code.
Matti Hamalainen <ccr@tnsp.org>
parents:
533
diff
changeset
|
76 $converted = TRUE; |
502
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
77 } |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
78 } |
540
ab08640b4302
Improve database upgrade code.
Matti Hamalainen <ccr@tnsp.org>
parents:
533
diff
changeset
|
79 |
ab08640b4302
Improve database upgrade code.
Matti Hamalainen <ccr@tnsp.org>
parents:
533
diff
changeset
|
80 if ($converted) |
ab08640b4302
Improve database upgrade code.
Matti Hamalainen <ccr@tnsp.org>
parents:
533
diff
changeset
|
81 return $tmpName; |
502
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
82 else |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
83 switch ($type) |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
84 { |
540
ab08640b4302
Improve database upgrade code.
Matti Hamalainen <ccr@tnsp.org>
parents:
533
diff
changeset
|
85 case "table": return $name; |
502
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
86 case "key": return $name; |
540
ab08640b4302
Improve database upgrade code.
Matti Hamalainen <ccr@tnsp.org>
parents:
533
diff
changeset
|
87 default: die("Invalid upgrade type '".$type."'.\n"); |
502
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
88 } |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
89 } |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
90 |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
91 |
620
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
92 function stDoAddSettings($inDB, $outDB, $settings, $table, $upgrade, $group = FALSE) |
8
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
93 { |
519 | 94 $status = TRUE; |
95 | |
139
75cf14ee99a7
More work on party information system.
Matti Hamalainen <ccr@tnsp.org>
parents:
123
diff
changeset
|
96 foreach ($settings as $key => $data) |
8
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
97 { |
1104
0a2117349f46
s/true/TRUE/g; s/false/FALSE/g;
Matti Hamalainen <ccr@tnsp.org>
parents:
1074
diff
changeset
|
98 $sql = FALSE; |
551
bed441ced78e
Improve migration and upgrade procedures.
Matti Hamalainen <ccr@tnsp.org>
parents:
549
diff
changeset
|
99 |
515 | 100 // Get setting type |
80 | 101 switch ($data[0]) |
8
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
102 { |
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
103 case VT_TEXT: $type = "%s"; $var = "vtext"; break; |
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
104 case VT_STR: $type = "%s"; $var = "vstr"; break; |
72
63a6caf59e5c
Fix creation of boolean settings, and add '%b' formatter into stPrepareSQL().
Matti Hamalainen <ccr@tnsp.org>
parents:
67
diff
changeset
|
105 case VT_BOOL: $type = "%b"; $var = "vint"; break; |
8
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
106 case VT_INT: $type = "%d"; $var = "vint"; break; |
80 | 107 default: die("Invalid type in default settings '".$key."', type=".$data[0]."\n"); |
8
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
108 } |
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
109 |
620
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
110 $sqlFmt = |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
111 "INSERT INTO ".$table." (key,vtype,".$var.",sdesc". |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
112 ($group !== FALSE ? ",vgroup" : "").") VALUES (%s,%d,".$type.",%s". |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
113 ($group !== FALSE ? ",%d" : "").")"; |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
114 |
515 | 115 // Check if we are upgrading |
551
bed441ced78e
Improve migration and upgrade procedures.
Matti Hamalainen <ccr@tnsp.org>
parents:
549
diff
changeset
|
116 if ($upgrade) |
199
dbc6f214b825
Work on a database upgrade function.
Matti Hamalainen <ccr@tnsp.org>
parents:
185
diff
changeset
|
117 { |
551
bed441ced78e
Improve migration and upgrade procedures.
Matti Hamalainen <ccr@tnsp.org>
parents:
549
diff
changeset
|
118 // Map the key, in case the name has changed |
bed441ced78e
Improve migration and upgrade procedures.
Matti Hamalainen <ccr@tnsp.org>
parents:
549
diff
changeset
|
119 $inKey = stUpgradeMap("key", $key); |
bed441ced78e
Improve migration and upgrade procedures.
Matti Hamalainen <ccr@tnsp.org>
parents:
549
diff
changeset
|
120 $inTable = stUpgradeMap("table", $table); |
199
dbc6f214b825
Work on a database upgrade function.
Matti Hamalainen <ccr@tnsp.org>
parents:
185
diff
changeset
|
121 |
551
bed441ced78e
Improve migration and upgrade procedures.
Matti Hamalainen <ccr@tnsp.org>
parents:
549
diff
changeset
|
122 if (($res = stDBFetchSQL($inDB, stDBPrepareSQL($inDB, "SELECT * FROM ".$inTable." WHERE key=%s", $inKey))) !== FALSE) |
bed441ced78e
Improve migration and upgrade procedures.
Matti Hamalainen <ccr@tnsp.org>
parents:
549
diff
changeset
|
123 { |
bed441ced78e
Improve migration and upgrade procedures.
Matti Hamalainen <ccr@tnsp.org>
parents:
549
diff
changeset
|
124 // Yup, upgrade the data, if we can |
bed441ced78e
Improve migration and upgrade procedures.
Matti Hamalainen <ccr@tnsp.org>
parents:
549
diff
changeset
|
125 if ($res["vtype"] != $data[0]) |
bed441ced78e
Improve migration and upgrade procedures.
Matti Hamalainen <ccr@tnsp.org>
parents:
549
diff
changeset
|
126 die("Oops! Data type of '".$key."' does not match in table '".$table.". DB upgrade failed.\n"); |
bed441ced78e
Improve migration and upgrade procedures.
Matti Hamalainen <ccr@tnsp.org>
parents:
549
diff
changeset
|
127 |
620
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
128 $sql = stDBPrepareSQL($outDB, $sqlFmt, |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
129 $key, $data[0], $res[$var], $data[2], $group); |
551
bed441ced78e
Improve migration and upgrade procedures.
Matti Hamalainen <ccr@tnsp.org>
parents:
549
diff
changeset
|
130 } |
199
dbc6f214b825
Work on a database upgrade function.
Matti Hamalainen <ccr@tnsp.org>
parents:
185
diff
changeset
|
131 } |
551
bed441ced78e
Improve migration and upgrade procedures.
Matti Hamalainen <ccr@tnsp.org>
parents:
549
diff
changeset
|
132 |
1104
0a2117349f46
s/true/TRUE/g; s/false/FALSE/g;
Matti Hamalainen <ccr@tnsp.org>
parents:
1074
diff
changeset
|
133 if ($sql === FALSE) |
199
dbc6f214b825
Work on a database upgrade function.
Matti Hamalainen <ccr@tnsp.org>
parents:
185
diff
changeset
|
134 { |
515 | 135 // Normal insertion of default data |
620
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
136 $sql = stDBPrepareSQL($outDB, $sqlFmt, |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
137 $key, $data[0], $data[1], $data[2], $group); |
199
dbc6f214b825
Work on a database upgrade function.
Matti Hamalainen <ccr@tnsp.org>
parents:
185
diff
changeset
|
138 } |
dbc6f214b825
Work on a database upgrade function.
Matti Hamalainen <ccr@tnsp.org>
parents:
185
diff
changeset
|
139 |
502
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
140 if (stDBExecSQL($outDB, $sql) === FALSE) |
519 | 141 { |
142 $status = FALSE; | |
143 break; | |
144 } | |
199
dbc6f214b825
Work on a database upgrade function.
Matti Hamalainen <ccr@tnsp.org>
parents:
185
diff
changeset
|
145 } |
519 | 146 |
147 return $status; | |
148 } | |
199
dbc6f214b825
Work on a database upgrade function.
Matti Hamalainen <ccr@tnsp.org>
parents:
185
diff
changeset
|
149 |
dbc6f214b825
Work on a database upgrade function.
Matti Hamalainen <ccr@tnsp.org>
parents:
185
diff
changeset
|
150 |
620
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
151 function stAddSettingsGroup($inDB, $outDB, $groups, $groupData, $groupTable, $table, $upgrade) |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
152 { |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
153 echo ($upgrade ? "Adding settings to" : "Upgrading settings in")." '".$table."' table.\n"; |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
154 foreach ($groups as $groupID => $settings) |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
155 { |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
156 if (!isset($groupData[$groupID])) |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
157 { |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
158 echo "Group data not set for settings group ID '".$groupID."'.\n"; |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
159 return FALSE; |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
160 } |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
161 |
629
894a4a6bfb5f
Better fix for the DB migration issue.
Matti Hamalainen <ccr@tnsp.org>
parents:
628
diff
changeset
|
162 // Add group, if needed |
894a4a6bfb5f
Better fix for the DB migration issue.
Matti Hamalainen <ccr@tnsp.org>
parents:
628
diff
changeset
|
163 echo " - Group '".$groupID."' -> ".$groupData[$groupID][1]."."; |
894a4a6bfb5f
Better fix for the DB migration issue.
Matti Hamalainen <ccr@tnsp.org>
parents:
628
diff
changeset
|
164 $sql = stDBPrepareSQL($outDB, |
894a4a6bfb5f
Better fix for the DB migration issue.
Matti Hamalainen <ccr@tnsp.org>
parents:
628
diff
changeset
|
165 "INSERT INTO ".$groupTable." (name,description) VALUES (%s,%s)", |
894a4a6bfb5f
Better fix for the DB migration issue.
Matti Hamalainen <ccr@tnsp.org>
parents:
628
diff
changeset
|
166 $groupData[$groupID][0], $groupData[$groupID][1]); |
894a4a6bfb5f
Better fix for the DB migration issue.
Matti Hamalainen <ccr@tnsp.org>
parents:
628
diff
changeset
|
167 |
1104
0a2117349f46
s/true/TRUE/g; s/false/FALSE/g;
Matti Hamalainen <ccr@tnsp.org>
parents:
1074
diff
changeset
|
168 if (($gid = stDBExecSQLInsert($outDB, $sql)) === FALSE) |
628
914d57c80059
Fix database migrations now that we create settings groups.
Matti Hamalainen <ccr@tnsp.org>
parents:
620
diff
changeset
|
169 { |
629
894a4a6bfb5f
Better fix for the DB migration issue.
Matti Hamalainen <ccr@tnsp.org>
parents:
628
diff
changeset
|
170 echo "\nFailed to add group '".$groupID."'\n"; |
894a4a6bfb5f
Better fix for the DB migration issue.
Matti Hamalainen <ccr@tnsp.org>
parents:
628
diff
changeset
|
171 return FALSE; |
620
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
172 } |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
173 |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
174 // Add settings to the group |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
175 stDBBeginTransaction($outDB); |
1104
0a2117349f46
s/true/TRUE/g; s/false/FALSE/g;
Matti Hamalainen <ccr@tnsp.org>
parents:
1074
diff
changeset
|
176 if (stDoAddSettings($inDB, $outDB, $settings, $table, $upgrade, $gid) === FALSE) |
620
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
177 { |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
178 echo "\nFailed to add settings to group '".$groupID."'\n"; |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
179 return FALSE; |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
180 } |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
181 stDBCommitTransaction($outDB); |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
182 echo "\n"; |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
183 } |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
184 |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
185 return TRUE; |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
186 } |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
187 |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
188 |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
189 function stAddSettingsNormal($inDB, $outDB, $settings, $table, $upgrade) |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
190 { |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
191 stDBBeginTransaction($outDB); |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
192 echo ($upgrade ? "Adding settings to" : "Upgrading settings in")." '".$table."' table."; |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
193 $status = stDoAddSettings($inDB, $outDB, $settings, $table, $upgrade); |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
194 echo "\n"; |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
195 if ($status !== FALSE) |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
196 stDBCommitTransaction($outDB); |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
197 return $status; |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
198 } |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
199 |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
200 |
519 | 201 function stAddTestData($outDB) |
85
50d6c69836a1
Add test data mode for database creation.
Matti Hamalainen <ccr@tnsp.org>
parents:
81
diff
changeset
|
202 { |
50d6c69836a1
Add test data mode for database creation.
Matti Hamalainen <ccr@tnsp.org>
parents:
81
diff
changeset
|
203 global $siteTestData; |
519 | 204 |
85
50d6c69836a1
Add test data mode for database creation.
Matti Hamalainen <ccr@tnsp.org>
parents:
81
diff
changeset
|
205 echo "Adding test data.\n"; |
50d6c69836a1
Add test data mode for database creation.
Matti Hamalainen <ccr@tnsp.org>
parents:
81
diff
changeset
|
206 |
519 | 207 $status = TRUE; |
581 | 208 stDBBeginTransaction($outDB); |
519 | 209 |
85
50d6c69836a1
Add test data mode for database creation.
Matti Hamalainen <ccr@tnsp.org>
parents:
81
diff
changeset
|
210 foreach ($siteTestData as $table => $data) |
50d6c69836a1
Add test data mode for database creation.
Matti Hamalainen <ccr@tnsp.org>
parents:
81
diff
changeset
|
211 { |
50d6c69836a1
Add test data mode for database creation.
Matti Hamalainen <ccr@tnsp.org>
parents:
81
diff
changeset
|
212 echo " - ".$table."...\n"; |
50d6c69836a1
Add test data mode for database creation.
Matti Hamalainen <ccr@tnsp.org>
parents:
81
diff
changeset
|
213 if (count($data) >= 3) |
50d6c69836a1
Add test data mode for database creation.
Matti Hamalainen <ccr@tnsp.org>
parents:
81
diff
changeset
|
214 { |
50d6c69836a1
Add test data mode for database creation.
Matti Hamalainen <ccr@tnsp.org>
parents:
81
diff
changeset
|
215 for ($n = 2; $n < count($data); $n++) |
50d6c69836a1
Add test data mode for database creation.
Matti Hamalainen <ccr@tnsp.org>
parents:
81
diff
changeset
|
216 { |
50d6c69836a1
Add test data mode for database creation.
Matti Hamalainen <ccr@tnsp.org>
parents:
81
diff
changeset
|
217 $arr = array_merge( |
519 | 218 array($outDB, "INSERT INTO ".$table." (".$data[0].") VALUES (".$data[1].")"), |
85
50d6c69836a1
Add test data mode for database creation.
Matti Hamalainen <ccr@tnsp.org>
parents:
81
diff
changeset
|
219 $data[$n]); |
50d6c69836a1
Add test data mode for database creation.
Matti Hamalainen <ccr@tnsp.org>
parents:
81
diff
changeset
|
220 |
502
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
221 $sql = call_user_func_array('stDBPrepareSQL', $arr); |
1104
0a2117349f46
s/true/TRUE/g; s/false/FALSE/g;
Matti Hamalainen <ccr@tnsp.org>
parents:
1074
diff
changeset
|
222 if (stDBExecSQL($outDB, $sql) === FALSE) |
519 | 223 { |
1104
0a2117349f46
s/true/TRUE/g; s/false/FALSE/g;
Matti Hamalainen <ccr@tnsp.org>
parents:
1074
diff
changeset
|
224 $status = FALSE; |
519 | 225 break; |
226 } | |
85
50d6c69836a1
Add test data mode for database creation.
Matti Hamalainen <ccr@tnsp.org>
parents:
81
diff
changeset
|
227 } |
50d6c69836a1
Add test data mode for database creation.
Matti Hamalainen <ccr@tnsp.org>
parents:
81
diff
changeset
|
228 } |
50d6c69836a1
Add test data mode for database creation.
Matti Hamalainen <ccr@tnsp.org>
parents:
81
diff
changeset
|
229 else |
50d6c69836a1
Add test data mode for database creation.
Matti Hamalainen <ccr@tnsp.org>
parents:
81
diff
changeset
|
230 { |
50d6c69836a1
Add test data mode for database creation.
Matti Hamalainen <ccr@tnsp.org>
parents:
81
diff
changeset
|
231 echo " Invalid table / data definition.\n"; |
50d6c69836a1
Add test data mode for database creation.
Matti Hamalainen <ccr@tnsp.org>
parents:
81
diff
changeset
|
232 } |
50d6c69836a1
Add test data mode for database creation.
Matti Hamalainen <ccr@tnsp.org>
parents:
81
diff
changeset
|
233 } |
519 | 234 |
581 | 235 stDBCommitTransaction($outDB); |
519 | 236 return $status; |
85
50d6c69836a1
Add test data mode for database creation.
Matti Hamalainen <ccr@tnsp.org>
parents:
81
diff
changeset
|
237 } |
50d6c69836a1
Add test data mode for database creation.
Matti Hamalainen <ccr@tnsp.org>
parents:
81
diff
changeset
|
238 |
499 | 239 |
504
a491865e0684
Implement tables migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
503
diff
changeset
|
240 function stGetSQLTypeParam($dbh, $def, $value) |
a491865e0684
Implement tables migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
503
diff
changeset
|
241 { |
a491865e0684
Implement tables migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
503
diff
changeset
|
242 switch (substr($def, 0, 3)) |
a491865e0684
Implement tables migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
503
diff
changeset
|
243 { |
a491865e0684
Implement tables migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
503
diff
changeset
|
244 case "INT": |
a491865e0684
Implement tables migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
503
diff
changeset
|
245 return intval($value); |
a491865e0684
Implement tables migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
503
diff
changeset
|
246 |
a491865e0684
Implement tables migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
503
diff
changeset
|
247 case "VAR": |
a491865e0684
Implement tables migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
503
diff
changeset
|
248 case "TEX": |
a491865e0684
Implement tables migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
503
diff
changeset
|
249 return $dbh->quote($value); |
a491865e0684
Implement tables migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
503
diff
changeset
|
250 |
a491865e0684
Implement tables migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
503
diff
changeset
|
251 default: die("Unknown type ".$col[1].".\n"); |
a491865e0684
Implement tables migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
503
diff
changeset
|
252 } |
a491865e0684
Implement tables migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
503
diff
changeset
|
253 } |
a491865e0684
Implement tables migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
503
diff
changeset
|
254 |
519 | 255 |
551
bed441ced78e
Improve migration and upgrade procedures.
Matti Hamalainen <ccr@tnsp.org>
parents:
549
diff
changeset
|
256 function stMigrateTables($inDB, $outDB, $upgrade, $excluded) |
502
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
257 { |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
258 global $sqlTables; |
519 | 259 |
502
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
260 echo "Migrating tables...\n"; |
519 | 261 $status = TRUE; |
553
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
262 $dbName = $outDB->getAttribute(PDO::ATTR_DRIVER_NAME); |
581 | 263 stDBBeginTransaction($outDB); |
519 | 264 |
553
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
265 foreach ($sqlTables as $table => $schema) |
502
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
266 { |
553
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
267 // Do not migrate excluded tables (or excluded tables with old names) |
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
268 $sequences = array(); |
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
269 $inTable = $upgrade ? stUpgradeMap("table", $table) : $table; |
620
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
270 if ($inTable === FALSE || in_array($inTable, $excluded) || in_array($table, $excluded)) |
553
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
271 continue; |
504
a491865e0684
Implement tables migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
503
diff
changeset
|
272 |
553
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
273 // Process each row of the input table |
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
274 echo " - '".$table."' "; |
776
81807c56153e
Add some error checking for missing source tables in upgrades.
Matti Hamalainen <ccr@tnsp.org>
parents:
630
diff
changeset
|
275 $query = stDBExecSQL($inDB, "SELECT * FROM ".$inTable); |
81807c56153e
Add some error checking for missing source tables in upgrades.
Matti Hamalainen <ccr@tnsp.org>
parents:
630
diff
changeset
|
276 if ($query === FALSE) |
81807c56153e
Add some error checking for missing source tables in upgrades.
Matti Hamalainen <ccr@tnsp.org>
parents:
630
diff
changeset
|
277 { |
81807c56153e
Add some error checking for missing source tables in upgrades.
Matti Hamalainen <ccr@tnsp.org>
parents:
630
diff
changeset
|
278 echo "SKIPPED!"; |
81807c56153e
Add some error checking for missing source tables in upgrades.
Matti Hamalainen <ccr@tnsp.org>
parents:
630
diff
changeset
|
279 } |
81807c56153e
Add some error checking for missing source tables in upgrades.
Matti Hamalainen <ccr@tnsp.org>
parents:
630
diff
changeset
|
280 else |
81807c56153e
Add some error checking for missing source tables in upgrades.
Matti Hamalainen <ccr@tnsp.org>
parents:
630
diff
changeset
|
281 foreach ($query as $row) |
504
a491865e0684
Implement tables migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
503
diff
changeset
|
282 { |
553
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
283 // Convert to new schema, as needed |
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
284 $avals = array(); |
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
285 $acols = array(); |
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
286 |
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
287 foreach ($schema as $col) |
504
a491865e0684
Implement tables migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
503
diff
changeset
|
288 { |
553
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
289 // If input has schema column, add it to output |
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
290 if (isset($row[$col[0]])) |
504
a491865e0684
Implement tables migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
503
diff
changeset
|
291 { |
553
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
292 $avals[] = stGetSQLTypeParam($outDB, $col[1], $row[$col[0]]); |
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
293 $acols[] = $col[0]; |
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
294 } |
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
295 |
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
296 // If the column should have autoincrement, add it to sequences |
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
297 if (in_array("AUTOINCREMENT", $col)) |
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
298 $sequences[] = $col[0]; |
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
299 } |
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
300 |
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
301 $sql = "INSERT INTO ".$table." (".implode(",", $acols).") VALUES (".implode(",", $avals).")"; |
1104
0a2117349f46
s/true/TRUE/g; s/false/FALSE/g;
Matti Hamalainen <ccr@tnsp.org>
parents:
1074
diff
changeset
|
302 if (stDBExecSQL($outDB, $sql) === FALSE) |
553
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
303 { |
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
304 $status = FALSE; |
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
305 break; |
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
306 } |
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
307 echo "."; |
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
308 } |
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
309 |
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
310 // Perform some specialities here |
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
311 switch ($dbName) |
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
312 { |
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
313 case "pgsql": |
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
314 // For PostgreSQL we need to update sequences |
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
315 foreach ($sequences as $seq) |
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
316 { |
1104
0a2117349f46
s/true/TRUE/g; s/false/FALSE/g;
Matti Hamalainen <ccr@tnsp.org>
parents:
1074
diff
changeset
|
317 if (($max_id = stDBFetchSQLColumn($outDB, "SELECT MAX(".$seq.") FROM ".$table)) !== FALSE && |
0a2117349f46
s/true/TRUE/g; s/false/FALSE/g;
Matti Hamalainen <ccr@tnsp.org>
parents:
1074
diff
changeset
|
318 ($seq_id = stDBFetchSQLColumn($outDB, "SELECT nextval('".$table."_".$seq."_seq')")) !== FALSE && |
553
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
319 ($seq_id <= $max_id)) |
540
ab08640b4302
Improve database upgrade code.
Matti Hamalainen <ccr@tnsp.org>
parents:
533
diff
changeset
|
320 { |
553
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
321 echo "SEQFIX"; |
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
322 stDBExecSQL($outDB, "SELECT setval('".$table."_".$seq."_seq', ".$max_id.")"); |
540
ab08640b4302
Improve database upgrade code.
Matti Hamalainen <ccr@tnsp.org>
parents:
533
diff
changeset
|
323 } |
504
a491865e0684
Implement tables migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
503
diff
changeset
|
324 } |
553
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
325 break; |
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
326 } |
504
a491865e0684
Implement tables migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
503
diff
changeset
|
327 |
553
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
328 echo "\n"; |
502
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
329 } |
519 | 330 |
581 | 331 stDBCommitTransaction($outDB); |
519 | 332 |
333 return $status; | |
502
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
334 } |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
335 |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
336 |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
337 function stSetDBPermissions($spec) |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
338 { |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
339 if (substr($spec, 0, 7) == "sqlite:") |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
340 { |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
341 $filename = substr($spec, 7); |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
342 echo |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
343 "NOTICE! It seems you have SQLite database in use, changing permission ". |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
344 "of the target file '".$filename."' to 0600, for security. You may have to ". |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
345 "loosen up that for the things to actually work, but be careful. Having your ". |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
346 "database world-readable in the web is NOT good.\n"; |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
347 |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
348 if (chmod($filename, 0600) === FALSE) |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
349 { |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
350 echo "ERROR! Could not set permissions of '".$filename."!\n"; |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
351 } |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
352 } |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
353 } |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
354 |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
355 |
36 | 356 // |
357 // Main program starts | |
358 // | |
8
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
359 if ($argc < 2) |
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
360 { |
482
e0fd4c7ae8fb
Update commandline help, remove the commandline option for target database
Matti Hamalainen <ccr@tnsp.org>
parents:
479
diff
changeset
|
361 echo |
529
ddbc84031a7b
Rename createdb.php to managedb.php
Matti Hamalainen <ccr@tnsp.org>
parents:
528
diff
changeset
|
362 "ManageDB - Manage FAPWeb SQL database\n". |
1072 | 363 "(C) Copyright 2012-2017 ccr/TNSP\n". |
482
e0fd4c7ae8fb
Update commandline help, remove the commandline option for target database
Matti Hamalainen <ccr@tnsp.org>
parents:
479
diff
changeset
|
364 "\n". |
e0fd4c7ae8fb
Update commandline help, remove the commandline option for target database
Matti Hamalainen <ccr@tnsp.org>
parents:
479
diff
changeset
|
365 "Usage: ".$argv[0]." <mode> [args]\n". |
8
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
366 "Where mode is one of following:\n". |
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
367 "\n". |
525
d7302b3a479e
Change database tool commandline a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
368 " new <dbspec> Create a new database with given PDO spec\n". |
8
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
369 " or default to the one in mconfig.inc.php\n". |
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
370 "\n". |
525
d7302b3a479e
Change database tool commandline a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
371 " test <dbspec> Like new, but add initial test data.\n". |
199
dbc6f214b825
Work on a database upgrade function.
Matti Hamalainen <ccr@tnsp.org>
parents:
185
diff
changeset
|
372 "\n". |
525
d7302b3a479e
Change database tool commandline a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
373 " upgrade <input_dbspec> <output_dbspec>\n". |
502
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
374 " Upgrade current database, if possible.\n". |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
375 " Output to new database (DO NOT USE SAME as current!)\n". |
516 | 376 "\n". |
1035
d8b14f80a6f0
Add force_ugprade command.
Matti Hamalainen <ccr@tnsp.org>
parents:
1024
diff
changeset
|
377 " force_upgrade <input_dbspec> <output_dbspec>\n". |
1040 | 378 " Like 'upgrade' but without version check.\n". |
1035
d8b14f80a6f0
Add force_ugprade command.
Matti Hamalainen <ccr@tnsp.org>
parents:
1024
diff
changeset
|
379 " DO NOT USE unless you know what you are doing.\n". |
d8b14f80a6f0
Add force_ugprade command.
Matti Hamalainen <ccr@tnsp.org>
parents:
1024
diff
changeset
|
380 "\n". |
525
d7302b3a479e
Change database tool commandline a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
381 " migrate <input_dbspec> <output_dbspec>\n". |
516 | 382 " Like upgrade, but no version check. Creates\n". |
383 " a copy of the database to the output spec.\n". | |
8
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
384 "\n"; |
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
385 exit; |
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
386 } |
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
387 |
541
e5a088dd3a4b
Validate current table schema before actions.
Matti Hamalainen <ccr@tnsp.org>
parents:
540
diff
changeset
|
388 // Validate tables data |
e5a088dd3a4b
Validate current table schema before actions.
Matti Hamalainen <ccr@tnsp.org>
parents:
540
diff
changeset
|
389 $errors = FALSE; |
e5a088dd3a4b
Validate current table schema before actions.
Matti Hamalainen <ccr@tnsp.org>
parents:
540
diff
changeset
|
390 foreach ($sqlTables as $table => $data) |
e5a088dd3a4b
Validate current table schema before actions.
Matti Hamalainen <ccr@tnsp.org>
parents:
540
diff
changeset
|
391 { |
e5a088dd3a4b
Validate current table schema before actions.
Matti Hamalainen <ccr@tnsp.org>
parents:
540
diff
changeset
|
392 if (strtolower($table) != $table) |
e5a088dd3a4b
Validate current table schema before actions.
Matti Hamalainen <ccr@tnsp.org>
parents:
540
diff
changeset
|
393 { |
e5a088dd3a4b
Validate current table schema before actions.
Matti Hamalainen <ccr@tnsp.org>
parents:
540
diff
changeset
|
394 echo "Invalid table definition '".$table."', table name must be lower case.\n"; |
e5a088dd3a4b
Validate current table schema before actions.
Matti Hamalainen <ccr@tnsp.org>
parents:
540
diff
changeset
|
395 $errors = TRUE; |
e5a088dd3a4b
Validate current table schema before actions.
Matti Hamalainen <ccr@tnsp.org>
parents:
540
diff
changeset
|
396 } |
e5a088dd3a4b
Validate current table schema before actions.
Matti Hamalainen <ccr@tnsp.org>
parents:
540
diff
changeset
|
397 |
e5a088dd3a4b
Validate current table schema before actions.
Matti Hamalainen <ccr@tnsp.org>
parents:
540
diff
changeset
|
398 foreach ($data as $def) |
e5a088dd3a4b
Validate current table schema before actions.
Matti Hamalainen <ccr@tnsp.org>
parents:
540
diff
changeset
|
399 if (strtolower($def[0]) != $def[0]) |
e5a088dd3a4b
Validate current table schema before actions.
Matti Hamalainen <ccr@tnsp.org>
parents:
540
diff
changeset
|
400 { |
e5a088dd3a4b
Validate current table schema before actions.
Matti Hamalainen <ccr@tnsp.org>
parents:
540
diff
changeset
|
401 echo "Invalid table definition '".$table."', column key '".$def[0]."' must be lower case.\n"; |
e5a088dd3a4b
Validate current table schema before actions.
Matti Hamalainen <ccr@tnsp.org>
parents:
540
diff
changeset
|
402 $errors = TRUE; |
e5a088dd3a4b
Validate current table schema before actions.
Matti Hamalainen <ccr@tnsp.org>
parents:
540
diff
changeset
|
403 } |
e5a088dd3a4b
Validate current table schema before actions.
Matti Hamalainen <ccr@tnsp.org>
parents:
540
diff
changeset
|
404 } |
e5a088dd3a4b
Validate current table schema before actions.
Matti Hamalainen <ccr@tnsp.org>
parents:
540
diff
changeset
|
405 |
e5a088dd3a4b
Validate current table schema before actions.
Matti Hamalainen <ccr@tnsp.org>
parents:
540
diff
changeset
|
406 if ($errors) |
e5a088dd3a4b
Validate current table schema before actions.
Matti Hamalainen <ccr@tnsp.org>
parents:
540
diff
changeset
|
407 die("Errors in table definitions.\n"); |
e5a088dd3a4b
Validate current table schema before actions.
Matti Hamalainen <ccr@tnsp.org>
parents:
540
diff
changeset
|
408 |
8
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
409 |
85
50d6c69836a1
Add test data mode for database creation.
Matti Hamalainen <ccr@tnsp.org>
parents:
81
diff
changeset
|
410 // Act according to specified command |
489 | 411 $addTestData = FALSE; |
551
bed441ced78e
Improve migration and upgrade procedures.
Matti Hamalainen <ccr@tnsp.org>
parents:
549
diff
changeset
|
412 $upgrade = FALSE; |
bed441ced78e
Improve migration and upgrade procedures.
Matti Hamalainen <ccr@tnsp.org>
parents:
549
diff
changeset
|
413 |
27
b27204653615
Work on adding support for entry submission.
Matti Hamalainen <ccr@tnsp.org>
parents:
26
diff
changeset
|
414 switch (stCArgLC(1)) |
8
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
415 { |
85
50d6c69836a1
Add test data mode for database creation.
Matti Hamalainen <ccr@tnsp.org>
parents:
81
diff
changeset
|
416 case "test": |
489 | 417 $addTestData = TRUE; |
85
50d6c69836a1
Add test data mode for database creation.
Matti Hamalainen <ccr@tnsp.org>
parents:
81
diff
changeset
|
418 |
8
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
419 case "new": |
525
d7302b3a479e
Change database tool commandline a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
420 // Try to connect to database |
1104
0a2117349f46
s/true/TRUE/g; s/false/FALSE/g;
Matti Hamalainen <ccr@tnsp.org>
parents:
1074
diff
changeset
|
421 if (($inSpec = stCArg(2)) === FALSE) |
525
d7302b3a479e
Change database tool commandline a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
422 die("No PDO database spec specified.\n"); |
d7302b3a479e
Change database tool commandline a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
423 |
1104
0a2117349f46
s/true/TRUE/g; s/false/FALSE/g;
Matti Hamalainen <ccr@tnsp.org>
parents:
1074
diff
changeset
|
424 if (($inDB = stConnectSQLDBSpec($inSpec)) === FALSE) |
525
d7302b3a479e
Change database tool commandline a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
425 die("Could not connect to SQL database '".$inSpec."'.\n"); |
d7302b3a479e
Change database tool commandline a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
426 |
d7302b3a479e
Change database tool commandline a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
427 echo "Using database spec '".$inSpec."'.\n"; |
d7302b3a479e
Change database tool commandline a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
428 |
d7302b3a479e
Change database tool commandline a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
429 // Create tables, add defaults |
502
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
430 if (stCreateTables($inDB, FALSE)) |
139
75cf14ee99a7
More work on party information system.
Matti Hamalainen <ccr@tnsp.org>
parents:
123
diff
changeset
|
431 { |
620
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
432 stAddSettingsNormal($inDB, $inDB, $dbMetaData, "dbmeta", FALSE, FALSE); |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
433 stAddSettingsGroup($inDB, $inDB, $siteDefaultSettings, $siteSettingsGroups, "settings_groups", "settings", FALSE); |
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
434 stAddSettingsNormal($inDB, $inDB, $siteDisplayVars, "display_vars", FALSE, FALSE); |
139
75cf14ee99a7
More work on party information system.
Matti Hamalainen <ccr@tnsp.org>
parents:
123
diff
changeset
|
435 } |
27
b27204653615
Work on adding support for entry submission.
Matti Hamalainen <ccr@tnsp.org>
parents:
26
diff
changeset
|
436 |
489 | 437 if ($addTestData) |
502
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
438 stAddTestData($inDB); |
85
50d6c69836a1
Add test data mode for database creation.
Matti Hamalainen <ccr@tnsp.org>
parents:
81
diff
changeset
|
439 |
502
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
440 stSetDBPermissions($inSpec); |
8
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
441 break; |
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
442 |
199
dbc6f214b825
Work on a database upgrade function.
Matti Hamalainen <ccr@tnsp.org>
parents:
185
diff
changeset
|
443 case "upgrade": |
1035
d8b14f80a6f0
Add force_ugprade command.
Matti Hamalainen <ccr@tnsp.org>
parents:
1024
diff
changeset
|
444 case "force_upgrade": |
551
bed441ced78e
Improve migration and upgrade procedures.
Matti Hamalainen <ccr@tnsp.org>
parents:
549
diff
changeset
|
445 $upgrade = TRUE; |
bed441ced78e
Improve migration and upgrade procedures.
Matti Hamalainen <ccr@tnsp.org>
parents:
549
diff
changeset
|
446 |
516 | 447 case "migrate": |
502
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
448 // |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
449 // Attempt to upgrade database |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
450 // |
525
d7302b3a479e
Change database tool commandline a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
451 if ($argc < 4) |
d7302b3a479e
Change database tool commandline a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
452 die("Usage: ".$argv[0]." upgrade <input_dbspec> <output_dbspec>\n"); |
d7302b3a479e
Change database tool commandline a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
453 |
d7302b3a479e
Change database tool commandline a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
454 $inSpec = stCArg(2); |
d7302b3a479e
Change database tool commandline a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
455 $outSpec = stCArg(3); |
d7302b3a479e
Change database tool commandline a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
456 |
d7302b3a479e
Change database tool commandline a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
457 if ($outSpec == $inSpec) |
d7302b3a479e
Change database tool commandline a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
458 die("The input and output databases CAN NOT BE SAME.\nBe VERY CAREFUL to not accidentally specify same db!\n"); |
d7302b3a479e
Change database tool commandline a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
459 |
620
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
460 echo "Using INPUT database spec '".$inSpec."'.\n"; |
525
d7302b3a479e
Change database tool commandline a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
461 |
1104
0a2117349f46
s/true/TRUE/g; s/false/FALSE/g;
Matti Hamalainen <ccr@tnsp.org>
parents:
1074
diff
changeset
|
462 if (($inDB = stConnectSQLDBSpec($inSpec)) === FALSE) |
525
d7302b3a479e
Change database tool commandline a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
463 die("Could not connect to SQL database '".$inSpec."'.\n"); |
d7302b3a479e
Change database tool commandline a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
464 |
502
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
465 // Check the current version first ... |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
466 if (($currVersion = stGetDBMeta($inDB, "dbVersion")) === FALSE) |
199
dbc6f214b825
Work on a database upgrade function.
Matti Hamalainen <ccr@tnsp.org>
parents:
185
diff
changeset
|
467 $currVersion = -1; |
dbc6f214b825
Work on a database upgrade function.
Matti Hamalainen <ccr@tnsp.org>
parents:
185
diff
changeset
|
468 |
516 | 469 if ($currVersion == $dbVersion && stCArgLC(1) == "upgrade") |
199
dbc6f214b825
Work on a database upgrade function.
Matti Hamalainen <ccr@tnsp.org>
parents:
185
diff
changeset
|
470 { |
dbc6f214b825
Work on a database upgrade function.
Matti Hamalainen <ccr@tnsp.org>
parents:
185
diff
changeset
|
471 echo "Database is already version ".$dbVersion.", no upgrading needed.\n"; |
dbc6f214b825
Work on a database upgrade function.
Matti Hamalainen <ccr@tnsp.org>
parents:
185
diff
changeset
|
472 } |
dbc6f214b825
Work on a database upgrade function.
Matti Hamalainen <ccr@tnsp.org>
parents:
185
diff
changeset
|
473 else |
dbc6f214b825
Work on a database upgrade function.
Matti Hamalainen <ccr@tnsp.org>
parents:
185
diff
changeset
|
474 { |
502
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
475 // Okay, we shall create an upgraded version .. |
1104
0a2117349f46
s/true/TRUE/g; s/false/FALSE/g;
Matti Hamalainen <ccr@tnsp.org>
parents:
1074
diff
changeset
|
476 if (($outDB = stConnectSQLDBSpec($outSpec)) === FALSE) |
502
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
477 die("Could not connect to SQL database '".$outSpec."'.\n"); |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
478 |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
479 echo "Database at version ".$currVersion.", upgrading to ".$dbVersion."\n"; |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
480 echo "Using OUTPUT database spec '".$outSpec."'.\n"; |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
481 |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
482 // Possibly bail out incompatible upgrades here |
199
dbc6f214b825
Work on a database upgrade function.
Matti Hamalainen <ccr@tnsp.org>
parents:
185
diff
changeset
|
483 |
dbc6f214b825
Work on a database upgrade function.
Matti Hamalainen <ccr@tnsp.org>
parents:
185
diff
changeset
|
484 // Create tables |
502
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
485 if (!stCreateTables($outDB, TRUE)) |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
486 exit; |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
487 |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
488 // Migrate data from setting tables .. |
620
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
489 if (!stAddSettingsGroup($inDB, $outDB, $siteDefaultSettings, $siteSettingsGroups, "settings_groups", "settings", TRUE)) |
502
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
490 exit; |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
491 |
620
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
492 if (!stAddSettingsNormal($inDB, $outDB, $siteDisplayVars, "display_vars", TRUE)) |
199
dbc6f214b825
Work on a database upgrade function.
Matti Hamalainen <ccr@tnsp.org>
parents:
185
diff
changeset
|
493 exit; |
dbc6f214b825
Work on a database upgrade function.
Matti Hamalainen <ccr@tnsp.org>
parents:
185
diff
changeset
|
494 |
620
8444fe96120e
Implement setting groups for admin interface settings. This is just the
Matti Hamalainen <ccr@tnsp.org>
parents:
616
diff
changeset
|
495 stAddSettingsNormal($inDB, $outDB, $dbMetaData, "dbmeta", TRUE); |
199
dbc6f214b825
Work on a database upgrade function.
Matti Hamalainen <ccr@tnsp.org>
parents:
185
diff
changeset
|
496 |
503
3232f682f0d2
Change how table schemas are defined, in preparation for future database
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
497 // Migrate other tables |
629
894a4a6bfb5f
Better fix for the DB migration issue.
Matti Hamalainen <ccr@tnsp.org>
parents:
628
diff
changeset
|
498 if (!stMigrateTables($inDB, $outDB, $upgrade, array("settings", "display_vars", "dbmeta", "settings_groups"))) |
503
3232f682f0d2
Change how table schemas are defined, in preparation for future database
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
499 exit; |
553
f13e7a513db1
Fix sequences after database upgrade or migration.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
500 |
616 | 501 // Set new database version |
502
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
502 echo "Setting dbVersion.\n"; |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
503 stSetDBMeta($outDB, "dbVersion", $dbVersion); |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
504 echo "Upgrade complete.\n"; |
199
dbc6f214b825
Work on a database upgrade function.
Matti Hamalainen <ccr@tnsp.org>
parents:
185
diff
changeset
|
505 |
502
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
506 stSetDBPermissions($inSpec); |
d2a38070e18f
Partially refactor database upgrading .. not finished yet, and the
Matti Hamalainen <ccr@tnsp.org>
parents:
500
diff
changeset
|
507 stSetDBPermissions($outSpec); |
199
dbc6f214b825
Work on a database upgrade function.
Matti Hamalainen <ccr@tnsp.org>
parents:
185
diff
changeset
|
508 } |
dbc6f214b825
Work on a database upgrade function.
Matti Hamalainen <ccr@tnsp.org>
parents:
185
diff
changeset
|
509 break; |
dbc6f214b825
Work on a database upgrade function.
Matti Hamalainen <ccr@tnsp.org>
parents:
185
diff
changeset
|
510 |
27
b27204653615
Work on adding support for entry submission.
Matti Hamalainen <ccr@tnsp.org>
parents:
26
diff
changeset
|
511 default: |
b27204653615
Work on adding support for entry submission.
Matti Hamalainen <ccr@tnsp.org>
parents:
26
diff
changeset
|
512 echo "ERROR! Invalid operation mode '".stCArg(1)."'.\n"; |
b27204653615
Work on adding support for entry submission.
Matti Hamalainen <ccr@tnsp.org>
parents:
26
diff
changeset
|
513 break; |
8
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
514 } |
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
515 |
28 | 516 |
517 // | |
518 // Clean up permissions | |
519 // | |
835
1cc9af3f90f0
Renamed the site tool, fix it here as well.
Matti Hamalainen <ccr@tnsp.org>
parents:
804
diff
changeset
|
520 foreach (array("managedb.php", "faptool.php") as $filename) |
28 | 521 { |
630 | 522 if (@chmod($filename, 0700) === FALSE) |
28 | 523 { |
490
505f46b8bb14
Separate variable from string flow.
Matti Hamalainen <ccr@tnsp.org>
parents:
489
diff
changeset
|
524 echo "ERROR! Could not set permissions for '".$filename."'!\n"; |
28 | 525 } |
526 } | |
527 | |
8
4c5f651aa107
Migrate certain settings to SQL database, cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
528 ?> |