]> git.mxchange.org Git - friendica.git/blob - update.php
even more added
[friendica.git] / update.php
1 <?php
2
3 define('UPDATE_VERSION' , 1215);
4
5 /**
6  *
7  * update.php - automatic system update
8  *
9  * Automatically update database schemas and any other development changes such that
10  * copying the latest files from the source code repository will always perform a clean
11  * and painless upgrade.
12  *
13  * Each function in this file is named update_nnnn() where nnnn is an increasing number
14  * which began counting at 1000.
15  *
16  * At the top of the file "boot.php" is a define for DB_UPDATE_VERSION. Any time there is a change
17  * to the database schema or one which requires an upgrade path from the existing application,
18  * the DB_UPDATE_VERSION and the UPDATE_VERSION at the top of this file are incremented.
19  *
20  * The current DB_UPDATE_VERSION is stored in the config area of the database. If the application starts up
21  * and DB_UPDATE_VERSION is greater than the last stored build number, we will process every update function
22  * in order from the currently stored value to the new DB_UPDATE_VERSION. This is expected to bring the system
23  * up to current without requiring re-installation or manual intervention.
24  *
25  * Once the upgrade functions have completed, the current DB_UPDATE_VERSION is stored as the current value.
26  * The DB_UPDATE_VERSION will always be one greater than the last numbered script in this file.
27  *
28  * If you change the database schema, the following are required:
29  *    1. Update the file include/dbstructure.php to match the new schema.
30  *    2. If there is a need for a post procession, update this file by adding a new function at the end with the number of the current DB_UPDATE_VERSION.
31  *       This function should perform some post procession steps but no database updates.
32  *    3. Increment the DB_UPDATE_VERSION in boot.php *AND* the UPDATE_VERSION in this file to match it
33  *    4. TEST the upgrade prior to checkin and filing a pull request.
34  *
35  * IMPORTANT!
36  * NEVER do a database change anymore in the update functions! Only do this in the file include/dbstructure.php!
37  */
38
39
40 /// @TODO These old updates need to have UPDATE_SUCCESS returned on success?
41 function update_1000() {
42
43         q("ALTER TABLE `item` DROP `like`, DROP `dislike` ");
44
45         q("ALTER TABLE `item` ADD `verb` CHAR( 255 ) NOT NULL AFTER `body` ,
46                 ADD `object-type` CHAR( 255 ) NOT NULL AFTER `verb` ,
47                 ADD `object` TEXT NOT NULL AFTER `object-type` ");
48
49         q("ALTER TABLE `intro` ADD `duplex` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `knowyou` ");
50         q("ALTER TABLE `contact` ADD `duplex` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `rel` ");
51         q("ALTER TABLE `contact` CHANGE `issued-pubkey` `issued-pubkey` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL");
52         q("ALTER TABLE `contact` ADD `term-date` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER `avatar-date`");
53 }
54
55 function update_1001() {
56         q("ALTER TABLE `item` ADD `wall` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `type` ");
57         q("ALTER TABLE `item` ADD INDEX ( `wall` )");
58 }
59
60 function update_1002() {
61         q("ALTER TABLE `item` ADD `gravity` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `wall` ");
62 }
63
64 function update_1003() {
65         q("ALTER TABLE `contact` DROP `issued-pubkey` , DROP `ret-id` , DROP `ret-pubkey` ");
66         q("ALTER TABLE `contact` ADD `usehub` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `ret-aes`");
67         q("ALTER TABLE `contact` ADD `hub-verify` CHAR( 255 ) NOT NULL AFTER `usehub`");
68         q("ALTER TABLE `contact` ADD INDEX ( `uid` ) ,  ADD INDEX ( `self` ),  ADD INDEX ( `issued-id` ),  ADD INDEX ( `dfrn-id` )");
69         q("ALTER TABLE `contact` ADD INDEX ( `blocked` ),   ADD INDEX ( `readonly` )");
70 }
71
72 function update_1004() {
73         q("ALTER TABLE `contact` ADD `subhub` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `usehub`");
74 }
75
76 function update_1005() {
77
78         q("ALTER TABLE `user` ADD `spubkey` TEXT NOT NULL AFTER `prvkey` ,
79                 ADD `sprvkey` TEXT NOT NULL AFTER `spubkey`");
80
81 }
82
83 function update_1006() {
84
85         // create 's' keys for everybody that does not have one
86
87         $r = q("SELECT * FROM `user` WHERE `spubkey` = '' ");
88         if (dbm::is_result($r)) {
89                 foreach ($r as $rr) {
90                         $sres=openssl_pkey_new(array('encrypt_key' => false ));
91                         $sprvkey = '';
92                         openssl_pkey_export($sres, $sprvkey);
93                         $spkey = openssl_pkey_get_details($sres);
94                         $spubkey = $spkey["key"];
95                         $r = q("UPDATE `user` SET `spubkey` = '%s', `sprvkey` = '%s'
96                                 WHERE `uid` = %d",
97                                 dbesc($spubkey),
98                                 dbesc($sprvkey),
99                                 intval($rr['uid'])
100                         );
101                 }
102         }
103 }
104
105 function update_1007() {
106         q("ALTER TABLE `user` ADD `page-flags` INT NOT NULL DEFAULT '0' AFTER `notify-flags`");
107         q("ALTER TABLE `user` ADD INDEX ( `nickname` )");
108 }
109
110 function update_1008() {
111         q("ALTER TABLE `profile` ADD `with` TEXT NOT NULL AFTER `marital` ");
112 }
113
114 function update_1009() {
115         q("ALTER TABLE `user` ADD `allow_location` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `default-location` ");
116 }
117
118 function update_1010() {
119         q("ALTER TABLE `contact` ADD `lrdd` CHAR( 255 ) NOT NULL AFTER `url` ");
120 }
121
122 function update_1011() {
123         q("ALTER TABLE `contact` ADD `nick` CHAR( 255 ) NOT NULL AFTER `name` ");
124         $r = q("SELECT * FROM `contact` WHERE 1");
125         if (dbm::is_result($r)) {
126                 foreach ($r as $rr) {
127                                 q("UPDATE `contact` SET `nick` = '%s' WHERE `id` = %d",
128                                         dbesc(basename($rr['url'])),
129                                         intval($rr['id'])
130                                 );
131                 }
132         }
133 }
134
135 function update_1012() {
136         q("ALTER TABLE `item` ADD `inform` MEDIUMTEXT NOT NULL AFTER `tag` ");
137 }
138
139 function update_1013() {
140         q("ALTER TABLE `item` ADD `target-type` CHAR( 255 ) NOT NULL
141                 AFTER `object` , ADD `target` TEXT NOT NULL AFTER `target-type`");
142 }
143
144 function update_1014() {
145         require_once('include/Photo.php');
146         q("ALTER TABLE `contact` ADD `micro` TEXT NOT NULL AFTER `thumb` ");
147         $r = q("SELECT * FROM `photo` WHERE `scale` = 4");
148         if (dbm::is_result($r)) {
149                 foreach ($r as $rr) {
150                         $ph = new Photo($rr['data']);
151                         if($ph->is_valid()) {
152                                 $ph->scaleImage(48);
153                                 $ph->store($rr['uid'],$rr['contact-id'],$rr['resource-id'],$rr['filename'],$rr['album'],6,(($rr['profile']) ? 1 : 0));
154                         }
155                 }
156         }
157         $r = q("SELECT * FROM `contact` WHERE 1");
158         if (dbm::is_result($r)) {
159                 foreach ($r as $rr) {
160                         if (stristr($rr['thumb'],'avatar')) {
161                                 q("UPDATE `contact` SET `micro` = '%s' WHERE `id` = %d",
162                                         dbesc(str_replace('avatar','micro',$rr['thumb'])),
163                                         intval($rr['id']));
164                         } else {
165                                 q("UPDATE `contact` SET `micro` = '%s' WHERE `id` = %d",
166                                         dbesc(str_replace('5.jpg','6.jpg',$rr['thumb'])),
167                                         intval($rr['id']));
168                         }
169                 }
170         }
171 }
172
173 function update_1015() {
174         q("ALTER TABLE `item` CHANGE `body` `body` mediumtext NOT NULL");
175 }
176
177 function update_1016() {
178         q("ALTER TABLE `user` ADD `openid` CHAR( 255 ) NOT NULL AFTER `email` ");
179 }
180
181 function update_1017() {
182
183         q(" CREATE TABLE IF NOT EXISTS `clients` (
184 `client_id` VARCHAR( 20 ) NOT NULL ,
185 `pw` VARCHAR( 20 ) NOT NULL ,
186 `redirect_uri` VARCHAR( 200 ) NOT NULL ,
187 PRIMARY KEY ( `client_id` )
188 ) ENGINE = MYISAM DEFAULT CHARSET=utf8 ");
189
190         q(" CREATE TABLE IF NOT EXISTS `tokens` (
191 `id` VARCHAR( 40 ) NOT NULL ,
192 `client_id` VARCHAR( 20 ) NOT NULL ,
193 `expires` INT NOT NULL ,
194 `scope` VARCHAR( 200 ) NOT NULL ,
195 PRIMARY KEY ( `id` )
196 ) ENGINE = MYISAM DEFAULT CHARSET=utf8 ");
197
198         q("CREATE TABLE IF NOT EXISTS `auth_codes` (
199 `id` VARCHAR( 40 ) NOT NULL ,
200 `client_id` VARCHAR( 20 ) NOT NULL ,
201 `redirect_uri` VARCHAR( 200 ) NOT NULL ,
202 `expires` INT NOT NULL ,
203 `scope` VARCHAR( 250 ) NOT NULL ,
204 PRIMARY KEY ( `id` )
205 ) ENGINE = MYISAM DEFAULT CHARSET=utf8 ");
206
207 }
208
209 function update_1018() {
210         q("CREATE TABLE IF NOT EXISTS `queue` (
211 `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
212 `cid` INT NOT NULL ,
213 `created` DATETIME NOT NULL ,
214 `last` DATETIME NOT NULL ,
215 `content` MEDIUMTEXT NOT NULL
216 ) ENGINE = MYISAM DEFAULT CHARSET=utf8 ");
217 }
218
219 function update_1019() {
220         q("ALTER TABLE `mail` DROP `delivered`");
221         q("ALTER TABLE `profile` ADD `showwith` TINYINT(1) NOT NULL DEFAULT '0' AFTER `marital` ");
222 }
223
224 function update_1020() {
225         q("ALTER TABLE `profile` DROP `showwith`");
226         q("ALTER TABLE `item` ADD `thr-parent` CHAR( 255 ) NOT NULL AFTER `parent-uri` ");
227 }
228
229 function update_1021() {
230         q("ALTER TABLE `profile_check` ADD `sec` CHAR( 255 ) NOT NULL AFTER `dfrn_id` ");
231         q("ALTER TABLE `profile_check` ADD `cid` INT(10) unsigned  NOT NULL DEFAULT '0' AFTER `uid`");
232         q("ALTER TABLE `item` ADD `private` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `deny_gid` ");
233 }
234
235 function update_1022() {
236         q("CREATE TABLE `pconfig` (
237                 `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
238                 `uid` INT NOT NULL DEFAULT '0',
239                 `cat` CHAR( 255 ) NOT NULL ,
240                 `k` CHAR( 255 ) NOT NULL ,
241                 `v` MEDIUMTEXT NOT NULL
242                 ) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci ");
243 }
244
245 function update_1023() {
246         q("ALTER TABLE `user` ADD `register_date` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER `timezone` ,
247         ADD `login_date` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER `register_date` ");
248 }
249
250 function update_1024() {
251         q("ALTER TABLE `profile` ADD `keywords` TEXT NOT NULL AFTER `religion` ");
252 }
253
254 function update_1025() {
255         q("ALTER TABLE `user` ADD `maxreq` int(11) NOT NULL DEFAULT '10' AFTER `pwdreset` ");
256 }
257
258 function update_1026() {
259         q("CREATE TABLE IF NOT EXISTS `hook` (
260         `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
261         `hook` CHAR( 255 ) NOT NULL ,
262         `file` CHAR( 255 ) NOT NULL ,
263         `function` CHAR( 255 ) NOT NULL
264         ) ENGINE = MYISAM DEFAULT CHARSET=utf8 ");
265 }
266
267
268 function update_1027() {
269         q("CREATE TABLE IF NOT EXISTS `addon` (
270         `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
271         `name` CHAR( 255 ) NOT NULL ,
272         `version` CHAR( 255 ) NOT NULL ,
273         `installed` TINYINT( 1 ) NOT NULL DEFAULT '0'
274         ) ENGINE = MYISAM DEFAULT CHARSET=utf8 ");
275 }
276
277 function update_1028() {
278         q("ALTER TABLE `user` ADD `openidserver` text NOT NULL AFTER `deny_gid` ");
279 }
280
281 function update_1029() {
282         q("ALTER TABLE `contact` ADD `info` MEDIUMTEXT NOT NULL AFTER `reason` ");
283 }
284
285 function update_1030() {
286         q("ALTER TABLE `contact` ADD `bdyear` CHAR( 4 ) NOT NULL COMMENT 'birthday notify flag' AFTER `profile-id` ");
287
288         q("CREATE TABLE IF NOT EXISTS `event` (
289         `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
290         `uid` INT NOT NULL ,
291         `cid` INT NOT NULL ,
292         `created` DATETIME NOT NULL ,
293         `edited` DATETIME NOT NULL ,
294         `start` DATETIME NOT NULL ,
295         `finish` DATETIME NOT NULL ,
296         `desc` TEXT NOT NULL ,
297         `location` TEXT NOT NULL ,
298         `type` CHAR( 255 ) NOT NULL ,
299         `adjust` TINYINT( 1 ) NOT NULL DEFAULT '1',
300         `allow_cid` MEDIUMTEXT NOT NULL ,
301         `allow_gid` MEDIUMTEXT NOT NULL ,
302         `deny_cid` MEDIUMTEXT NOT NULL ,
303         `deny_gid` MEDIUMTEXT NOT NULL
304         ) ENGINE = MYISAM DEFAULT CHARSET=utf8 ");
305
306
307 }
308
309 function update_1031() {
310         // Repair any bad links that slipped into the item table
311         $r = q("SELECT `id`, `object` FROM `item` WHERE `object` != '' ");
312         if (dbm::is_result($r)) {
313                 foreach ($r as $rr) {
314                         if(strstr($rr['object'],'type=&quot;http')) {
315                                 q("UPDATE `item` SET `object` = '%s' WHERE `id` = %d",
316                                         dbesc(str_replace('type=&quot;http','href=&quot;http',$rr['object'])),
317                                         intval($rr['id'])
318                                 );
319                         }
320                 }
321         }
322 }
323
324 function update_1032() {
325         q("ALTER TABLE `profile` ADD `pdesc` CHAR( 255 ) NOT NULL AFTER `name` ");
326 }
327
328 function update_1033() {
329         q("CREATE TABLE IF NOT EXISTS `cache` (
330                 `k` CHAR( 255 ) NOT NULL PRIMARY KEY ,
331                 `v` TEXT NOT NULL,
332                 `updated` DATETIME NOT NULL
333                 ) ENGINE = MYISAM DEFAULT CHARSET=utf8 ");
334 }
335
336
337 function update_1034() {
338
339         // If you have any of these parent-less posts they can cause problems, and
340         // we need to delete them. You can't see them anyway.
341         // Legitimate items will usually get re-created on the next
342         // pull from the hub.
343         // But don't get rid of a post that may have just come in
344         // and may not yet have the parent id set.
345
346         q("DELETE FROM `item` WHERE `parent` = 0 AND `created` < UTC_TIMESTAMP() - INTERVAL 2 MINUTE");
347
348 }
349
350
351 function update_1035() {
352
353         q("ALTER TABLE `contact` ADD `success_update` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER `last-update` ");
354
355 }
356
357 function update_1036() {
358
359         $r = dbq("SELECT * FROM `contact` WHERE `network` = 'dfrn' && `photo` LIKE '%include/photo%' ");
360         if (dbm::is_result($r)) {
361                 foreach ($r as $rr) {
362                         q("UPDATE `contact` SET `photo` = '%s', `thumb` = '%s', `micro` = '%s' WHERE `id` = %d",
363                                 dbesc(str_replace('include/photo','photo',$rr['photo'])),
364                                 dbesc(str_replace('include/photo','photo',$rr['thumb'])),
365                                 dbesc(str_replace('include/photo','photo',$rr['micro'])),
366                                 intval($rr['id']));
367                 }
368         }
369 }
370
371 function update_1037() {
372         q("ALTER TABLE `contact` CHANGE `lrdd` `alias` CHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ");
373 }
374
375 function update_1038() {
376         q("ALTER TABLE `item` ADD `plink` CHAR( 255 ) NOT NULL AFTER `target` ");
377 }
378
379 function update_1039() {
380         q("ALTER TABLE `addon` ADD `timestamp` BIGINT NOT NULL DEFAULT '0'");
381 }
382
383
384 function update_1040() {
385
386         q("CREATE TABLE IF NOT EXISTS `fcontact` (
387         `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
388         `url` CHAR( 255 ) NOT NULL ,
389         `name` CHAR( 255 ) NOT NULL ,
390         `photo` CHAR( 255 ) NOT NULL
391         ) ENGINE = MYISAM DEFAULT CHARSET=utf8 ");
392
393         q("CREATE TABLE IF NOT EXISTS `ffinder` (
394         `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
395         `uid` INT UNSIGNED NOT NULL ,
396         `cid` INT UNSIGNED NOT NULL ,
397         `fid` INT UNSIGNED NOT NULL
398         ) ENGINE = MYISAM DEFAULT CHARSET=utf8 ");
399
400 }
401
402 function update_1041() {
403         q("ALTER TABLE `profile` CHANGE `keywords` `prv_keywords` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ");
404         q("ALTER TABLE `profile` ADD `pub_keywords` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `religion` ");
405 }
406
407 function update_1042() {
408         q("ALTER TABLE `user` ADD `expire` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `maxreq` ");
409 }
410
411
412 function update_1043() {
413         q("ALTER TABLE `user` ADD `blockwall` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `blocked` ");
414 }
415
416 function update_1044() {
417         q("ALTER TABLE `profile` ADD FULLTEXT ( `pub_keywords` ) ");
418         q("ALTER TABLE `profile` ADD FULLTEXT ( `prv_keywords` ) ");
419 }
420
421 function update_1045() {
422         q("ALTER TABLE `user` ADD `language` CHAR( 16 ) NOT NULL DEFAULT 'en' AFTER `timezone` ");
423 }
424
425 function update_1046() {
426         q("ALTER TABLE `item` ADD `attach` MEDIUMTEXT NOT NULL AFTER `tag` ");
427 }
428
429 function update_1047() {
430         q("ALTER TABLE `contact` ADD `writable` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `readonly` ");
431 }
432
433 function update_1048() {
434         q("UPDATE `contact` SET `writable` = 1 WHERE `network` = 'stat' AND `notify` != '' ");
435 }
436
437 function update_1049() {
438         q("CREATE TABLE `mailacct` (
439         `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
440         `uid` INT NOT NULL,
441         `server` CHAR( 255 ) NOT NULL ,
442         `user` CHAR( 255 ) NOT NULL ,
443         `pass` CHAR( 255 ) NOT NULL ,
444         `reply_to` CHAR( 255 ) NOT NULL ,
445         `last_check` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00'
446         ) ENGINE = MYISAM ");
447 }
448
449 function update_1050() {
450         q("CREATE TABLE `attach` (
451         `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
452         `uid` INT NOT NULL ,
453         `filetype` CHAR( 64 ) NOT NULL ,
454         `filesize` INT NOT NULL ,
455         `data` LONGBLOB NOT NULL ,
456         `created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
457         `edited` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
458         `allow_cid` MEDIUMTEXT NOT NULL ,
459         `allow_gid` MEDIUMTEXT NOT NULL ,
460         `deny_cid` MEDIUMTEXT NOT NULL ,
461         `deny_gid` MEDIUMTEXT NOT NULL
462         ) ENGINE = MYISAM ");
463
464 }
465
466 function update_1051() {
467         q("ALTER TABLE `mailacct` ADD `port` INT NOT NULL AFTER `server` ,
468                 ADD `ssltype` CHAR( 16 ) NOT NULL AFTER `port` ,
469                 ADD `mailbox` CHAR( 255 ) NOT NULL AFTER `ssltype` ");
470
471         q("ALTER TABLE `contact` ADD `addr` CHAR( 255 ) NOT NULL AFTER `url` ");
472 }
473
474 function update_1052() {
475         q("ALTER TABLE `mailacct` CHANGE `pass` `pass` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL");
476         q("ALTER TABLE `mailacct` ADD `pubmail` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `reply_to` ");
477         q("ALTER TABLE `item` ADD `pubmail` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `private` ");
478 }
479
480
481 function update_1053() {
482         q("ALTER TABLE `item` ADD `extid` CHAR( 255 ) NOT NULL AFTER `parent-uri` , ADD INDEX ( `extid` ) ");
483 }
484
485 function update_1054() {
486         q("ALTER TABLE `register` ADD `language` CHAR( 16 ) NOT NULL AFTER `password` ");
487 }
488
489 function update_1055() {
490         q("ALTER TABLE `profile` ADD `hidewall` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `hide-friends` ");
491 }
492
493 function update_1056() {
494         q("ALTER TABLE `attach` ADD `hash` CHAR( 64 ) NOT NULL AFTER `uid` ");
495 }
496
497 function update_1057() {
498         q("ALTER TABLE `attach` ADD `filename` CHAR( 255 ) NOT NULL AFTER `hash` ");
499 }
500
501 function update_1058() {
502         q("ALTER TABLE `item` ADD `event-id` INT NOT NULL AFTER `resource-id` ");
503 }
504
505 function update_1059() {
506         q("ALTER TABLE `queue` ADD `network` CHAR( 32 ) NOT NULL AFTER `cid` ");
507 }
508
509 function update_1060() {
510         q("ALTER TABLE `event` ADD `uri` CHAR( 255 ) NOT NULL AFTER `cid` ");
511 }
512
513 function update_1061() {
514         q("ALTER TABLE `event` ADD `nofinish` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `type` ");
515 }
516
517 function update_1062() {
518         q("ALTER TABLE `user` ADD `prvnets` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `page-flags` ");
519 }
520 function update_1063() {
521         q("ALTER TABLE `addon` ADD `plugin_admin` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `timestamp` ");
522 }
523
524 function update_1064() {
525         q("ALTER TABLE `item` ADD `app` CHAR( 255 ) NOT NULL AFTER `body` ");
526 }
527
528 function update_1065() {
529         q("ALTER TABLE `intro` ADD `fid` INT NOT NULL DEFAULT '0' AFTER `uid`");
530 }
531
532 function update_1066() {
533         $r = q("ALTER TABLE `item` ADD `received` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER `edited` ");
534
535         if ($r) {
536                 q("ALTER TABLE `item` ADD INDEX ( `received` ) ");
537         }
538
539         $r = q("UPDATE `item` SET `received` = `edited` WHERE 1");
540 }
541
542 function update_1067() {
543         q("ALTER TABLE `ffinder` ADD `type` CHAR( 16 ) NOT NULL AFTER `id` ,
544         ADD `note` TEXT NOT NULL AFTER `type` ");
545 }
546
547 function update_1068() {
548         // 1067 was short-sighted. Undo it.
549         q("ALTER TABLE `ffinder` DROP `type` , DROP `note` ");
550
551         // and do this instead.
552
553         q("CREATE TABLE IF NOT EXISTS `fsuggest` (
554         `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
555         `uid` INT NOT NULL ,
556         `cid` INT NOT NULL ,
557         `name` CHAR( 255 ) NOT NULL ,
558         `url` CHAR( 255 ) NOT NULL ,
559         `photo` CHAR( 255 ) NOT NULL ,
560         `note` TEXT NOT NULL ,
561         `created` DATETIME NOT NULL
562         ) ENGINE = MYISAM DEFAULT CHARSET=utf8");
563
564 }
565
566 function update_1069() {
567         q("ALTER TABLE `fsuggest` ADD `request` CHAR( 255 ) NOT NULL AFTER `url` ");
568         q("ALTER TABLE `fcontact` ADD `request` CHAR( 255 ) NOT NULL AFTER `photo` ");
569 }
570
571 // mail body needs to accomodate private photos
572
573 function update_1070() {
574         q("ALTER TABLE `mail` CHANGE `body` `body` MEDIUMTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ");
575 }
576
577 function update_1071() {
578         q("ALTER TABLE `photo` ADD INDEX ( `uid` ) ");
579         q("ALTER TABLE `photo` ADD INDEX ( `resource-id` ) ");
580         q("ALTER TABLE `photo` ADD INDEX ( `album` ) ");
581         q("ALTER TABLE `photo` ADD INDEX ( `scale` ) ");
582         q("ALTER TABLE `photo` ADD INDEX ( `profile` ) ");
583
584 }
585
586 function update_1072() {
587         q("ALTER TABLE `item` ADD `starred` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `visible` ");
588         q("ALTER TABLE `item` ADD INDEX ( `starred` ) ");
589 }
590
591 function update_1073() {
592         q("ALTER TABLE `contact` ADD `remote_self` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `self` ");
593 }
594
595 function update_1074() {
596         q("ALTER TABLE `user` ADD `hidewall` TINYINT( 1) NOT NULL DEFAULT '0' AFTER `blockwall` ");
597         $r = q("SELECT `uid` FROM `profile` WHERE `is-default` = 1 AND `hidewall` = 1");
598         if (dbm::is_result($r)) {
599                 foreach ($r as $rr) {
600                         q("UPDATE `user` SET `hidewall` = 1 WHERE `uid` = %d",
601                                 intval($rr['uid'])
602                         );
603                 }
604         }
605         q("ALTER TABLE `profile` DROP `hidewall`");
606 }
607
608 function update_1075() {
609         q("ALTER TABLE `user` ADD `guid` CHAR( 16 ) NOT NULL AFTER `uid` ");
610         $r = q("SELECT `uid` FROM `user` WHERE 1");
611         if (dbm::is_result($r)) {
612                 foreach ($r as $rr) {
613                         $found = true;
614                         do {
615                                 $guid = substr(random_string(),0,16);
616                                 $x = q("SELECT `uid` FROM `user` WHERE `guid` = '%s' LIMIT 1",
617                                         dbesc($guid)
618                                 );
619                                 if (!dbm::is_result($x)) {
620                                         $found = false;
621                                 }
622                         } while ($found == true );
623
624                         q("UPDATE `user` SET `guid` = '%s' WHERE `uid` = %d",
625                                 dbesc($guid),
626                                 intval($rr['uid'])
627                         );
628                 }
629         }
630 }
631
632 function update_1076() {
633         q("CREATE TABLE `guid` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
634                 `guid` CHAR( 16 ) NOT NULL , INDEX ( `guid` ) ) ENGINE = MYISAM ");
635
636 }
637
638 // There was a typo in 1076 so we'll try again in 1077 to make sure
639 // We'll also make it big enough to allow for future growth, I seriously
640 // doubt Diaspora will be able to leave guids at 16 bytes,
641 // and we can also use the same structure for our own larger guids
642
643 function update_1077() {
644         q("CREATE TABLE IF NOT EXISTS `guid` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
645                 `guid` CHAR( 16 ) NOT NULL , INDEX ( `guid` ) ) ENGINE = MYISAM ");
646
647         q("ALTER TABLE `guid` CHANGE `guid` `guid` CHAR( 64 ) NOT NULL");
648 }
649
650 function update_1078() {
651         q("ALTER TABLE `item` ADD `guid` CHAR( 64 ) NOT NULL AFTER `id` , ADD INDEX ( `guid` ) ");
652 }
653
654 function update_1079() {
655         q("CREATE TABLE IF NOT EXISTS `sign` (
656         `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
657         `iid` INT UNSIGNED NOT NULL ,
658         `signed_text` MEDIUMTEXT NOT NULL ,
659         `signature` TEXT NOT NULL ,
660         `signer` CHAR( 255 ) NOT NULL ,
661         INDEX ( `iid` )
662         ) ENGINE = MYISAM ");
663
664         q("ALTER TABLE `fcontact` ADD `nick` CHAR( 255 ) NOT NULL ,
665         ADD `addr` CHAR( 255 ) NOT NULL ,
666         ADD `notify` CHAR( 255 ) NOT NULL ,
667         ADD `poll` CHAR( 255 ) NOT NULL ,
668         ADD `confirm` CHAR( 255 ) NOT NULL ,
669         ADD `priority` TINYINT( 1 ) NOT NULL ,
670         ADD `network` CHAR( 32 ) NOT NULL ,
671         ADD `alias` CHAR( 255 ) NOT NULL ,
672         ADD `pubkey` TEXT NOT NULL ,
673         ADD INDEX ( `addr` ) ,
674         ADD INDEX ( `network` ) ");
675
676 }
677
678 function update_1080() {
679         q("ALTER TABLE `fcontact` ADD `updated` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00'");
680 }
681
682 function update_1081() {
683         // there was a typo in update 1081 so it was corrected and moved up to 1082
684 }
685
686 function update_1082() {
687         q("ALTER TABLE `photo` ADD `guid` CHAR( 64 ) NOT NULL AFTER `contact-id`,
688                 ADD INDEX ( `guid` )  ");
689         // make certain the following code is only executed once
690
691         $r = q("SELECT `id` FROM `photo` WHERE `guid` != '' LIMIT 1");
692
693         if (dbm::is_result($r)) {
694                 return;
695         }
696
697         $r = q("SELECT distinct(`resource-id`) FROM `photo` WHERE 1 group by `id`");
698
699         if (dbm::is_result($r)) {
700                 foreach ($r as $rr) {
701                         $guid = get_guid();
702                         q("UPDATE `photo` SET `guid` = '%s' WHERE `resource-id` = '%s'",
703                                 dbesc($guid),
704                                 dbesc($rr['resource-id'])
705                         );
706                 }
707         }
708 }
709
710 function update_1083() {
711         q("CREATE TABLE IF NOT EXISTS `deliverq` (
712         `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
713         `cmd` CHAR( 32 ) NOT NULL ,
714         `item` INT NOT NULL ,
715         `contact` INT NOT NULL
716         ) ENGINE = MYISAM ");
717
718 }
719
720 function update_1084() {
721         q("ALTER TABLE `contact` ADD `attag` CHAR( 255 ) NOT NULL AFTER `nick` ");
722 }
723
724 function update_1085() {
725         q("CREATE TABLE IF NOT EXISTS `search` (
726         `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
727         `uid` INT NOT NULL ,
728         `term` CHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
729         INDEX ( `uid` ),
730         INDEX ( `term` )
731         ) ENGINE = MYISAM ");
732 }
733
734 function update_1086() {
735         q("ALTER TABLE `item` ADD `bookmark` tinyint(1) NOT NULL DEFAULT '0' AFTER `starred` ");
736 }
737
738 function update_1087() {
739         q("ALTER TABLE `item` ADD `commented` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER `edited` ");
740
741         $r = q("SELECT `id` FROM `item` WHERE `parent` = `id` ");
742         if (dbm::is_result($r)) {
743                 foreach ($r as $rr) {
744                         $x = q("SELECT max(`created`) AS `cdate` FROM `item` WHERE `parent` = %d LIMIT 1",
745                                 intval($rr['id'])
746                         );
747
748                         if (dbm::is_result($x)) {
749                                 q("UPDATE `item` SET `commented` = '%s' WHERE `id` = %d",
750                                         dbesc($x[0]['cdate']),
751                                         intval($rr['id'])
752                                 );
753                         }
754                 }
755         }
756 }
757
758 function update_1088() {
759         q("ALTER TABLE `user` ADD `account_expired` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `expire` ,
760                 ADD `account_expires_on` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER `account_expired` ,
761                 ADD `expire_notification_sent` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER `account_expires_on` ");
762 }
763
764 function update_1089() {
765         q("ALTER TABLE `user` ADD `blocktags` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `hidewall` ");
766 }
767
768 function update_1090() {
769         q("ALTER TABLE `contact` ADD `batch` char(255) NOT NULL AFTER `prvkey` ");
770
771         q("UPDATE `contact` SET `batch` = concat(substring_index(`url`,'/',3),'/receive/public') WHERE `network` = 'dspr' ");
772
773 }
774
775 function update_1091() {
776
777         // catch a few stragglers that may have crept in before we added this on remote connects
778         q("UPDATE `contact` SET `batch` = concat(substring_index(`url`,'/',3),'/receive/public') WHERE `network` = 'dspr' AND `batch` = '' ");
779         q("ALTER TABLE `queue` ADD `batch` TINYINT( 1 ) NOT NULL DEFAULT '0' ");
780         q("ALTER TABLE `fcontact` ADD `batch` char(255) NOT NULL AFTER `addr` ");
781
782 }
783
784 function update_1092() {
785         q("ALTER TABLE `user` ADD INDEX ( `login_date` ) ");
786         q("ALTER TABLE `user` ADD INDEX ( `account_expired` ) ");
787 }
788
789 function update_1093() {
790         q("CREATE TABLE IF NOT EXISTS `fserver` (
791         `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
792         `server` CHAR( 255 ) NOT NULL ,
793         `posturl` CHAR( 255 ) NOT NULL ,
794         `key` TEXT NOT NULL,
795         INDEX ( `server` )
796         ) ENGINE = MYISAM ");
797
798         q("ALTER TABLE `group` ADD `visible` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `uid` ");
799
800 }
801
802 function update_1094() {
803         q("ALTER TABLE `item` ADD `postopts` TEXT NOT NULL AFTER `target` ");
804 }
805
806 function update_1095() {
807         q("ALTER TABLE `contact` ADD `bd` DATE NOT NULL AFTER `bdyear` ");
808 }
809
810 function update_1096() {
811         q("ALTER TABLE `item` ADD `origin` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `deleted` , ADD INDEX ( `origin` ) ");
812 }
813
814 function update_1097() {
815         q("ALTER TABLE `queue`
816                 ADD INDEX (`cid`),
817                 ADD INDEX (`created`),
818                 ADD INDEX (`last`),
819                 ADD INDEX (`network`),
820                 ADD INDEX (`batch`)
821         ");
822 }
823
824 function update_1098() {
825         q("ALTER TABLE `contact`
826                 ADD INDEX (`network`),
827                 ADD INDEX (`name`),
828                 ADD INDEX (`nick`),
829                 ADD INDEX (`attag`),
830                 ADD INDEX (`url`),
831                 ADD INDEX (`addr`),
832                 ADD INDEX (`batch`)
833         ");
834 }
835
836 function update_1099() {
837         q("CREATE TABLE IF NOT EXISTS `gcontact` (
838         `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
839         `name` CHAR( 255 ) NOT NULL ,
840         `url` CHAR( 255 ) NOT NULL ,
841         `nurl` CHAR( 255 ) NOT NULL ,
842         `photo` CHAR( 255 ) NOT NULL
843         ) ENGINE = MYISAM ");
844
845         q("CREATE TABLE IF NOT EXISTS `glink` (
846         `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
847         `cid` INT NOT NULL ,
848         `uid` INT NOT NULL ,
849         `gcid` INT NOT NULL,
850         `updated` DATETIME NOT NULL
851         ) ENGINE = MYISAM ");
852
853         q("ALTER TABLE `gcontact` ADD INDEX (`nurl`) ");
854         q("ALTER TABLE `glink` ADD INDEX (`cid`), ADD INDEX (`uid`), ADD INDEX (`gcid`), ADD INDEX (`updated`) ");
855
856         q("ALTER TABLE `contact` ADD `poco` TEXT NOT NULL AFTER `confirm` ");
857
858 }
859
860 function update_1100() {
861         q("ALTER TABLE `contact` ADD `nurl` CHAR( 255 ) NOT NULL AFTER `url` ");
862         q("ALTER TABLE `contact` ADD INDEX (`nurl`) ");
863
864         require_once('include/text.php');
865
866         $r = q("SELECT `id`, `url` FROM `contact` WHERE `url` != '' AND `nurl` = '' ");
867         if (dbm::is_result($r)) {
868                 foreach ($r as $rr) {
869                         q("UPDATE `contact` SET `nurl` = '%s' WHERE `id` = %d",
870                                 dbesc(normalise_link($rr['url'])),
871                                 intval($rr['id'])
872                         );
873                 }
874         }
875 }
876
877
878 function update_1101() {
879         q("CREATE TABLE IF NOT EXISTS `gcign` (
880         `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
881         `uid` INT NOT NULL ,
882         `gcid` INT NOT NULL
883         ) ENGINE = MYISAM ");
884
885         q("ALTER TABLE `gcign` ADD INDEX (`uid`), ADD INDEX (`gcid`) ");
886 }
887
888 function update_1102() {
889         q("ALTER TABLE `clients` ADD `name` TEXT NULL DEFAULT NULL AFTER `redirect_uri` ");
890         q("ALTER TABLE `clients` ADD `icon` TEXT NULL DEFAULT NULL AFTER `name` ");
891         q("ALTER TABLE `clients` ADD `uid` INT NOT NULL DEFAULT 0 AFTER `icon` ");
892
893         q("ALTER TABLE `tokens` ADD `secret` TEXT NOT NULL AFTER `id` ");
894         q("ALTER TABLE `tokens` ADD `uid` INT NOT NULL AFTER `scope` ");
895 }
896
897
898 function update_1103() {
899 /// @TODO Commented out:
900 //      q("ALTER TABLE `item` ADD INDEX ( `wall` ) ");
901         q("ALTER TABLE `item` ADD FULLTEXT ( `tag` ) ");
902         q("ALTER TABLE `contact` ADD INDEX ( `pending` ) ");
903         q("ALTER TABLE `user` ADD INDEX ( `hidewall` ) ");
904         q("ALTER TABLE `user` ADD INDEX ( `blockwall` ) ");
905         q("ALTER TABLE `user` ADD INDEX ( `blocked` ) ");
906         q("ALTER TABLE `user` ADD INDEX ( `verified` ) ");
907
908 }
909
910 function update_1104() {
911         q("ALTER TABLE `item` ADD `forum_mode` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `origin` , ADD INDEX ( `forum_mode` ) ");
912
913 }
914
915 function update_1105() {
916         q("ALTER TABLE `mail` ADD `convid` INT NOT NULL AFTER `contact-id` ");
917         q("ALTER TABLE `mail` ADD `guid` CHAR( 64 ) NOT NULL AFTER `uid` ");
918
919         q("CREATE TABLE IF NOT EXISTS `conv` (
920         `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
921         `guid` CHAR( 64 ) NOT NULL ,
922         `recips` MEDIUMTEXT NOT NULL ,
923         `uid` INT NOT NULL
924         ) ENGINE = MYISAM ");
925 }
926
927
928 function update_1106() {
929         q("ALTER TABLE `item` ADD INDEX ( `author-link` ) ");
930
931 }
932
933 function update_1107() {
934         q("ALTER TABLE `item` ADD INDEX ( `bookmark` ) ");
935
936 }
937
938 function update_1108() {
939         q("ALTER TABLE `contact` ADD `hidden` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `writable` ,
940 ADD INDEX ( `hidden` ) ");
941
942 }
943
944 function update_1109() {
945         q("ALTER TABLE `conv` ADD `creator` CHAR( 255 ) NOT NULL ,
946                 ADD `created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
947                 ADD `updated` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
948                 ADD `subject` MEDIUMTEXT NOT NULL,
949                 ADD INDEX ( `created` ), ADD INDEX ( `updated` ) ");
950 }
951
952 function update_1110() {
953         q("ALTER TABLE `mail` ADD `reply` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `seen`,
954                 ADD INDEX ( `reply` ), ADD INDEX ( `uid` ), ADD INDEX ( `guid` ), ADD INDEX ( `seen` ),
955                 ADD INDEX ( `uri` ), ADD INDEX ( `parent-uri`), ADD INDEX ( `created` ), ADD INDEX ( `convid` ) ");
956
957 }
958
959 function update_1111() {
960         q("ALTER TABLE `gcontact` ADD `connect` CHAR( 255 ) NOT NULL ");
961 }
962
963
964 function update_1112() {
965
966         q("CREATE TABLE IF NOT EXISTS `notify` (
967 `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
968 `type` INT( 11 ) NOT NULL ,
969 `name` CHAR( 255 ) NOT NULL ,
970 `url` CHAR( 255 ) NOT NULL ,
971 `photo` CHAR( 255 ) NOT NULL ,
972 `date` DATETIME NOT NULL ,
973 `msg` MEDIUMTEXT NOT NULL ,
974 `uid` INT NOT NULL ,
975 `link` CHAR( 255 ) NOT NULL ,
976 `seen` TINYINT( 1 ) NOT NULL DEFAULT '0'
977 ) ENGINE = MYISAM ");
978
979         q("ALTER TABLE `notify` ADD INDEX ( `type` ), ADD INDEX ( `uid`), ADD INDEX (`seen`), ADD INDEX (`date`) ");
980
981 }
982
983 function update_1113() {
984         q("ALTER TABLE `notify` ADD `verb` CHAR( 255 ) NOT NULL ,
985 ADD `otype` CHAR( 16 ) NOT NULL");
986 }
987
988 function update_1114() {
989         q("CREATE TABLE IF NOT EXISTS `item_id` (
990 `iid` INT NOT NULL ,
991 `uid` INT NOT NULL ,
992 `face` CHAR( 255 ) NOT NULL ,
993 `dspr` CHAR( 255 ) NOT NULL ,
994 `twit` CHAR( 255 ) NOT NULL ,
995 `stat` CHAR( 255 ) NOT NULL ,
996 PRIMARY KEY ( `iid` ),
997 INDEX ( `uid` ),
998 INDEX ( `face` ),
999 INDEX ( `dspr` ),
1000 INDEX ( `twit` ),
1001 INDEX ( `stat` )
1002 ) ENGINE = MYISAM ");
1003
1004 }
1005
1006 function update_1115() {
1007         q("ALTER TABLE `item` ADD `moderated`
1008                 TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `pubmail`,
1009                 ADD INDEX (`moderated`) ");
1010 }
1011
1012 function update_1116() {
1013         //typo! corrected update was rolled forward
1014 }
1015
1016 function update_1117() {
1017 q("create table if not exists `manage` (
1018 `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
1019 `uid` INT NOT NULL ,
1020 `mid` INT NOT NULL,
1021 INDEX ( `uid` ),
1022 INDEX ( `mid` )
1023 ) ENGINE = MYISAM ");
1024
1025 }
1026
1027 function update_1118() {
1028         // rolled forward
1029 }
1030
1031 function update_1119() {
1032 q("ALTER TABLE `contact` ADD `closeness` TINYINT( 2 ) NOT NULL DEFAULT '99' AFTER `reason` , ADD INDEX (`closeness`) ");
1033 q("update contact set closeness = 0 where self = 1");
1034 q("ALTER TABLE `item` ADD `spam` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `visible` , ADD INDEX (`spam`) ");
1035 }
1036
1037
1038 function update_1120() {
1039
1040         // item table update from 1119 did not get into database.sql file.
1041         // might be missing on new installs. We'll check.
1042
1043         $r = q("describe item");
1044         if (dbm::is_result($r)) {
1045                 foreach ($r as $rr) {
1046                         if ($rr['Field'] == 'spam') {
1047                                 return;
1048                         }
1049                 }
1050         }
1051         q("ALTER TABLE `item` ADD `spam` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `visible` , ADD INDEX (`spam`) ");
1052
1053 }
1054
1055 function update_1121() {
1056         q("CREATE TABLE IF NOT EXISTS `poll_result` (
1057         `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
1058         `poll_id` INT NOT NULL ,
1059         `choice` INT NOT NULL ,
1060         INDEX ( `poll_id` ),
1061         INDEX ( `choice` )
1062         ) ENGINE = MYISAM ");
1063
1064         q("CREATE TABLE IF NOT EXISTS `poll` (
1065         `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
1066         `uid` INT NOT NULL ,
1067         `q0` MEDIUMTEXT NOT NULL ,
1068         `q1` MEDIUMTEXT NOT NULL ,
1069         `q2` MEDIUMTEXT NOT NULL ,
1070         `q3` MEDIUMTEXT NOT NULL ,
1071         `q4` MEDIUMTEXT NOT NULL ,
1072         `q5` MEDIUMTEXT NOT NULL ,
1073         `q6` MEDIUMTEXT NOT NULL ,
1074         `q7` MEDIUMTEXT NOT NULL ,
1075         `q8` MEDIUMTEXT NOT NULL ,
1076         `q9` MEDIUMTEXT NOT NULL ,
1077         INDEX ( `uid` )
1078         ) ENGINE = MYISAM ");
1079
1080 }
1081
1082 function update_1122() {
1083         q("ALTER TABLE `notify` ADD `hash` CHAR( 64 ) NOT NULL AFTER `id` ,
1084 ADD INDEX ( `hash` ) ");
1085 }
1086
1087 function update_1123() {
1088         set_config('system','allowed_themes','dispy,quattro,testbubble,vier,darkbubble,darkzero,duepuntozero,greenzero,purplezero,quattro-green,slackr');
1089 }
1090
1091 function update_1124() {
1092         q("ALTER TABLE `item` ADD INDEX (`author-name`) ");
1093 }
1094
1095 function update_1125() {
1096   q("CREATE TABLE IF NOT EXISTS `notify-threads` (
1097   `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
1098   `notify-id` INT NOT NULL,
1099   `master-parent-item` INT( 10 ) unsigned NOT NULL DEFAULT '0',
1100   `parent-item` INT( 10 ) unsigned NOT NULL DEFAULT '0',
1101   `receiver-uid` INT NOT NULL,
1102   INDEX ( `master-parent-item` ),
1103   INDEX ( `receiver-uid` )
1104   ) ENGINE = MyISAM DEFAULT CHARSET=utf8");
1105 }
1106
1107 function update_1126() {
1108         q("ALTER TABLE `mailacct` ADD `action` INT NOT NULL AFTER `pass`,
1109                 ADD `movetofolder` CHAR(255) NOT NULL AFTER `action`");
1110 }
1111
1112 function update_1127() {
1113         q("CREATE TABLE IF NOT EXISTS `spam` (
1114   `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
1115   `uid` INT NOT NULL,
1116   `spam` INT NOT NULL DEFAULT '0',
1117   `ham` INT NOT NULL DEFAULT '0',
1118   `term` CHAR(255) NOT NULL,
1119   INDEX ( `uid` ),
1120   INDEX ( `spam` ),
1121   INDEX ( `ham` ),
1122   INDEX ( `term` )
1123   ) ENGINE = MyISAM DEFAULT CHARSET=utf8");
1124 }
1125
1126
1127 function update_1128() {
1128         q("ALTER TABLE `spam` ADD `date` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER `term` ");
1129 }
1130
1131 function update_1129() {
1132         q("ALTER TABLE `notify` ADD `parent` INT NOT NULL AFTER `link` , ADD INDEX ( `parent` ), ADD INDEX ( `link` ), ADD INDEX ( `otype` ) ");
1133 }
1134
1135 function update_1130() {
1136         q("ALTER TABLE `item` ADD `file` MEDIUMTEXT NOT NULL AFTER `inform`, ADD FULLTEXT KEY (`file`) ");
1137 }
1138
1139 function update_1131() {
1140         q("ALTER TABLE `contact` ADD `forum` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `writable` , ADD INDEX ( `forum` ) ");
1141 }
1142
1143
1144 function update_1132() {
1145         q("CREATE TABLE IF NOT EXISTS `userd` (
1146 `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
1147 `username` CHAR( 255 ) NOT NULL,
1148 INDEX ( `username` )
1149 ) ENGINE = MYISAM ");
1150
1151 }
1152
1153 function update_1133() {
1154         q("ALTER TABLE `user` ADD `unkmail` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `blocktags` , ADD INDEX ( `unkmail` ) ");
1155         q("ALTER TABLE `user` ADD `cntunkmail` INT NOT NULL DEFAULT '10' AFTER `unkmail` , ADD INDEX ( `cntunkmail` ) ");
1156         q("ALTER TABLE `mail` ADD `unknown` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `replied` , ADD INDEX ( `unknown` ) ");
1157 }
1158
1159 function update_1134() {
1160         // faulty update merged forward
1161         // had a hardwired tablename of 'friendica' which isn't the right name on most systems
1162 }
1163
1164 function update_1135() {
1165         //there can't be indexes with more than 1000 bytes in mysql,
1166         //so change charset to be smaller
1167         q("ALTER TABLE `config` CHANGE `cat` `cat` CHAR( 255 ) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL ,
1168 CHANGE `k` `k` CHAR( 255 ) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL");
1169
1170         //same thing for pconfig
1171         q("ALTER TABLE `pconfig` CHANGE `cat` `cat` CHAR( 255 ) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL ,
1172         CHANGE `k` `k` CHAR( 255 ) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL");
1173         // faulty update merged forward. Bad update in 1134 caused duplicate k,cat pairs
1174         // these have to be cleared before the unique keys can be added.
1175 }
1176
1177 function update_1136() {
1178
1179         $arr = array();
1180
1181         // order in reverse so that we save the newest entry
1182
1183         $r = q("SELECT * FROM `config` WHERE 1 ORDER BY `id` DESC");
1184         if (dbm::is_result($r)) {
1185                 foreach ($r as $rr) {
1186                         $found = false;
1187                         foreach ($arr as $x) {
1188                                 if ($x['cat'] == $rr['cat'] && $x['k'] == $rr['k']) {
1189                                         $found = true;
1190                                         q("DELETE FROM `config` WHERE `id` = %d",
1191                                                 intval($rr['id'])
1192                                         );
1193                                 }
1194                         }
1195                         if (! $found) {
1196                                 $arr[] = $rr;
1197                         }
1198                 }
1199         }
1200
1201         $arr = array();
1202         $r = q("SELECT * FROM `pconfig` WHERE 1 ORDER BY `id` DESC");
1203         if (dbm::is_result($r)) {
1204                 foreach ($r as $rr) {
1205                         $found = false;
1206                         foreach ($arr as $x) {
1207                                 if ($x['uid'] == $rr['uid'] && $x['cat'] == $rr['cat'] && $x['k'] == $rr['k']) {
1208                                         $found = true;
1209                                         q("DELETE FROM `pconfig` WHERE `id` = %d",
1210                                                 intval($rr['id'])
1211                                         );
1212                                 }
1213                         }
1214                         if (! $found) {
1215                                 $arr[] = $rr;
1216                         }
1217                 }
1218         }
1219         q("ALTER TABLE `config` ADD UNIQUE `access` ( `cat` , `k` ) ");
1220         q("ALTER TABLE `pconfig` ADD UNIQUE `access` ( `uid` , `cat` , `k` )");
1221
1222 }
1223
1224
1225 function update_1137() {
1226         q("ALTER TABLE `item_id` DROP `face` , DROP `dspr` , DROP `twit` , DROP `stat` ");
1227         q("ALTER TABLE `item_id` ADD `sid` CHAR( 255 ) NOT NULL AFTER `uid` , ADD `service` CHAR( 255 ) NOT NULL AFTER `sid` , ADD INDEX (`sid`), ADD INDEX ( `service`) ");
1228 }
1229
1230 function update_1138() {
1231         q("ALTER TABLE `contact` ADD `archive` TINYINT(1) NOT NULL DEFAULT '0' AFTER `hidden`, ADD INDEX (`archive`)");
1232 }
1233
1234 function update_1139() {
1235         $r = q("ALTER TABLE `user` ADD `account_removed` TINYINT(1) NOT NULL DEFAULT '0' AFTER `expire`, ADD INDEX(`account_removed`)");
1236
1237         if ($r) {
1238                 return UPDATE_SUCCESS ;
1239         }
1240
1241         return UPDATE_FAILED ;
1242 }
1243
1244 function update_1140() {
1245         $r = q("ALTER TABLE `addon` ADD `hidden` TINYINT(1) NOT NULL DEFAULT '0' AFTER `installed`, ADD INDEX(`hidden`) ");
1246
1247         if ($r) {
1248                 return UPDATE_SUCCESS ;
1249         }
1250
1251         return UPDATE_FAILED ;
1252 }
1253
1254 function update_1141() {
1255         $r = q("ALTER TABLE `glink` ADD `zcid` INT(11) NOT NULL AFTER `gcid`, ADD INDEX(`zcid`) ");
1256
1257         if ($r) {
1258                 return UPDATE_SUCCESS ;
1259         }
1260
1261         return UPDATE_FAILED ;
1262 }
1263
1264
1265 function update_1142() {
1266         $r = q("ALTER TABLE `user` ADD `service_class` CHAR(32) NOT NULL AFTER `expire_notification_sent`, ADD INDEX(`service_class`) ");
1267
1268         if ($r) {
1269                 return UPDATE_SUCCESS ;
1270         }
1271
1272         return UPDATE_FAILED ;
1273 }
1274
1275 function update_1143() {
1276         $r = q("ALTER TABLE `user` ADD `def_gid` INT(11) NOT NULL DEFAULT '0' AFTER `service_class`");
1277
1278         if ($r) {
1279                 return UPDATE_SUCCESS ;
1280         }
1281
1282         return UPDATE_FAILED ;
1283 }
1284
1285 function update_1144() {
1286         $r = q("ALTER TABLE `contact` ADD `prv` TINYINT(1) NOT NULL DEFAULT '0' AFTER `forum`");
1287
1288         if ($r) {
1289                 return UPDATE_SUCCESS ;
1290         }
1291
1292         return UPDATE_FAILED ;
1293 }
1294
1295 function update_1145() {
1296         $r = q("ALTER TABLE `profile` ADD `howlong` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER `with`");
1297
1298         if ($r) {
1299                 return UPDATE_SUCCESS ;
1300         }
1301
1302         return UPDATE_FAILED ;
1303 }
1304
1305 function update_1146() {
1306         $r = q("ALTER TABLE `profile` ADD `hometown` CHAR(255) NOT NULL AFTER `country-name`, ADD INDEX ( `hometown` ) ");
1307
1308         if ($r) {
1309                 return UPDATE_SUCCESS ;
1310         }
1311
1312         return UPDATE_FAILED ;
1313 }
1314
1315 function update_1147() {
1316         $r1 = q("ALTER TABLE `sign` ALTER `iid` SET DEFAULT '0'");
1317         $r2 = q("ALTER TABLE `sign` ADD `retract_iid` INT(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `iid`");
1318         $r3 = q("ALTER TABLE `sign` ADD INDEX ( `retract_iid` )");
1319
1320         if ($r1 && $r2 && $r3) {
1321                 return UPDATE_SUCCESS ;
1322         }
1323
1324         return UPDATE_FAILED ;
1325 }
1326
1327 function update_1148() {
1328         $r = q("ALTER TABLE `photo` ADD `type` CHAR(128) NOT NULL DEFAULT 'image/jpeg' AFTER `filename`");
1329
1330         if ($r) {
1331                 return UPDATE_SUCCESS ;
1332         }
1333
1334         return UPDATE_FAILED ;
1335 }
1336
1337
1338 function update_1149() {
1339         $r1 = q("ALTER TABLE `profile` ADD `likes` TEXT NOT NULL AFTER `prv_keywords`");
1340         $r2 = q("ALTER TABLE `profile` ADD `dislikes` TEXT NOT NULL AFTER `likes`");
1341
1342         if ($r1 && $r2) {
1343                 return UPDATE_SUCCESS;
1344         }
1345
1346         return UPDATE_FAILED;
1347 }
1348
1349
1350 function update_1150() {
1351         $r = q("ALTER TABLE `event` ADD `summary` TEXT NOT NULL AFTER `finish`, ADD INDEX ( `uid` ), ADD INDEX ( `cid` ), ADD INDEX ( `uri` ), ADD INDEX ( `start` ), ADD INDEX ( `finish` ), ADD INDEX ( `type` ), ADD INDEX ( `adjust` ) ");
1352
1353         if ($r) {
1354                 return UPDATE_SUCCESS ;
1355         }
1356
1357         return UPDATE_FAILED ;
1358 }
1359
1360
1361 function update_1151() {
1362         $r = q("CREATE TABLE IF NOT EXISTS `locks` (
1363                         `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
1364                         `name` CHAR( 128 ) NOT NULL ,
1365                         `locked` TINYINT( 1 ) NOT NULL DEFAULT '0'
1366                   ) ENGINE = MYISAM DEFAULT CHARSET=utf8 ");
1367
1368         if ($r) {
1369                 return UPDATE_SUCCESS ;
1370         }
1371
1372         return UPDATE_FAILED ;
1373 }
1374
1375 function update_1152() {
1376         $r = q("CREATE TABLE IF NOT EXISTS `term` (
1377                 `tid` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
1378                 `oid` INT UNSIGNED NOT NULL ,
1379                 `otype` TINYINT( 3 ) UNSIGNED NOT NULL ,
1380                 `type` TINYINT( 3 ) UNSIGNED NOT NULL ,
1381                 `term` CHAR( 255 ) NOT NULL ,
1382                 `url` CHAR( 255 ) NOT NULL,
1383                 KEY `oid` ( `oid` ),
1384                 KEY `otype` ( `otype` ),
1385                 KEY `type`  ( `type` ),
1386                 KEY `term`  ( `term` )
1387                 ) ENGINE = MYISAM DEFAULT CHARSET=utf8 ");
1388
1389         if ($r) {
1390                 return UPDATE_SUCCESS;
1391         }
1392
1393         return UPDATE_FAILED;
1394 }
1395
1396 function update_1153() {
1397         $r = q("ALTER TABLE `hook` ADD `priority` INT(11) UNSIGNED NOT NULL DEFAULT '0'");
1398
1399         if ($r) {
1400                 return UPDATE_SUCCESS;
1401         }
1402
1403         return UPDATE_FAILED;
1404 }
1405
1406 function update_1154() {
1407         $r = q("ALTER TABLE `event` ADD `ignore` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0' AFTER `adjust` , ADD INDEX ( `ignore` )");
1408
1409         if ($r) {
1410                 return UPDATE_SUCCESS;
1411         }
1412
1413         return UPDATE_FAILED;
1414 }
1415
1416 function update_1155() {
1417         $r1 = q("ALTER TABLE `item_id` DROP PRIMARY KEY");
1418         $r2 = q("ALTER TABLE `item_id` ADD `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST");
1419         $r3 = q("ALTER TABLE `item_id` ADD INDEX ( `iid` ) ");
1420
1421         if ($r1 && $r2 && $r3) {
1422                 return UPDATE_SUCCESS;
1423         }
1424
1425         return UPDATE_FAILED;
1426 }
1427
1428 function update_1156() {
1429         $r = q("ALTER TABLE `photo` ADD `datasize` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `width` ,
1430 ADD INDEX ( `datasize` ) ");
1431
1432         if ($r) {
1433                 return UPDATE_SUCCESS;
1434         }
1435
1436         return UPDATE_FAILED;
1437 }
1438
1439 function update_1157() {
1440         $r = q("CREATE TABLE IF NOT EXISTS `dsprphotoq` (
1441           `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
1442           `uid` int(11) NOT NULL,
1443           `msg` mediumtext NOT NULL,
1444           `attempt` tinyint(4) NOT NULL,
1445           PRIMARY KEY (`id`)
1446           ) ENGINE=MyISAM DEFAULT CHARSET=utf8"
1447         );
1448
1449         if ($r) {
1450                 return UPDATE_SUCCESS;
1451         }
1452
1453         return UPDATE_FAILED;
1454 }
1455
1456 function update_1158() {
1457         set_config('system', 'maintenance', 1);
1458
1459         // Wait for 15 seconds for current requests to
1460         // clear before locking up the database
1461         sleep(15);
1462
1463         $r = q("CREATE INDEX event_id ON item(`event-id`)");
1464         set_config('system', 'maintenance', 0);
1465
1466         if ($r) {
1467                 return UPDATE_SUCCESS;
1468         }
1469
1470         return UPDATE_FAILED;
1471 }
1472
1473 function update_1159() {
1474         $r = q("ALTER TABLE `term` ADD `aid` int(10) unsigned NOT NULL DEFAULT '0',
1475                 ADD `uid` int(10) unsigned NOT NULL DEFAULT '0',
1476                 ADD INDEX (`uid`),
1477                 ADD INDEX (`aid`)");
1478
1479         if ($r) {
1480                 return UPDATE_SUCCESS;
1481         }
1482
1483         return UPDATE_FAILED;
1484 }
1485
1486 function update_1160() {
1487         set_config('system', 'maintenance', 1);
1488
1489         // Wait for 15 seconds for current requests to
1490         // clear before locking up the database
1491         sleep(15);
1492
1493         $r = q("ALTER TABLE `item` ADD `mention` TINYINT(1) NOT NULL DEFAULT '0', ADD INDEX (`mention`)");
1494         set_config('system', 'maintenance', 0);
1495
1496         if ($r) {
1497                 return UPDATE_SUCCESS;
1498         }
1499
1500         return UPDATE_FAILED;
1501 }
1502
1503 function update_1161() {
1504         $r = q("ALTER TABLE `pconfig` ADD INDEX (`cat`)");
1505
1506         if ($r) {
1507                 return UPDATE_SUCCESS;
1508         }
1509
1510         return UPDATE_FAILED;
1511 }
1512
1513 function update_1162() {
1514         require_once('include/tags.php');
1515         update_items();
1516
1517         return UPDATE_SUCCESS;
1518 }
1519
1520 function update_1163() {
1521         set_config('system', 'maintenance', 1);
1522
1523         $r = q("ALTER TABLE `item` ADD `network` char(32) NOT NULL");
1524
1525         set_config('system', 'maintenance', 0);
1526
1527         if ($r) {
1528                 return UPDATE_SUCCESS;
1529         }
1530
1531         return UPDATE_FAILED;
1532 }
1533 function update_1164() {
1534         set_config('system', 'maintenance', 1);
1535
1536         /// @TODO If one update fails, should it continue?
1537         $r = q("UPDATE `item` SET `network`='%s' WHERE `contact-id` IN (SELECT `id` FROM`contact` WHERE `network` = '' AND `contact`.`uid` = `item`.`uid`)",
1538                 NETWORK_DFRN);
1539
1540         $r = q("UPDATE `item` SET `network`='%s' WHERE `contact-id` IN (SELECT `id` FROM`contact` WHERE `network` = '%s' AND `contact`.`uid` = `item`.`uid`)",
1541                 NETWORK_DFRN, NETWORK_DFRN);
1542
1543         $r = q("UPDATE `item` SET `network`='%s' WHERE `contact-id` IN (SELECT `id` FROM`contact` WHERE `network` = '%s' AND `contact`.`uid` = `item`.`uid`)",
1544                 NETWORK_ZOT, NETWORK_ZOT);
1545
1546         $r = q("UPDATE `item` SET `network`='%s' WHERE `contact-id` IN (SELECT `id` FROM`contact` WHERE `network` = '%s' AND `contact`.`uid` = `item`.`uid`)",
1547                 NETWORK_OSTATUS, NETWORK_OSTATUS);
1548
1549         $r = q("UPDATE `item` SET `network`='%s' WHERE `contact-id` IN (SELECT `id` FROM`contact` WHERE `network` = '%s' AND `contact`.`uid` = `item`.`uid`)",
1550                 NETWORK_FEED, NETWORK_FEED);
1551
1552         $r = q("UPDATE `item` SET `network`='%s' WHERE `contact-id` IN (SELECT `id` FROM`contact` WHERE `network` = '%s' AND `contact`.`uid` = `item`.`uid`)",
1553                 NETWORK_DIASPORA, NETWORK_DIASPORA);
1554
1555         $r = q("UPDATE `item` SET `network`='%s' WHERE `contact-id` IN (SELECT `id` FROM`contact` WHERE `network` = '%s' AND `contact`.`uid` = `item`.`uid`)",
1556                 NETWORK_MAIL, NETWORK_MAIL);
1557
1558         $r = q("UPDATE `item` SET `network`='%s' WHERE `contact-id` IN (SELECT `id` FROM`contact` WHERE `network` = '%s' AND `contact`.`uid` = `item`.`uid`)",
1559                 NETWORK_MAIL2, NETWORK_MAIL2);
1560
1561         $r = q("UPDATE `item` SET `network`='%s' WHERE `contact-id` IN (SELECT `id` FROM`contact` WHERE `network` = '%s' AND `contact`.`uid` = `item`.`uid`)",
1562                 NETWORK_FACEBOOK, NETWORK_FACEBOOK);
1563
1564         $r = q("UPDATE `item` SET `network`='%s' WHERE `contact-id` IN (SELECT `id` FROM`contact` WHERE `network` = '%s' AND `contact`.`uid` = `item`.`uid`)",
1565                 NETWORK_LINKEDIN, NETWORK_LINKEDIN);
1566
1567         $r = q("UPDATE `item` SET `network`='%s' WHERE `contact-id` IN (SELECT `id` FROM`contact` WHERE `network` = '%s' AND `contact`.`uid` = `item`.`uid`)",
1568                 NETWORK_XMPP, NETWORK_XMPP);
1569
1570         $r = q("UPDATE `item` SET `network`='%s' WHERE `contact-id` IN (SELECT `id` FROM`contact` WHERE `network` = '%s' AND `contact`.`uid` = `item`.`uid`)",
1571                 NETWORK_MYSPACE, NETWORK_MYSPACE);
1572
1573         $r = q("UPDATE `item` SET `network`='%s' WHERE `contact-id` IN (SELECT `id` FROM`contact` WHERE `network` = '%s' AND `contact`.`uid` = `item`.`uid`)",
1574                 NETWORK_GPLUS, NETWORK_GPLUS);
1575
1576         $r = q("UPDATE `item` SET `network`='%s' WHERE `contact-id` IN (SELECT `id` FROM`contact` WHERE `network` = '%s' AND `contact`.`uid` = `item`.`uid`)",
1577                 NETWORK_PUMPIO, NETWORK_PUMPIO);
1578
1579         $r = q("UPDATE `item` SET `network`='%s' WHERE `contact-id` IN (SELECT `id` FROM`contact` WHERE `network` = '%s' AND `contact`.`uid` = `item`.`uid`)",
1580                 NETWORK_TWITTER, NETWORK_TWITTER);
1581
1582         set_config('system', 'maintenance', 0);
1583
1584         return UPDATE_SUCCESS;
1585 }
1586
1587 function update_1165() {
1588         $r = q("CREATE TABLE IF NOT EXISTS `push_subscriber` (
1589         `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
1590         `uid` INT NOT NULL,
1591         `callback_url` CHAR( 255 ) NOT NULL,
1592         `topic` CHAR( 255 ) NOT NULL,
1593         `nickname` CHAR( 255 ) NOT NULL,
1594         `push` INT NOT NULL,
1595         `last_update` DATETIME NOT NULL,
1596         `secret` CHAR( 255 ) NOT NULL
1597         ) ENGINE = MYISAM DEFAULT CHARSET=utf8 ");
1598
1599         if ($r) {
1600                 return UPDATE_SUCCESS;
1601         }
1602
1603         return UPDATE_FAILED;
1604 }
1605
1606 function update_1166() {
1607         $r = q("CREATE TABLE IF NOT EXISTS `unique_contacts` (
1608                         `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
1609                         `url` CHAR(255) NOT NULL,
1610                         `nick` CHAR(255) NOT NULL,
1611                         `name` CHAR(255) NOT NULL,
1612                         `avatar` CHAR(255) NOT NULL,
1613                         INDEX (`url`)
1614                   ) ENGINE = MYISAM DEFAULT CHARSET=utf8 ");
1615
1616         if ($r) {
1617                 return UPDATE_SUCCESS;
1618         }
1619
1620         return UPDATE_FAILED;
1621 }
1622
1623 function update_1167() {
1624         $r = q("ALTER TABLE `contact` ADD `notify_new_posts` TINYINT(1) NOT NULL DEFAULT '0'");
1625
1626         if ($r) {
1627                 return UPDATE_SUCCESS;
1628         }
1629
1630         return UPDATE_FAILED;
1631 }
1632
1633 function update_1168() {
1634         $r = q("ALTER TABLE `contact` ADD `fetch_further_information` TINYINT(1) NOT NULL DEFAULT '0'");
1635
1636         if ($r) {
1637                 return UPDATE_SUCCESS ;
1638         }
1639
1640         return UPDATE_FAILED ;
1641 }
1642
1643 function update_1169() {
1644         $r = q("CREATE TABLE IF NOT EXISTS `thread` (
1645                   `iid` int(10) unsigned NOT NULL DEFAULT '0',
1646                   `uid` int(10) unsigned NOT NULL DEFAULT '0',
1647                   `contact-id` int(11) unsigned NOT NULL DEFAULT '0',
1648                   `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
1649                   `edited` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
1650                   `commented` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
1651                   `received` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
1652                   `changed` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
1653                   `wall` tinyint(1) NOT NULL DEFAULT '0',
1654                   `private` tinyint(1) NOT NULL DEFAULT '0',
1655                   `pubmail` tinyint(1) NOT NULL DEFAULT '0',
1656                   `moderated` tinyint(1) NOT NULL DEFAULT '0',
1657                   `visible` tinyint(1) NOT NULL DEFAULT '0',
1658                   `spam` tinyint(1) NOT NULL DEFAULT '0',
1659                   `starred` tinyint(1) NOT NULL DEFAULT '0',
1660                   `bookmark` tinyint(1) NOT NULL DEFAULT '0',
1661                   `unseen` tinyint(1) NOT NULL DEFAULT '1',
1662                   `deleted` tinyint(1) NOT NULL DEFAULT '0',
1663                   `origin` tinyint(1) NOT NULL DEFAULT '0',
1664                   `forum_mode` tinyint(1) NOT NULL DEFAULT '0',
1665                   `mention` tinyint(1) NOT NULL DEFAULT '0',
1666                   `network` char(32) NOT NULL,
1667                   PRIMARY KEY (`iid`),
1668                   KEY `created` (`created`),
1669                   KEY `commented` (`commented`),
1670                   KEY `uid_network_commented` (`uid`,`network`,`commented`),
1671                   KEY `uid_network_created` (`uid`,`network`,`created`),
1672                   KEY `uid_contactid_commented` (`uid`,`contact-id`,`commented`),
1673                   KEY `uid_contactid_created` (`uid`,`contact-id`,`created`),
1674                   KEY `wall_private_received` (`wall`,`private`,`received`),
1675                   KEY `uid_created` (`uid`,`created`),
1676                   KEY `uid_commented` (`uid`,`commented`)
1677                 ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;");
1678
1679         if (!$r) {
1680                 return UPDATE_FAILED;
1681         }
1682
1683         proc_run(PRIORITY_LOW, "include/threadupdate.php");
1684
1685         return UPDATE_SUCCESS;
1686 }
1687
1688 /*
1689 ==========
1690 ATTENTION!
1691 ==========
1692
1693 All following update functions are ONLY for jobs that need to run AFTER the database changes are applied.
1694
1695 Database changes are ONLY applied in the file include/dbstructure.php.
1696 */
1697
1698 function update_1177() {
1699         require_once("mod/profiles.php");
1700
1701         $profiles = q("SELECT `uid`, `about`, `locality`, `pub_keywords`, `gender` FROM `profile` WHERE `is-default`");
1702
1703         foreach ($profiles AS $profile) {
1704                 if ($profile["about"].$profile["locality"].$profile["pub_keywords"].$profile["gender"] == "")
1705                         continue;
1706
1707                 $profile["pub_keywords"] = profile_clean_keywords($profile["pub_keywords"]);
1708
1709                 $r = q("UPDATE `contact` SET `about` = '%s', `location` = '%s', `keywords` = '%s', `gender` = '%s' WHERE `self` AND `uid` = %d",
1710                                 dbesc($profile["about"]),
1711                                 dbesc($profile["locality"]),
1712                                 dbesc($profile["pub_keywords"]),
1713                                 dbesc($profile["gender"]),
1714                                 intval($profile["uid"])
1715                         );
1716         }
1717 }
1718
1719 function update_1178() {
1720         if (get_config('system','no_community_page'))
1721                 set_config('system','community_page_style', CP_NO_COMMUNITY_PAGE);
1722
1723         // Update the central item storage with uid=0
1724         proc_run(PRIORITY_LOW, "include/threadupdate.php");
1725
1726         return UPDATE_SUCCESS;
1727 }
1728
1729 function update_1180() {
1730
1731         // Fill the new fields in the term table.
1732         proc_run(PRIORITY_LOW, "include/tagupdate.php");
1733
1734         return UPDATE_SUCCESS;
1735 }
1736
1737 function update_1188() {
1738
1739         if (strlen(get_config('system','directory_submit_url')) AND
1740                 !strlen(get_config('system','directory'))) {
1741                 set_config('system','directory', dirname(get_config('system','directory_submit_url')));
1742                 del_config('system','directory_submit_url');
1743         }
1744
1745         return UPDATE_SUCCESS;
1746 }
1747
1748 function update_1190() {
1749
1750         require_once('include/plugin.php');
1751
1752         set_config('system', 'maintenance', 1);
1753
1754         if (plugin_enabled('forumlist')) {
1755                 $plugin = 'forumlist';
1756                 $plugins = get_config('system','addon');
1757                 $plugins_arr = array();
1758
1759                 if($plugins) {
1760                         $plugins_arr = explode(",",str_replace(" ", "",$plugins));
1761
1762                         $idx = array_search($plugin, $plugins_arr);
1763                         if ($idx !== false){
1764                                 unset($plugins_arr[$idx]);
1765                                 //delete forumlist manually from addon and hook table
1766                                 // since uninstall_plugin() don't work here
1767                                 q("DELETE FROM `addon` WHERE `name` = 'forumlist' ");
1768                                 q("DELETE FROM `hook` WHERE `file` = 'addon/forumlist/forumlist.php' ");
1769                                 set_config('system','addon', implode(", ",$plugins_arr));
1770                         }
1771                 }
1772         }
1773
1774         // select old formlist addon entries
1775         $r = q("SELECT `uid`, `cat`, `k`, `v` FROM `pconfig` WHERE `cat` = '%s' ",
1776                 dbesc('forumlist')
1777         );
1778
1779         // convert old forumlist addon entries in new config entries
1780         if (dbm::is_result($r)) {
1781                 foreach ($r as $rr) {
1782                         $uid = $rr['uid'];
1783                         $family = $rr['cat'];
1784                         $key = $rr['k'];
1785                         $value = $rr['v'];
1786
1787                         if ($key === 'randomise') {
1788                                 del_pconfig($uid,$family,$key);
1789                         }
1790
1791                         if ($key === 'show_on_profile') {
1792                                 if ($value) {
1793                                         set_pconfig($uid,feature,forumlist_profile,$value);
1794                                 }
1795
1796                                 del_pconfig($uid,$family,$key);
1797                         }
1798
1799                         if ($key === 'show_on_network') {
1800                                 if ($value) {
1801                                         set_pconfig($uid,feature,forumlist_widget,$value);
1802                                 }
1803
1804                                 del_pconfig($uid,$family,$key);
1805                         }
1806                 }
1807         }
1808
1809         set_config('system', 'maintenance', 0);
1810
1811         return UPDATE_SUCCESS;
1812
1813 }
1814
1815 function update_1202() {
1816         $r = q("UPDATE `user` SET `account-type` = %d WHERE `page-flags` IN (%d, %d)",
1817                 dbesc(ACCOUNT_TYPE_COMMUNITY), dbesc(PAGE_COMMUNITY), dbesc(PAGE_PRVGROUP));
1818 }