summaryrefslogtreecommitdiff
path: root/admin/upgrade_inc.php
blob: 14dfe8a4d76155f8a970b1ed1e6f4d009bdee184 (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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
<?php
global $gBitSystem, $gUpgradeFrom, $gUpgradeTo;

$upgrades = array(

'BONNIE' => array(
	'CLYDE' => array(

// STEP 1
array( 'QUERY' =>
	array( 'MYSQL' => array(
	"ALTER TABLE `".BIT_DB_PREFIX."tiki_user_preferences` DROP PRIMARY KEY",
	"ALTER TABLE `".BIT_DB_PREFIX."users_usergroups` DROP PRIMARY KEY",
	"ALTER TABLE `".BIT_DB_PREFIX."users_grouppermissions` DROP PRIMARY KEY",
	"ALTER TABLE `".BIT_DB_PREFIX."tiki_group_inclusion` DROP PRIMARY KEY",
	)),
),

// STEP 1
array( 'DATADICT' => array(
array( 'RENAMETABLE' => array(
		'users_usergroups' => 'users_groups_map',
		'tiki_group_inclusion' => 'users_groups_inclusion',
	)
),
array( 'RENAMECOLUMN' => array(
	'users_users' => array(
		'`userId`' => '`user_id` I4',
		'`lastLogin`' => '`last_login` I8',
		'`currentLogin`' => '`current_login` I8',
		'`registrationDate`' => '`registration_date` I8',
//		'`avatarName`' => '`avatar_name`',
//		'`avatarSize`' => '`avatar_size`',
//		'`avatarFileType`' => '`avatar_file_type`',
//		'`avatarData`' => '`avatar_data`',
//		'`avatarLibName`' => '`avatar_lib_name`',
//		'`avatarType`' => '`avatar_type`',
	),
	'users_groups_map' => array(
		'`userId`' => '`user_id` I4'
	),
	'tiki_user_preferences' => array(
		'`prefName`' => '`pref_name` C(40)'
	),
//	'users_groups_inclusion' => array('`groupName`', '`group_name`'),
//	'users_groups_inclusion' => array('`includeGroup`', '`include_group`'),
	'tiki_user_bookmarks_folders' => array(
		'`folderId`' => '`folder_id` I4',
		'`parentId`' => '`parent_id` I4',
	),
	'tiki_user_bookmarks_urls' => array(
		'`urlId`' => '`url_id` I4',
		'`lastUpdated`' => '`last_updated` I8',
		'`folderId`' => '`folder_id` I4',
	),
	'tiki_user_menus' => array(
		'`menuId`' => '`menu_id` I4',
	),
	'users_grouppermissions' => array(
		'`permName`' => '`perm_name` C(30)',
	),
	'users_groups' => array(
		'`groupName`' => '`group_name` C(30)',
		'`groupDesc`' => '`group_desc` C(255)',
		'`groupHome`' => '`group_home` C(255)',
	),
	'users_groups_map' => array(
		'`userId`' => '`user_id` I4'
	),
	'users_objectpermissions' => array(
		'`permName`' => '`perm_name` C(30)',
		'`objectType`' => '`object_type` C(20)',
	),
	'users_permissions' => array(
		'`permName`' => '`perm_name` C(30)',
		'`permDesc`' => '`perm_desc` C(250)',
		'`type`' => '`package` C(100)',
	),
	'tiki_userfiles' => array(
		'`fileId`' => '`file_id` I4',
		'`isFile`' => '`is_file` C(1)',
	),
	'tiki_user_tasks' => array(
		'`taskId`' => '`task_id` I4' ,
	)
)),

array( 'ALTER' => array(
	'users_users' => array(
		'content_id' => array( '`content_id`', 'I4' ), // , 'NOTNULL' ),
		'default_group_id' => array( '`default_group_id`', 'I4' ), // , 'NOTNULL' ),
		'real_name' => array( '`real_name`', 'VARCHAR(64)'),
		'avatar_attachment_id' => array( '`avatar_attachment_id`', 'I4' ), // , 'NOTNULL' ),
		'portrait_attachment_id' => array( '`portrait_attachment_id`', 'I4' ), // , 'NOTNULL' ),
		'logo_attachment_id' => array( '`logo_attachment_id`', 'I4' ), // , 'NOTNULL' ),
	),
	'tiki_sessions' => array(
		'user_id' => array( '`user_id`', 'I4' ), // , 'NOTNULL' ),
		'session_id' => array( '`session_id`', 'VARCHAR(32)' ), // , 'NOTNULL' ),
	),
	'tiki_user_bookmarks_folders' => array(
		'user_id' => array( '`user_id`', 'I4' ), // , 'NOTNULL' ),
	),
	'tiki_user_bookmarks_urls' => array(
		'user_id' => array( '`user_id`', 'I4' ), // , 'NOTNULL' ),
	),
	'tiki_user_menus' => array(
		'user_id' => array( '`user_id`', 'I4' ), // , 'NOTNULL' ),
	),
	'tiki_user_preferences' => array(
		'user_id' => array( '`user_id`', 'I4' ), // , 'NOTNULL' ),
	),
	'tiki_user_tasks' => array(
		'user_id' => array( '`user_id`', 'I4' ), // , 'NOTNULL' ),
	),
	'tiki_user_watches' => array(
		'user_id' => array( '`user_id`', 'I4' ), // , 'NOTNULL' ),
	),
	'users_groups' => array(
		'group_id' => array( '`group_id`', 'I4' ), // , 'NOTNULL' ),
		'user_id' => array( '`user_id`', 'I4' ), // , 'NOTNULL' ),
	),
	'users_grouppermissions' => array(
		'group_id' => array( '`group_id`', 'I4' ), // , 'NOTNULL' ),
	),
	'users_objectpermissions' => array(
		'group_id' => array( '`group_id`', 'I4' ), // , 'NOTNULL' ),
		'object_id' => array( '`object_id`', 'I4' ), // , 'NOTNULL' ),
	),
	'users_groups_map' => array(
		'group_id' => array( '`group_id`', 'I4' ), // , 'NOTNULL' ),
	),
	'users_groups_inclusion' => array(
		'group_id' => array( '`group_id`', 'I4' ), // , 'NOTNULL' ),
		'include_group_id' => array( '`include_group_id`', 'I4' ), // , 'NOTNULL' ),
	),
)),

array( 'CREATE' => array (
'users_cnxn' => "
  user_id I4,
  cookie C(64),
  ip C(16),
  last_get I8,
  connect_time I8,
  get_count I8,
  user_agent C(128),
  current_view X
  CONSTRAINTS	', CONSTRAINT `users_cnxn_user_ref` FOREIGN KEY (`user_id`) REFERENCES `".BIT_DB_PREFIX."users_users` (`user_id`)'
",

)),

)),

// STEP 2
array( 'PHP' => '
	global $gBitSystem;
	$max = $gBitSystem->GetOne( "SELECT MAX(user_id) FROM `'.BIT_DB_PREFIX.'users_users`" );
	$gBitSystem->mDb->mDb->CreateSequence( "users_users_user_id_seq", $max + 1 );
	$gBitSystem->mDb->mDb->CreateSequence( "users_groups_id_seq", 1 );
	$gBitSystem->query( "UPDATE `'.BIT_DB_PREFIX.'users_groups` SET `group_id`=-1 WHERE group_name=\'Anonymous\'" );
	$gBitSystem->query( "INSERT INTO `'.BIT_DB_PREFIX.'users_groups_map` (`group_id`,`user_id`,`groupName`) VALUES ( -1, '.ANONYMOUS_USER_ID.',\'Anonymous\' )" );
	$groupNames = $gBitSystem->mDb->GetCol( "SELECT `group_name` FROM `'.BIT_DB_PREFIX.'users_groups` WHERE `group_name` != \'Anonymous\'" );
	foreach( $groupNames as $name ) {
		$id = $gBitSystem->mDb->mDb->GenID( "users_groups_id_seq" );
		$gBitSystem->query( "UPDATE `'.BIT_DB_PREFIX.'users_groups` SET group_id=? WHERE group_name=?", array( $id, $name ) );
	}
' ),

// STEP 3
array( 'QUERY' =>
	array( 'SQL92' => array(
		"UPDATE `".BIT_DB_PREFIX."users_grouppermissions` SET `perm_name`=replace(`perm_name`,'tiki_','bit_')",
		"UPDATE `".BIT_DB_PREFIX."users_permissions` SET `perm_name`=replace(`perm_name`,'tiki_','bit_')",
		"UPDATE `".BIT_DB_PREFIX."users_objectpermissions` SET `perm_name`=replace(`perm_name`,'tiki_','bit_')",




		"INSERT INTO `".BIT_DB_PREFIX."users_users` (`real_name`, `login`, `email`, `user_id` ) VALUES ('Anonymous', 'anonymous', 'anonymous@localhost', ".ANONYMOUS_USER_ID.")",
// TikiWiki assigns the creator user foreign key as 'system' even if there is now 'system' user - XOXO spiderr
// In order for all pages to upgrade, there must be at least an 'admin' and 'system' user
 		"INSERT INTO `".BIT_DB_PREFIX."users_users` (`real_name`, `login`, `email`, `user_id` ) VALUES ('Administrator', 'admin', 'root@localhost', ".ROOT_USER_ID.")",
 		"INSERT INTO `".BIT_DB_PREFIX."users_users` (`real_name`, `login`, `email` ) VALUES ('System', 'system', 'system@localhost' )",
		"UPDATE `".BIT_DB_PREFIX."tiki_sessions` SET `user_id`=(SELECT `user_id` FROM `".BIT_DB_PREFIX."users_users` WHERE `".BIT_DB_PREFIX."users_users`.`login`=`".BIT_DB_PREFIX."tiki_sessions`.`user`)",
		"UPDATE `".BIT_DB_PREFIX."tiki_user_preferences` SET `user_id`=(SELECT `user_id` FROM `".BIT_DB_PREFIX."users_users` WHERE `".BIT_DB_PREFIX."users_users`.`login`=`".BIT_DB_PREFIX."tiki_user_preferences`.`user`)",
		"UPDATE `".BIT_DB_PREFIX."tiki_user_bookmarks_folders` SET `user_id`=(SELECT `user_id` FROM `".BIT_DB_PREFIX."users_users` WHERE `".BIT_DB_PREFIX."users_users`.`login`=`".BIT_DB_PREFIX."tiki_user_bookmarks_folders`.`user`)",
		"UPDATE `".BIT_DB_PREFIX."tiki_user_bookmarks_urls` SET `user_id`=(SELECT `user_id` FROM `".BIT_DB_PREFIX."users_users` WHERE `".BIT_DB_PREFIX."users_users`.`login`=`".BIT_DB_PREFIX."tiki_user_bookmarks_urls`.`user`)",
		"UPDATE `".BIT_DB_PREFIX."tiki_user_menus` SET `user_id`=(SELECT `user_id` FROM `".BIT_DB_PREFIX."users_users` WHERE `".BIT_DB_PREFIX."users_users`.`login`=`".BIT_DB_PREFIX."tiki_user_menus`.`user`)",
		"UPDATE `".BIT_DB_PREFIX."tiki_user_tasks` SET `user_id`=(SELECT `user_id` FROM `".BIT_DB_PREFIX."users_users` WHERE `".BIT_DB_PREFIX."users_users`.`login`=`".BIT_DB_PREFIX."tiki_user_tasks`.`user`)",
		"UPDATE `".BIT_DB_PREFIX."tiki_user_watches` SET `user_id`=(SELECT `user_id` FROM `".BIT_DB_PREFIX."users_users` WHERE `".BIT_DB_PREFIX."users_users`.`login`=`".BIT_DB_PREFIX."tiki_user_watches`.`user`)",
		"UPDATE `".BIT_DB_PREFIX."users_groups_map` SET `group_id`=(SELECT `group_id` FROM `".BIT_DB_PREFIX."users_groups` WHERE `".BIT_DB_PREFIX."users_groups`.`group_name`=`".BIT_DB_PREFIX."users_groups_map`.`groupName`)",
		"UPDATE `".BIT_DB_PREFIX."users_grouppermissions` SET `group_id`=(SELECT `group_id` FROM `".BIT_DB_PREFIX."users_groups` WHERE `".BIT_DB_PREFIX."users_groups`.`group_name`=`".BIT_DB_PREFIX."users_grouppermissions`.`groupName`)",
		"UPDATE `".BIT_DB_PREFIX."users_objectpermissions` SET `group_id`=(SELECT `group_id` FROM `".BIT_DB_PREFIX."users_groups` WHERE `".BIT_DB_PREFIX."users_groups`.`group_name`=`".BIT_DB_PREFIX."users_objectpermissions`.`groupName`)",
		"UPDATE `".BIT_DB_PREFIX."users_groups_inclusion` SET `group_id`=(SELECT `group_id` FROM users_groups WHERE `group_name`=`".BIT_DB_PREFIX."users_groups_inclusion`.`groupName`)",
		"UPDATE `".BIT_DB_PREFIX."users_groups_inclusion` SET `include_group_id`=(SELECT `group_id` FROM users_groups WHERE `group_name`=`includeGroup`)",
		"UPDATE `".BIT_DB_PREFIX."users_groups` SET `user_id`=1",
		"UPDATE `".BIT_DB_PREFIX."users_groups` SET `is_default`='y' WHERE `group_name`='Registered'",
	),
)),

// STEP 4
array( 'DATADICT' => array(
array( 'DROPCOLUMN' => array(
		'tiki_sessions' => array( '`user`', '`sessionId`' ),
		'users_groups_map' => array( '`groupName`' ),
		'users_grouppermissions' => array( '`groupName`' ),
		'users_objectpermissions' => array( '`groupName`' ),
		'users_groups_inclusion' => array( '`groupName`' ),
		'tiki_user_bookmarks_folders' => array( '`user`' ),
		'tiki_user_bookmarks_urls' => array( '`user`' ),
		'tiki_user_menus' => array( '`user`' ),
		'tiki_user_preferences' => array( '`user`' ),
		'tiki_user_tasks' => array( '`user`' ),
		'tiki_user_watches' => array( '`user`' ),
	)),
)),

// STEP 5
array( 'SQL92' =>
	array( 'QUERY' => array(
		"INSERT INTO `".BIT_DB_PREFIX."users_groups_map` (`group_id`, `user_id` ) VALUES ( -1, ".ANONYMOUS_USER_ID." )",
	),
)),

// STEP 2
array( 'PHP' => '
	global $gBitSystem;
	$adminGroup = $gBitSystem->GetOne( "SELECT `group_id` FROM `'.BIT_DB_PREFIX.'users_grouppermissions` where perm_name=\'bit_p_admin\'" );
	if( empty( $adminGroup ) ) {
		$adminGroup = $gBitSystem->GetOne( "SELECT `group_id` FROM `'.BIT_DB_PREFIX.'users_groups` where LOWER(`group_name`) LIKE \'administrator%\'" );
		if( empty( $adminGroup ) ) {
			$adminGroup = $gBitSystem->mDb->mDb->GenID( "users_groups_id_seq" );
			$gBitSystem->query( "INSERT INTO `'.BIT_DB_PREFIX.'users_groups` (`group_id`,`group_name`) VALUES ( $adminGroup, \'Administrators\' )" );
		}
		$gBitSystem->query( "INSERT INTO `'.BIT_DB_PREFIX.'users_groups_map` (`group_id`,`user_id`) VALUES ( $adminGroup, '.ROOT_USER_ID.' )" );
		$gBitSystem->query( "INSERT INTO `'.BIT_DB_PREFIX.'users_grouppermissions` (`perm_name`, `group_id`) VALUES( \'bit_p_admin\', $adminGroup )" );
	}
' ),

// STEP 4
array( 'DATADICT' => array(
array( 'CREATEINDEX' => array(
		'tiki_user_prefs_idx' => array( 'tiki_user_preferences', '`user_id`', array() ),
		'tiki_user_prefs_un_idx' => array( 'tiki_user_preferences', '`user_id`,`pref_name`', array( 'UNIQUE' ) ),
		'users_groups_map_user_idx' => array( 'users_groups_map', '`user_id`', array() ),
		'users_groups_map_group_idx' => array( 'users_groups_map', '`group_id`', array() ),
		'users_groups_map_ug_idx' => array( 'users_groups_map', '`user_id`,`group_id`', array( 'UNIQUE' ) ),
		'users_groupperms_group_idx' => array( 'users_grouppermissions', '`group_id`', array() ),
		'users_groupperms_group_idx' => array( 'users_grouppermissions', '`group_id`,`perm_name`', array( 'UNIQUE' ) ),
		'users_groups_inc_group_idx' => array( 'users_groups_inclusion', '`group_id`', array() ),
		'users_groups_inc_gi_idx' => array( 'users_groups_inclusion', '`group_id`,`include_group_id`', array( 'UNIQUE' ) ),
	)),
)),



	)
)

);

if( isset( $upgrades[$gUpgradeFrom][$gUpgradeTo] ) ) {
	$gBitSystem->registerUpgrade( USERS_PKG_NAME, $upgrades[$gUpgradeFrom][$gUpgradeTo] );
}


?>