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