]> git.mxchange.org Git - friendica.git/blob - update.php
increase guid.guid field length for redmatrix-over-diaspora communications
[friendica.git] / update.php
1 <?php
2
3 define( 'UPDATE_VERSION' , 1171 );
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  */
36
37
38
39 function update_1000() {
40
41         q("ALTER TABLE `item` DROP `like`, DROP `dislike` ");
42
43         q("ALTER TABLE `item` ADD `verb` CHAR( 255 ) NOT NULL AFTER `body` ,
44                 ADD `object-type` CHAR( 255 ) NOT NULL AFTER `verb` ,
45                 ADD `object` TEXT NOT NULL AFTER `object-type` ");
46
47         q("ALTER TABLE `intro` ADD `duplex` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `knowyou` ");
48         q("ALTER TABLE `contact` ADD `duplex` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `rel` ");
49         q("ALTER TABLE `contact` CHANGE `issued-pubkey` `issued-pubkey` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL");  
50         q("ALTER TABLE `contact` ADD `term-date` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER `avatar-date`");
51 }
52
53 function update_1001() {
54         q("ALTER TABLE `item` ADD `wall` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `type` ");
55         q("ALTER TABLE `item` ADD INDEX ( `wall` )");  
56 }
57
58 function update_1002() {
59         q("ALTER TABLE `item` ADD `gravity` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `wall` ");
60 }
61
62 function update_1003() {
63         q("ALTER TABLE `contact` DROP `issued-pubkey` , DROP `ret-id` , DROP `ret-pubkey` ");
64         q("ALTER TABLE `contact` ADD `usehub` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `ret-aes`");
65         q("ALTER TABLE `contact` ADD `hub-verify` CHAR( 255 ) NOT NULL AFTER `usehub`");
66         q("ALTER TABLE `contact` ADD INDEX ( `uid` ) ,  ADD INDEX ( `self` ),  ADD INDEX ( `issued-id` ),  ADD INDEX ( `dfrn-id` )"); 
67         q("ALTER TABLE `contact` ADD INDEX ( `blocked` ),   ADD INDEX ( `readonly` )");
68 }
69
70 function update_1004() {
71         q("ALTER TABLE `contact` ADD `subhub` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `usehub`");
72 }
73
74 function update_1005() {
75
76         q("ALTER TABLE `user` ADD `spubkey` TEXT NOT NULL AFTER `prvkey` ,
77                 ADD `sprvkey` TEXT NOT NULL AFTER `spubkey`");
78
79 }
80
81 function update_1006() {
82
83         // create 's' keys for everybody that does not have one
84
85         $r = q("SELECT * FROM `user` WHERE `spubkey` = '' ");
86         if(count($r)) {
87                 foreach($r as $rr) {
88                         $sres=openssl_pkey_new(array('encrypt_key' => false ));
89                         $sprvkey = '';
90                         openssl_pkey_export($sres, $sprvkey);
91                         $spkey = openssl_pkey_get_details($sres);
92                         $spubkey = $spkey["key"];
93                         $r = q("UPDATE `user` SET `spubkey` = '%s', `sprvkey` = '%s'
94                                 WHERE `uid` = %d",
95                                 dbesc($spubkey),
96                                 dbesc($sprvkey),
97                                 intval($rr['uid'])
98                         );
99                 }
100         }
101 }
102
103 function update_1007() {
104         q("ALTER TABLE `user` ADD `page-flags` INT NOT NULL DEFAULT '0' AFTER `notify-flags`");
105         q("ALTER TABLE `user` ADD INDEX ( `nickname` )");  
106 }
107
108 function update_1008() {
109         q("ALTER TABLE `profile` ADD `with` TEXT NOT NULL AFTER `marital` ");
110 }
111
112 function update_1009() {
113         q("ALTER TABLE `user` ADD `allow_location` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `default-location` ");
114 }
115
116 function update_1010() {
117         q("ALTER TABLE `contact` ADD `lrdd` CHAR( 255 ) NOT NULL AFTER `url` ");
118 }
119
120 function update_1011() {
121         q("ALTER TABLE `contact` ADD `nick` CHAR( 255 ) NOT NULL AFTER `name` ");
122         $r = q("SELECT * FROM `contact` WHERE 1");
123         if(count($r)) {
124                 foreach($r as $rr) {
125                                 q("UPDATE `contact` SET `nick` = '%s' WHERE `id` = %d",
126                                         dbesc(basename($rr['url'])),
127                                         intval($rr['id'])
128                                 );
129                 }
130         }
131 }
132
133 function update_1012() {
134         q("ALTER TABLE `item` ADD `inform` MEDIUMTEXT NOT NULL AFTER `tag` ");
135 }
136
137 function update_1013() {
138         q("ALTER TABLE `item` ADD `target-type` CHAR( 255 ) NOT NULL 
139                 AFTER `object` , ADD `target` TEXT NOT NULL AFTER `target-type`");
140
141
142 function update_1014() {
143         require_once('include/Photo.php');
144         q("ALTER TABLE `contact` ADD `micro` TEXT NOT NULL AFTER `thumb` ");
145         $r = q("SELECT * FROM `photo` WHERE `scale` = 4");
146         if(count($r)) {
147                 foreach($r as $rr) {
148                         $ph = new Photo($rr['data']);
149                         if($ph->is_valid()) {
150                                 $ph->scaleImage(48);
151                                 $ph->store($rr['uid'],$rr['contact-id'],$rr['resource-id'],$rr['filename'],$rr['album'],6,(($rr['profile']) ? 1 : 0));
152                         }
153                 }
154         }
155         $r = q("SELECT * FROM `contact` WHERE 1");
156         if(count($r)) {
157                 foreach($r as $rr) {            
158                         if(stristr($rr['thumb'],'avatar'))
159                                 q("UPDATE `contact` SET `micro` = '%s' WHERE `id` = %d",
160                                         dbesc(str_replace('avatar','micro',$rr['thumb'])),
161                                         intval($rr['id']));
162                         else
163                                 q("UPDATE `contact` SET `micro` = '%s' WHERE `id` = %d",
164                                         dbesc(str_replace('5.jpg','6.jpg',$rr['thumb'])),
165                                         intval($rr['id']));
166                 }
167         }
168 }
169
170 function update_1015() {
171         q("ALTER TABLE `item` CHANGE `body` `body` mediumtext NOT NULL");
172 }
173
174 function update_1016() {
175         q("ALTER TABLE `user` ADD `openid` CHAR( 255 ) NOT NULL AFTER `email` ");
176 }
177
178 function update_1017() {
179
180         q(" CREATE TABLE IF NOT EXISTS `clients` (
181 `client_id` VARCHAR( 20 ) NOT NULL ,
182 `pw` VARCHAR( 20 ) NOT NULL ,
183 `redirect_uri` VARCHAR( 200 ) NOT NULL ,
184 PRIMARY KEY ( `client_id` )
185 ) ENGINE = MYISAM DEFAULT CHARSET=utf8 ");
186
187         q(" CREATE TABLE IF NOT EXISTS `tokens` (
188 `id` VARCHAR( 40 ) NOT NULL ,
189 `client_id` VARCHAR( 20 ) NOT NULL ,
190 `expires` INT NOT NULL ,
191 `scope` VARCHAR( 200 ) NOT NULL ,
192 PRIMARY KEY ( `id` )
193 ) ENGINE = MYISAM DEFAULT CHARSET=utf8 ");
194
195         q("CREATE TABLE IF NOT EXISTS `auth_codes` (
196 `id` VARCHAR( 40 ) NOT NULL ,
197 `client_id` VARCHAR( 20 ) NOT NULL ,
198 `redirect_uri` VARCHAR( 200 ) NOT NULL ,
199 `expires` INT NOT NULL ,
200 `scope` VARCHAR( 250 ) NOT NULL ,
201 PRIMARY KEY ( `id` )
202 ) ENGINE = MYISAM DEFAULT CHARSET=utf8 ");
203
204 }
205
206 function update_1018() {
207         q("CREATE TABLE IF NOT EXISTS `queue` (
208 `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
209 `cid` INT NOT NULL ,
210 `created` DATETIME NOT NULL ,
211 `last` DATETIME NOT NULL ,
212 `content` MEDIUMTEXT NOT NULL
213 ) ENGINE = MYISAM DEFAULT CHARSET=utf8 ");
214 }
215
216 function update_1019() {
217         q("ALTER TABLE `mail` DROP `delivered`");
218         q("ALTER TABLE `profile` ADD `showwith` TINYINT(1) NOT NULL DEFAULT '0' AFTER `marital` ");
219 }
220
221 function update_1020() {
222         q("ALTER TABLE `profile` DROP `showwith`");
223         q("ALTER TABLE `item` ADD `thr-parent` CHAR( 255 ) NOT NULL AFTER `parent-uri` ");
224 }
225
226 function update_1021() {
227         q("ALTER TABLE `profile_check` ADD `sec` CHAR( 255 ) NOT NULL AFTER `dfrn_id` ");
228         q("ALTER TABLE `profile_check` ADD `cid` INT(10) unsigned  NOT NULL DEFAULT '0' AFTER `uid`");
229         q("ALTER TABLE `item` ADD `private` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `deny_gid` ");
230 }
231
232 function update_1022() {
233         q("CREATE TABLE `pconfig` (
234                 `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
235                 `uid` INT NOT NULL DEFAULT '0',
236                 `cat` CHAR( 255 ) NOT NULL ,
237                 `k` CHAR( 255 ) NOT NULL ,
238                 `v` MEDIUMTEXT NOT NULL
239                 ) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci ");
240 }
241
242 function update_1023() {
243         q("ALTER TABLE `user` ADD `register_date` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER `timezone` ,
244         ADD `login_date` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER `register_date` ");
245 }
246
247 function update_1024() {
248         q("ALTER TABLE `profile` ADD `keywords` TEXT NOT NULL AFTER `religion` ");
249 }
250
251 function update_1025() {
252         q("ALTER TABLE `user` ADD `maxreq` int(11) NOT NULL DEFAULT '10' AFTER `pwdreset` ");
253 }
254
255 function update_1026() {
256         q("CREATE TABLE IF NOT EXISTS `hook` (
257         `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
258         `hook` CHAR( 255 ) NOT NULL ,
259         `file` CHAR( 255 ) NOT NULL ,
260         `function` CHAR( 255 ) NOT NULL
261         ) ENGINE = MYISAM DEFAULT CHARSET=utf8 ");
262 }
263
264
265 function update_1027() {
266         q("CREATE TABLE IF NOT EXISTS `addon` (
267         `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
268         `name` CHAR( 255 ) NOT NULL ,
269         `version` CHAR( 255 ) NOT NULL ,
270         `installed` TINYINT( 1 ) NOT NULL DEFAULT '0' 
271         ) ENGINE = MYISAM DEFAULT CHARSET=utf8 ");
272 }
273
274 function update_1028() {
275         q("ALTER TABLE `user` ADD `openidserver` text NOT NULL AFTER `deny_gid` ");
276 }
277
278 function update_1029() {
279         q("ALTER TABLE `contact` ADD `info` MEDIUMTEXT NOT NULL AFTER `reason` ");
280 }
281
282 function update_1030() {
283         q("ALTER TABLE `contact` ADD `bdyear` CHAR( 4 ) NOT NULL COMMENT 'birthday notify flag' AFTER `profile-id` ");
284
285         q("CREATE TABLE IF NOT EXISTS `event` (
286         `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
287         `uid` INT NOT NULL ,
288         `cid` INT NOT NULL ,
289         `created` DATETIME NOT NULL ,
290         `edited` DATETIME NOT NULL ,
291         `start` DATETIME NOT NULL ,
292         `finish` DATETIME NOT NULL ,
293         `desc` TEXT NOT NULL ,
294         `location` TEXT NOT NULL ,
295         `type` CHAR( 255 ) NOT NULL ,
296         `adjust` TINYINT( 1 ) NOT NULL DEFAULT '1',
297         `allow_cid` MEDIUMTEXT NOT NULL ,
298         `allow_gid` MEDIUMTEXT NOT NULL ,
299         `deny_cid` MEDIUMTEXT NOT NULL ,
300         `deny_gid` MEDIUMTEXT NOT NULL
301         ) ENGINE = MYISAM DEFAULT CHARSET=utf8 ");
302
303
304 }
305
306 function update_1031() {
307         // Repair any bad links that slipped into the item table
308         $r = q("SELECT `id`, `object` FROM `item` WHERE `object` != '' ");
309         if($r && count($r)) {
310                 foreach($r as $rr) {
311                         if(strstr($rr['object'],'type=&quot;http')) {
312                                 q("UPDATE `item` SET `object` = '%s' WHERE `id` = %d",
313                                         dbesc(str_replace('type=&quot;http','href=&quot;http',$rr['object'])),
314                                         intval($rr['id'])
315                                 );
316                         }
317                 }
318         }
319 }
320         
321 function update_1032() {
322         q("ALTER TABLE `profile` ADD `pdesc` CHAR( 255 ) NOT NULL AFTER `name` ");
323 }
324
325 function update_1033() {
326         q("CREATE TABLE IF NOT EXISTS `cache` (
327                 `k` CHAR( 255 ) NOT NULL PRIMARY KEY ,
328                 `v` TEXT NOT NULL,
329                 `updated` DATETIME NOT NULL
330                 ) ENGINE = MYISAM DEFAULT CHARSET=utf8 ");
331 }
332
333
334 function update_1034() {
335
336         // If you have any of these parent-less posts they can cause problems, and 
337         // we need to delete them. You can't see them anyway.
338         // Legitimate items will usually get re-created on the next 
339         // pull from the hub.
340         // But don't get rid of a post that may have just come in 
341         // and may not yet have the parent id set.
342
343         q("DELETE FROM `item` WHERE `parent` = 0 AND `created` < UTC_TIMESTAMP() - INTERVAL 2 MINUTE");
344
345 }
346
347
348 function update_1035() {
349
350         q("ALTER TABLE `contact` ADD `success_update` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER `last-update` ");
351
352 }
353
354 function update_1036() {
355
356         $r = dbq("SELECT * FROM `contact` WHERE `network` = 'dfrn' && `photo` LIKE '%include/photo%' ");
357         if(count($r)) {
358                 foreach($r as $rr) {
359                         q("UPDATE `contact` SET `photo` = '%s', `thumb` = '%s', `micro` = '%s' WHERE `id` = %d",
360                                 dbesc(str_replace('include/photo','photo',$rr['photo'])),
361                                 dbesc(str_replace('include/photo','photo',$rr['thumb'])),
362                                 dbesc(str_replace('include/photo','photo',$rr['micro'])),
363                                 intval($rr['id']));
364                 }
365         }
366 }
367
368 function update_1037() {
369
370         q("ALTER TABLE `contact` CHANGE `lrdd` `alias` CHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ");
371
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         if($r)
534                 q("ALTER TABLE `item` ADD INDEX ( `received` ) ");
535
536         $r = q("UPDATE `item` SET `received` = `edited` WHERE 1");
537 }
538
539 function update_1067() {
540         q("ALTER TABLE `ffinder` ADD `type` CHAR( 16 ) NOT NULL AFTER `id` ,
541         ADD `note` TEXT NOT NULL AFTER `type` ");
542 }
543
544 function update_1068() {
545         // 1067 was short-sighted. Undo it.
546         q("ALTER TABLE `ffinder` DROP `type` , DROP `note` ");
547
548         // and do this instead.
549
550         q("CREATE TABLE IF NOT EXISTS `fsuggest` (
551         `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
552         `uid` INT NOT NULL ,
553         `cid` INT NOT NULL ,
554         `name` CHAR( 255 ) NOT NULL ,
555         `url` CHAR( 255 ) NOT NULL ,
556         `photo` CHAR( 255 ) NOT NULL ,
557         `note` TEXT NOT NULL ,
558         `created` DATETIME NOT NULL 
559         ) ENGINE = MYISAM DEFAULT CHARSET=utf8");
560
561 }
562
563 function update_1069() {
564         q("ALTER TABLE `fsuggest` ADD `request` CHAR( 255 ) NOT NULL AFTER `url` ");
565         q("ALTER TABLE `fcontact` ADD `request` CHAR( 255 ) NOT NULL AFTER `photo` ");
566 }
567
568 // mail body needs to accomodate private photos
569
570 function update_1070() {
571         q("ALTER TABLE `mail` CHANGE `body` `body` MEDIUMTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ");
572 }
573
574 function update_1071() {
575         q("ALTER TABLE `photo` ADD INDEX ( `uid` ) ");
576         q("ALTER TABLE `photo` ADD INDEX ( `resource-id` ) ");
577         q("ALTER TABLE `photo` ADD INDEX ( `album` ) ");
578         q("ALTER TABLE `photo` ADD INDEX ( `scale` ) ");
579         q("ALTER TABLE `photo` ADD INDEX ( `profile` ) ");
580
581 }
582
583 function update_1072() {
584         q("ALTER TABLE `item` ADD `starred` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `visible` ");
585         q("ALTER TABLE `item` ADD INDEX ( `starred` ) ");
586 }
587
588 function update_1073() {
589         q("ALTER TABLE `contact` ADD `remote_self` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `self` ");
590 }
591
592 function update_1074() {
593         q("ALTER TABLE `user` ADD `hidewall` TINYINT( 1) NOT NULL DEFAULT '0' AFTER `blockwall` ");
594         $r = q("SELECT `uid` FROM `profile` WHERE `is-default` = 1 AND `hidewall` = 1");
595         if(count($r)) {
596                 foreach($r as $rr)
597                         q("UPDATE `user` SET `hidewall` = 1 WHERE `uid` = %d",
598                                 intval($rr['uid'])
599                         );
600         }
601         q("ALTER TABLE `profile` DROP `hidewall`");
602 }
603
604 function update_1075() {
605         q("ALTER TABLE `user` ADD `guid` CHAR( 16 ) NOT NULL AFTER `uid` ");
606         $r = q("SELECT `uid` FROM `user` WHERE 1");
607         if(count($r)) {
608                 foreach($r as $rr) {
609                         $found = true;
610                         do {
611                                 $guid = substr(random_string(),0,16);
612                                 $x = q("SELECT `uid` FROM `user` WHERE `guid` = '%s' LIMIT 1",
613                                         dbesc($guid)
614                                 );
615                                 if(! count($x))
616                                         $found = false;
617                         } while ($found == true );
618
619                         q("UPDATE `user` SET `guid` = '%s' WHERE `uid` = %d",
620                                 dbesc($guid),
621                                 intval($rr['uid'])
622                         );
623                 }
624         }
625 }
626
627 function update_1076() {
628         q("CREATE TABLE `guid` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
629                 `guid` CHAR( 16 ) NOT NULL , INDEX ( `guid` ) ) ENGINE = MYISAM ");
630
631 }
632
633 // There was a typo in 1076 so we'll try again in 1077 to make sure
634 // We'll also make it big enough to allow for future growth, I seriously 
635 // doubt Diaspora will be able to leave guids at 16 bytes,
636 // and we can also use the same structure for our own larger guids
637
638 function update_1077() {
639         q("CREATE TABLE IF NOT EXISTS `guid` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
640                 `guid` CHAR( 16 ) NOT NULL , INDEX ( `guid` ) ) ENGINE = MYISAM ");
641
642         q("ALTER TABLE `guid` CHANGE `guid` `guid` CHAR( 64 ) NOT NULL"); 
643 }
644
645 function update_1078() {
646         q("ALTER TABLE `item` ADD `guid` CHAR( 64 ) NOT NULL AFTER `id` , ADD INDEX ( `guid` ) ");
647 }
648
649 function update_1079() {
650         q("CREATE TABLE IF NOT EXISTS `sign` (
651         `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
652         `iid` INT UNSIGNED NOT NULL ,
653         `signed_text` MEDIUMTEXT NOT NULL ,
654         `signature` TEXT NOT NULL ,
655         `signer` CHAR( 255 ) NOT NULL ,
656         INDEX ( `iid` )
657         ) ENGINE = MYISAM ");
658
659         q("ALTER TABLE `fcontact` ADD `nick` CHAR( 255 ) NOT NULL ,
660         ADD `addr` CHAR( 255 ) NOT NULL ,
661         ADD `notify` CHAR( 255 ) NOT NULL ,
662         ADD `poll` CHAR( 255 ) NOT NULL ,
663         ADD `confirm` CHAR( 255 ) NOT NULL ,
664         ADD `priority` TINYINT( 1 ) NOT NULL ,
665         ADD `network` CHAR( 32 ) NOT NULL ,
666         ADD `alias` CHAR( 255 ) NOT NULL ,
667         ADD `pubkey` TEXT NOT NULL ,
668         ADD INDEX ( `addr` ) , 
669         ADD INDEX ( `network` ) ");
670
671 }
672
673 function update_1080() {
674         q("ALTER TABLE `fcontact` ADD `updated` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00'");
675 }
676
677 function update_1081() {
678         // there was a typo in update 1081 so it was corrected and moved up to 1082
679 }
680
681 function update_1082() {
682         q("ALTER TABLE `photo` ADD `guid` CHAR( 64 ) NOT NULL AFTER `contact-id`,
683                 ADD INDEX ( `guid` )  ");
684         // make certain the following code is only executed once
685         $r = q("select `id` from `photo` where `guid` != '' limit 1");
686         if($r && count($r))
687                 return;
688         $r = q("SELECT distinct(`resource-id`) FROM `photo` WHERE 1 group by `id`");
689         if(count($r)) {
690                 foreach($r as $rr) {
691                         $guid = get_guid();
692                         q("update `photo` set `guid` = '%s' where `resource-id` = '%s'",
693                                 dbesc($guid),
694                                 dbesc($rr['resource-id'])
695                         );
696                 }
697         }
698 }
699
700 function update_1083() {
701         q("CREATE TABLE IF NOT EXISTS `deliverq` (
702         `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
703         `cmd` CHAR( 32 ) NOT NULL ,
704         `item` INT NOT NULL ,
705         `contact` INT NOT NULL
706         ) ENGINE = MYISAM ");
707
708 }
709
710 function update_1084() {
711         q("ALTER TABLE `contact` ADD `attag` CHAR( 255 ) NOT NULL AFTER `nick` ");
712 }
713
714 function update_1085() {
715         q("CREATE TABLE IF NOT EXISTS `search` (
716         `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
717         `uid` INT NOT NULL ,
718         `term` CHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
719         INDEX ( `uid` ),
720         INDEX ( `term` )
721         ) ENGINE = MYISAM ");
722 }
723
724 function update_1086() {
725         q("ALTER TABLE `item` ADD `bookmark` tinyint(1) NOT NULL DEFAULT '0' AFTER `starred` ");
726 }
727
728 function update_1087() {
729         q("ALTER TABLE `item` ADD `commented` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER `edited` ");
730
731         $r = q("SELECT `id` FROM `item` WHERE `parent` = `id` ");
732         if(count($r)) {
733                 foreach($r as $rr) {
734                         $x = q("SELECT max(`created`) AS `cdate` FROM `item` WHERE `parent` = %d LIMIT 1",
735                                 intval($rr['id'])
736                         );
737                         if(count($x))
738                                 q("UPDATE `item` SET `commented` = '%s' WHERE `id` = %d",
739                                         dbesc($x[0]['cdate']),
740                                         intval($rr['id'])
741                                 );
742                 }
743         }
744 }
745
746 function update_1088() {
747         q("ALTER TABLE `user` ADD `account_expired` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `expire` ,
748                 ADD `account_expires_on` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER `account_expired` ,
749                 ADD `expire_notification_sent` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER `account_expires_on` ");
750 }
751
752 function update_1089() {
753         q("ALTER TABLE `user` ADD `blocktags` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `hidewall` ");
754 }
755
756 function update_1090() {
757         q("ALTER TABLE `contact` ADD `batch` char(255) NOT NULL AFTER `prvkey` ");
758
759         q("UPDATE `contact` SET `batch` = concat(substring_index(`url`,'/',3),'/receive/public') WHERE `network` = 'dspr' ");
760
761 }
762
763 function update_1091() {
764
765         // catch a few stragglers that may have crept in before we added this on remote connects
766         q("UPDATE `contact` SET `batch` = concat(substring_index(`url`,'/',3),'/receive/public') WHERE `network` = 'dspr' AND `batch` = '' ");
767         q("ALTER TABLE `queue` ADD `batch` TINYINT( 1 ) NOT NULL DEFAULT '0' ");
768         q("ALTER TABLE `fcontact` ADD `batch` char(255) NOT NULL AFTER `addr` ");
769
770 }
771
772 function update_1092() {
773         q("ALTER TABLE `user` ADD INDEX ( `login_date` ) ");
774         q("ALTER TABLE `user` ADD INDEX ( `account_expired` ) ");
775 }
776
777 function update_1093() {
778         q("CREATE TABLE IF NOT EXISTS `fserver` (
779         `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
780         `server` CHAR( 255 ) NOT NULL ,
781         `posturl` CHAR( 255 ) NOT NULL ,
782         `key` TEXT NOT NULL,
783         INDEX ( `server` )
784         ) ENGINE = MYISAM ");
785
786         q("ALTER TABLE `group` ADD `visible` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `uid` ");
787
788 }
789
790 function update_1094() {
791         q("ALTER TABLE `item` ADD `postopts` TEXT NOT NULL AFTER `target` ");
792 }
793
794 function update_1095() {
795         q("ALTER TABLE `contact` ADD `bd` DATE NOT NULL AFTER `bdyear` ");
796 }
797
798 function update_1096() {
799         q("ALTER TABLE `item` ADD `origin` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `deleted` , ADD INDEX ( `origin` ) ");
800 }
801
802 function update_1097() {
803         q("ALTER TABLE `queue` 
804                 ADD INDEX (`cid`), 
805                 ADD INDEX (`created`), 
806                 ADD INDEX (`last`), 
807                 ADD INDEX (`network`), 
808                 ADD INDEX (`batch`) 
809         ");
810 }
811
812 function update_1098() {
813         q("ALTER TABLE `contact` 
814                 ADD INDEX (`network`), 
815                 ADD INDEX (`name`), 
816                 ADD INDEX (`nick`), 
817                 ADD INDEX (`attag`), 
818                 ADD INDEX (`url`),
819                 ADD INDEX (`addr`), 
820                 ADD INDEX (`batch`) 
821         ");
822 }
823
824 function update_1099() {
825         q("CREATE TABLE IF NOT EXISTS `gcontact` (
826         `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
827         `name` CHAR( 255 ) NOT NULL ,
828         `url` CHAR( 255 ) NOT NULL ,
829         `nurl` CHAR( 255 ) NOT NULL ,
830         `photo` CHAR( 255 ) NOT NULL
831         ) ENGINE = MYISAM ");
832
833         q("CREATE TABLE IF NOT EXISTS `glink` (
834         `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
835         `cid` INT NOT NULL ,
836         `uid` INT NOT NULL ,
837         `gcid` INT NOT NULL,
838         `updated` DATETIME NOT NULL
839         ) ENGINE = MYISAM ");
840
841         q("ALTER TABLE `gcontact` ADD INDEX (`nurl`) ");
842         q("ALTER TABLE `glink` ADD INDEX (`cid`), ADD INDEX (`uid`), ADD INDEX (`gcid`), ADD INDEX (`updated`) ");
843
844         q("ALTER TABLE `contact` ADD `poco` TEXT NOT NULL AFTER `confirm` "); 
845
846 }
847
848 function update_1100() {
849         q("ALTER TABLE `contact` ADD `nurl` CHAR( 255 ) NOT NULL AFTER `url` ");
850         q("alter table contact add index (`nurl`) ");
851
852         require_once('include/text.php');
853
854         $r = q("select id, url from contact where url != '' and nurl = '' ");
855         if(count($r)) {
856                 foreach($r as $rr) {
857                         q("update contact set nurl = '%s' where id = %d",
858                                 dbesc(normalise_link($rr['url'])),
859                                 intval($rr['id'])
860                         ); 
861                 }
862         }
863 }
864
865
866 function update_1101() {
867         q("CREATE TABLE IF NOT EXISTS `gcign` (
868         `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
869         `uid` INT NOT NULL ,
870         `gcid` INT NOT NULL
871         ) ENGINE = MYISAM ");
872
873         q("ALTER TABLE `gcign` ADD INDEX (`uid`), ADD INDEX (`gcid`) ");
874 }
875
876 function update_1102() {
877         q("ALTER TABLE `clients` ADD `name` TEXT NULL DEFAULT NULL AFTER `redirect_uri` "); 
878         q("ALTER TABLE `clients` ADD `icon` TEXT NULL DEFAULT NULL AFTER `name` "); 
879         q("ALTER TABLE `clients` ADD `uid` INT NOT NULL DEFAULT 0 AFTER `icon` "); 
880
881         q("ALTER TABLE `tokens` ADD `secret` TEXT NOT NULL AFTER `id` "); 
882         q("ALTER TABLE `tokens` ADD `uid` INT NOT NULL AFTER `scope` "); 
883 }
884
885
886 function update_1103() {
887 //      q("ALTER TABLE `item` ADD INDEX ( `wall` ) ");
888         q("ALTER TABLE `item` ADD FULLTEXT ( `tag` ) "); 
889         q("ALTER TABLE `contact` ADD INDEX ( `pending` ) ");
890         q("ALTER TABLE `user` ADD INDEX ( `hidewall` ) ");
891         q("ALTER TABLE `user` ADD INDEX ( `blockwall` ) ");
892         q("ALTER TABLE `user` ADD INDEX ( `blocked` ) ");
893         q("ALTER TABLE `user` ADD INDEX ( `verified` ) ");
894
895 }
896
897 function update_1104() {
898         q("ALTER TABLE `item` ADD `forum_mode` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `origin` , ADD INDEX ( `forum_mode` ) ");
899
900 }
901
902 function update_1105() {
903         q("ALTER TABLE `mail` ADD `convid` INT NOT NULL AFTER `contact-id` ");
904         q("ALTER TABLE `mail` ADD `guid` CHAR( 64 ) NOT NULL AFTER `uid` ");
905
906         q("CREATE TABLE IF NOT EXISTS `conv` (
907         `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
908         `guid` CHAR( 64 ) NOT NULL ,
909         `recips` MEDIUMTEXT NOT NULL ,
910         `uid` INT NOT NULL
911         ) ENGINE = MYISAM ");
912 }
913
914
915 function update_1106() {
916         q("ALTER TABLE `item` ADD INDEX ( `author-link` ) ");
917
918 }
919
920 function update_1107() {
921         q("ALTER TABLE `item` ADD INDEX ( `bookmark` ) ");
922
923 }
924
925 function update_1108() { 
926         q("ALTER TABLE `contact` ADD `hidden` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `writable` ,
927 ADD INDEX ( `hidden` ) ");
928
929 }
930
931 function update_1109() {
932         q("ALTER TABLE `conv` ADD `creator` CHAR( 255 ) NOT NULL ,
933                 ADD `created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
934                 ADD `updated` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
935                 ADD `subject` MEDIUMTEXT NOT NULL,
936                 ADD INDEX ( `created` ), ADD INDEX ( `updated` ) ");
937 }
938
939 function update_1110() {
940         q("ALTER TABLE `mail` ADD `reply` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `seen`,
941                 ADD INDEX ( `reply` ), ADD INDEX ( `uid` ), ADD INDEX ( `guid` ), ADD INDEX ( `seen` ),
942                 ADD INDEX ( `uri` ), ADD INDEX ( `parent-uri`), ADD INDEX ( `created` ), ADD INDEX ( `convid` ) ");
943
944 }
945
946 function update_1111() {
947         q("ALTER TABLE `gcontact` ADD `connect` CHAR( 255 ) NOT NULL ");
948 }
949
950
951 function update_1112() {
952
953         q("CREATE TABLE IF NOT EXISTS `notify` (
954 `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
955 `type` INT( 11 ) NOT NULL ,
956 `name` CHAR( 255 ) NOT NULL ,
957 `url` CHAR( 255 ) NOT NULL ,
958 `photo` CHAR( 255 ) NOT NULL ,
959 `date` DATETIME NOT NULL ,
960 `msg` MEDIUMTEXT NOT NULL ,
961 `uid` INT NOT NULL ,
962 `link` CHAR( 255 ) NOT NULL ,
963 `seen` TINYINT( 1 ) NOT NULL DEFAULT '0'
964 ) ENGINE = MYISAM ");
965
966         q("ALTER TABLE `notify` ADD INDEX ( `type` ), ADD INDEX ( `uid`), ADD INDEX (`seen`), ADD INDEX (`date`) ");
967
968 }
969
970 function update_1113() {
971         q("ALTER TABLE `notify` ADD `verb` CHAR( 255 ) NOT NULL ,
972 ADD `otype` CHAR( 16 ) NOT NULL");
973 }
974
975 function update_1114() {
976         q("CREATE TABLE IF NOT EXISTS `item_id` (
977 `iid` INT NOT NULL ,
978 `uid` INT NOT NULL ,
979 `face` CHAR( 255 ) NOT NULL ,
980 `dspr` CHAR( 255 ) NOT NULL ,
981 `twit` CHAR( 255 ) NOT NULL ,
982 `stat` CHAR( 255 ) NOT NULL ,
983 PRIMARY KEY ( `iid` ),
984 INDEX ( `uid` ),
985 INDEX ( `face` ),
986 INDEX ( `dspr` ),
987 INDEX ( `twit` ),
988 INDEX ( `stat` )
989 ) ENGINE = MYISAM ");
990
991 }
992
993 function update_1115() {
994         q("ALTER TABLE `item` ADD `moderated` 
995                 TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `pubmail`, 
996                 ADD INDEX (`moderated`) ");
997 }
998
999 function update_1116() {
1000         //typo! corrected update was rolled forward
1001 }
1002
1003 function update_1117() {
1004 q("create table if not exists `manage` (
1005 `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
1006 `uid` INT NOT NULL ,
1007 `mid` INT NOT NULL,
1008 INDEX ( `uid` ),
1009 INDEX ( `mid` )
1010 ) ENGINE = MYISAM ");
1011
1012 }
1013
1014 function update_1118() {
1015         // rolled forward
1016 }
1017
1018 function update_1119() {
1019 q("ALTER TABLE `contact` ADD `closeness` TINYINT( 2 ) NOT NULL DEFAULT '99' AFTER `reason` , ADD INDEX (`closeness`) ");
1020 q("update contact set closeness = 0 where self = 1");
1021 q("ALTER TABLE `item` ADD `spam` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `visible` , ADD INDEX (`spam`) ");
1022 }
1023
1024
1025 function update_1120() {
1026
1027         // item table update from 1119 did not get into database.sql file.
1028         // might be missing on new installs. We'll check.
1029
1030         $r = q("describe item");
1031         if($r && count($r)) {
1032                 foreach($r as $rr)
1033                         if($rr['Field'] == 'spam')
1034                                 return;
1035         }
1036         q("ALTER TABLE `item` ADD `spam` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `visible` , ADD INDEX (`spam`) ");
1037
1038 }
1039
1040 function update_1121() {
1041         q("CREATE TABLE IF NOT EXISTS `poll_result` (
1042         `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
1043         `poll_id` INT NOT NULL ,
1044         `choice` INT NOT NULL ,
1045         INDEX ( `poll_id` ),
1046         INDEX ( `choice` )
1047         ) ENGINE = MYISAM ");
1048
1049         q("CREATE TABLE IF NOT EXISTS `poll` (
1050         `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
1051         `uid` INT NOT NULL ,
1052         `q0` MEDIUMTEXT NOT NULL ,
1053         `q1` MEDIUMTEXT NOT NULL ,
1054         `q2` MEDIUMTEXT NOT NULL ,
1055         `q3` MEDIUMTEXT NOT NULL ,
1056         `q4` MEDIUMTEXT NOT NULL ,
1057         `q5` MEDIUMTEXT NOT NULL ,
1058         `q6` MEDIUMTEXT NOT NULL ,
1059         `q7` MEDIUMTEXT NOT NULL ,
1060         `q8` MEDIUMTEXT NOT NULL ,
1061         `q9` MEDIUMTEXT NOT NULL ,
1062         INDEX ( `uid` )
1063         ) ENGINE = MYISAM ");
1064
1065 }
1066
1067 function update_1122() {
1068 q("ALTER TABLE `notify` ADD `hash` CHAR( 64 ) NOT NULL AFTER `id` ,
1069 ADD INDEX ( `hash` ) ");
1070 }
1071
1072 function update_1123() {
1073 set_config('system','allowed_themes','dispy,quattro,testbubble,vier,darkbubble,darkzero,duepuntozero,greenzero,purplezero,quattro-green,slackr');
1074 }
1075
1076 function update_1124() {
1077 q("alter table item add index (`author-name`) ");
1078 }
1079
1080 function update_1125() {
1081   q("CREATE TABLE IF NOT EXISTS `notify-threads` (
1082   `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
1083   `notify-id` INT NOT NULL,
1084   `master-parent-item` INT( 10 ) unsigned NOT NULL DEFAULT '0',
1085   `parent-item` INT( 10 ) unsigned NOT NULL DEFAULT '0',
1086   `receiver-uid` INT NOT NULL,
1087   INDEX ( `master-parent-item` ),
1088   INDEX ( `receiver-uid` )
1089   ) ENGINE = MyISAM DEFAULT CHARSET=utf8");
1090 }
1091
1092 function update_1126() {
1093         q("ALTER TABLE `mailacct` ADD `action` INT NOT NULL AFTER `pass`,
1094                 ADD `movetofolder` CHAR(255) NOT NULL AFTER `action`");
1095 }
1096
1097 function update_1127() {
1098         q("CREATE TABLE IF NOT EXISTS `spam` (
1099   `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
1100   `uid` INT NOT NULL,
1101   `spam` INT NOT NULL DEFAULT '0',
1102   `ham` INT NOT NULL DEFAULT '0',
1103   `term` CHAR(255) NOT NULL,
1104   INDEX ( `uid` ),
1105   INDEX ( `spam` ),
1106   INDEX ( `ham` ),
1107   INDEX ( `term` )
1108   ) ENGINE = MyISAM DEFAULT CHARSET=utf8");
1109 }
1110
1111
1112 function update_1128() {
1113         q("alter table spam add `date` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER `term` ");
1114 }
1115
1116 function update_1129() {
1117         q("ALTER TABLE `notify` ADD `parent` INT NOT NULL AFTER `link` , ADD INDEX ( `parent` ), ADD INDEX ( `link` ), ADD INDEX ( `otype` ) ");
1118 }
1119
1120 function update_1130() {
1121         q("ALTER TABLE `item` ADD `file` MEDIUMTEXT NOT NULL AFTER `inform`, ADD FULLTEXT KEY (`file`) ");
1122 }
1123
1124 function update_1131() {
1125         q("ALTER TABLE `contact` ADD `forum` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `writable` , ADD INDEX ( `forum` ) ");
1126 }
1127
1128
1129 function update_1132() {
1130         q("CREATE TABLE IF NOT EXISTS `userd` (
1131 `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
1132 `username` CHAR( 255 ) NOT NULL,
1133 INDEX ( `username` )
1134 ) ENGINE = MYISAM ");
1135
1136 }
1137
1138 function update_1133() {
1139 q("ALTER TABLE `user` ADD `unkmail` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `blocktags` , ADD INDEX ( `unkmail` ) ");
1140 q("ALTER TABLE `user` ADD `cntunkmail` INT NOT NULL DEFAULT '10' AFTER `unkmail` , ADD INDEX ( `cntunkmail` ) ");
1141 q("ALTER TABLE `mail` ADD `unknown` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `replied` , ADD INDEX ( `unknown` ) ");
1142 }
1143
1144 function update_1134() {
1145         // faulty update merged forward
1146         // had a hardwired tablename of 'friendica' which isn't the right name on most systems
1147 }
1148
1149 function update_1135() {
1150         //there can't be indexes with more than 1000 bytes in mysql, 
1151         //so change charset to be smaller
1152         q("ALTER TABLE `config` CHANGE `cat` `cat` CHAR( 255 ) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL ,
1153 CHANGE `k` `k` CHAR( 255 ) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL"); 
1154         
1155         //same thing for pconfig
1156         q("ALTER TABLE `pconfig` CHANGE `cat` `cat` CHAR( 255 ) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL ,
1157         CHANGE `k` `k` CHAR( 255 ) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL"); 
1158         // faulty update merged forward. Bad update in 1134 caused duplicate k,cat pairs
1159         // these have to be cleared before the unique keys can be added.        
1160 }
1161
1162 function update_1136() {
1163
1164         $arr = array();
1165
1166         // order in reverse so that we save the newest entry
1167
1168         $r = q("select * from config where 1 order by id desc");
1169         if(count($r)) {
1170                 foreach($r as $rr) {
1171                         $found = false;
1172                         foreach($arr as $x) {
1173                                 if($x['cat'] == $rr['cat'] && $x['k'] == $rr['k']) {
1174                                         $found = true;
1175                                         q("delete from config where id = %d",
1176                                                 intval($rr['id'])
1177                                         );
1178                                 }
1179                         }
1180                         if(! $found) {
1181                                 $arr[] = $rr;
1182                         }
1183                 }
1184         }
1185                         
1186         $arr = array();
1187         $r = q("select * from pconfig where 1 order by id desc");
1188         if(count($r)) {
1189                 foreach($r as $rr) {
1190                         $found = false;
1191                         foreach($arr as $x) {
1192                                 if($x['uid'] == $rr['uid'] && $x['cat'] == $rr['cat'] && $x['k'] == $rr['k']) {
1193                                         $found = true;
1194                                         q("delete from pconfig where id = %d",
1195                                                 intval($rr['id'])
1196                                         );
1197                                 }
1198                         }
1199                         if(! $found) {
1200                                 $arr[] = $rr;
1201                         }
1202                 }
1203         }
1204         q("ALTER TABLE `config` ADD UNIQUE `access` ( `cat` , `k` ) "); 
1205         q("ALTER TABLE `pconfig` ADD UNIQUE `access` ( `uid` , `cat` , `k` )"); 
1206
1207 }
1208
1209
1210 function update_1137() {
1211         q("alter table item_id DROP `face` , DROP `dspr` , DROP `twit` , DROP `stat` ");
1212         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`) ");
1213 }
1214
1215 function update_1138() {
1216         q("alter table contact add archive tinyint(1) not null default '0' after hidden, add index (archive)");
1217 }
1218
1219 function update_1139() {
1220         $r = q("alter table user add account_removed tinyint(1) not null default '0' after expire, add index(account_removed) ");
1221         if(! $r)
1222                 return UPDATE_FAILED ;
1223         return UPDATE_SUCCESS ;
1224 }
1225
1226 function update_1140() {
1227         $r = q("alter table addon add hidden tinyint(1) not null default '0' after installed, add index(hidden) ");
1228         if(! $r)
1229                 return UPDATE_FAILED ;
1230         return UPDATE_SUCCESS ;
1231 }
1232
1233 function update_1141() {
1234         $r = q("alter table glink add zcid int(11) not null after gcid, add index(zcid) ");
1235         if(! $r)
1236                 return UPDATE_FAILED ;
1237         return UPDATE_SUCCESS ;
1238 }
1239
1240
1241 function update_1142() {
1242         $r = q("alter table user add service_class char(32) not null after expire_notification_sent, add index(service_class) ");
1243         if(! $r)
1244                 return UPDATE_FAILED ;
1245         return UPDATE_SUCCESS ;
1246 }
1247
1248 function update_1143() {
1249         $r = q("alter table user add def_gid int(11) not null default '0' after service_class");
1250         if(! $r)
1251                 return UPDATE_FAILED ;
1252         return UPDATE_SUCCESS ;
1253 }
1254
1255 function update_1144() {
1256         $r = q("alter table contact add prv tinyint(1) not null default '0' after forum");
1257         if(! $r)
1258                 return UPDATE_FAILED ;
1259         return UPDATE_SUCCESS ;
1260 }
1261
1262 function update_1145() {
1263         $r = q("alter table profile add howlong datetime not null default '0000-00-00 00:00:00' after `with`");
1264         if(! $r)
1265                 return UPDATE_FAILED ;
1266         return UPDATE_SUCCESS ;
1267 }
1268
1269 function update_1146() {
1270         $r = q("alter table profile add hometown char(255) not null after `country-name`, add index ( `hometown` ) ");
1271         if(! $r)
1272                 return UPDATE_FAILED ;
1273         return UPDATE_SUCCESS ;
1274 }
1275
1276 function update_1147() {
1277         $r1 = q("ALTER TABLE `sign` ALTER `iid` SET DEFAULT '0'");
1278         $r2 = q("ALTER TABLE `sign` ADD `retract_iid` INT(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `iid`");
1279         $r3 = q("ALTER TABLE `sign` ADD INDEX ( `retract_iid` )");  
1280         if((! $r1) || (! $r2) || (! $r3))
1281                 return UPDATE_FAILED ;
1282         return UPDATE_SUCCESS ;
1283 }
1284
1285 function update_1148() {
1286         $r = q("ALTER TABLE photo ADD type CHAR(128) NOT NULL DEFAULT 'image/jpeg' AFTER filename");
1287         if (!$r)
1288                 return UPDATE_FAILED;
1289         return UPDATE_SUCCESS;
1290 }
1291
1292
1293 function update_1149() {
1294         $r1 = q("ALTER TABLE profile ADD likes text NOT NULL after prv_keywords");
1295         $r2 = q("ALTER TABLE profile ADD dislikes text NOT NULL after likes");
1296         if (! ($r1 && $r2))
1297                 return UPDATE_FAILED;
1298         return UPDATE_SUCCESS;
1299 }
1300
1301
1302 function update_1150() {
1303         $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 ) ");
1304         if(! $r)
1305                 return UPDATE_FAILED;
1306         return UPDATE_SUCCESS;
1307 }
1308
1309
1310 function update_1151() {
1311         $r = q("CREATE TABLE IF NOT EXISTS locks (
1312                         id INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
1313                         name CHAR( 128 ) NOT NULL ,
1314                         locked TINYINT( 1 ) NOT NULL DEFAULT '0'
1315                   ) ENGINE = MYISAM DEFAULT CHARSET=utf8 ");
1316         if (!$r)
1317                 return UPDATE_FAILED;
1318         return UPDATE_SUCCESS;
1319 }
1320
1321 function update_1152() {
1322         $r = q("CREATE TABLE IF NOT EXISTS `term` (
1323                 `tid` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
1324                 `oid` INT UNSIGNED NOT NULL ,
1325                 `otype` TINYINT( 3 ) UNSIGNED NOT NULL ,
1326                 `type` TINYINT( 3 ) UNSIGNED NOT NULL ,
1327                 `term` CHAR( 255 ) NOT NULL ,
1328                 `url` CHAR( 255 ) NOT NULL, 
1329                 KEY `oid` ( `oid` ),
1330                 KEY `otype` ( `otype` ),
1331                 KEY `type`  ( `type` ),
1332                 KEY `term`  ( `term` )
1333                 ) ENGINE = MYISAM DEFAULT CHARSET=utf8 ");
1334         if (!$r)
1335                 return UPDATE_FAILED;
1336         return UPDATE_SUCCESS;
1337 }
1338
1339 function update_1153() {
1340         $r = q("ALTER TABLE `hook` ADD `priority` INT(11) UNSIGNED NOT NULL DEFAULT '0'");
1341         
1342         if(!$r) return UPDATE_FAILED;
1343         return UPDATE_SUCCESS;
1344 }
1345
1346 function update_1154() {
1347         $r = q("ALTER TABLE `event` ADD `ignore` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0' AFTER `adjust` , ADD INDEX ( `ignore` )");
1348
1349         if(!$r) return UPDATE_FAILED;
1350         return UPDATE_SUCCESS;
1351 }
1352
1353 function update_1155() {
1354         $r1 = q("ALTER TABLE `item_id` DROP PRIMARY KEY");
1355         $r2 = q("ALTER TABLE `item_id` ADD `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST");
1356         $r3 = q("ALTER TABLE `item_id` ADD INDEX ( `iid` ) ");
1357
1358         if($r1 && $r2 && $r3)
1359                 return UPDATE_SUCCESS;
1360
1361         return UPDATE_FAILED;
1362 }
1363
1364 function update_1156() {
1365         $r = q("ALTER TABLE `photo` ADD `datasize` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `width` ,
1366 ADD INDEX ( `datasize` ) ");
1367
1368         if(!$r) return UPDATE_FAILED;
1369         return UPDATE_SUCCESS;
1370 }
1371
1372 function update_1157() {
1373         $r = q("CREATE TABLE  IF NOT EXISTS `dsprphotoq` (
1374           `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
1375           `uid` int(11) NOT NULL,
1376           `msg` mediumtext NOT NULL,
1377           `attempt` tinyint(4) NOT NULL,
1378           PRIMARY KEY (`id`)
1379           ) ENGINE=MyISAM DEFAULT CHARSET=utf8"
1380         );
1381
1382         if($r)
1383                 return UPDATE_SUCCESS;
1384 }
1385
1386 function update_1158() {
1387         set_config('system', 'maintenance', 1);
1388
1389         // Wait for 15 seconds for current requests to
1390         // clear before locking up the database
1391         sleep(15);
1392
1393         $r = q("CREATE INDEX event_id ON item(`event-id`)");
1394         set_config('system', 'maintenance', 0);
1395
1396         if($r)
1397                 return UPDATE_SUCCESS;
1398
1399         return UPDATE_FAILED;
1400 }
1401
1402 function update_1159() {
1403         $r = q("ALTER TABLE `term` ADD `aid` int(10) unsigned NOT NULL DEFAULT '0',
1404                 ADD `uid` int(10) unsigned NOT NULL DEFAULT '0',
1405                 ADD INDEX (`uid`),
1406                 ADD INDEX (`aid`)");
1407
1408         if(!$r)
1409                 return UPDATE_FAILED;
1410
1411         return UPDATE_SUCCESS;
1412 }
1413
1414 function update_1160() {
1415         set_config('system', 'maintenance', 1);
1416
1417         // Wait for 15 seconds for current requests to
1418         // clear before locking up the database
1419         sleep(15);
1420
1421         $r = q("ALTER TABLE `item` ADD `mention` TINYINT(1) NOT NULL DEFAULT '0', ADD INDEX (`mention`)");
1422         set_config('system', 'maintenance', 0);
1423
1424         if(!$r)
1425                 return UPDATE_FAILED;
1426
1427         return UPDATE_SUCCESS;
1428 }
1429
1430 function update_1161() {
1431         $r = q("ALTER TABLE `pconfig` ADD INDEX (`cat`)");
1432
1433         if(!$r)
1434                 return UPDATE_FAILED;
1435
1436         return UPDATE_SUCCESS;
1437 }
1438
1439 function update_1162() {
1440         require_once('include/tags.php');
1441         update_items();
1442
1443         return UPDATE_SUCCESS;
1444 }
1445
1446 function update_1163() {
1447         set_config('system', 'maintenance', 1);
1448
1449         $r = q("ALTER TABLE `item` ADD `network` char(32) NOT NULL,
1450                 ADD INDEX (`network`)");
1451
1452         set_config('system', 'maintenance', 0);
1453
1454         if(!$r)
1455                 return UPDATE_FAILED;
1456
1457         return UPDATE_SUCCESS;
1458 }
1459 function update_1164() {
1460         set_config('system', 'maintenance', 1);
1461
1462         $r = q("UPDATE `item` SET `network`='%s' WHERE `contact-id` IN (SELECT `id` FROM`contact` WHERE `network` = '' AND `contact`.`uid` = `item`.`uid`)",
1463                 NETWORK_DFRN);
1464
1465         $r = q("UPDATE `item` SET `network`='%s' WHERE `contact-id` IN (SELECT `id` FROM`contact` WHERE `network` = '%s' AND `contact`.`uid` = `item`.`uid`)",
1466                 NETWORK_DFRN, NETWORK_DFRN);
1467
1468         $r = q("UPDATE `item` SET `network`='%s' WHERE `contact-id` IN (SELECT `id` FROM`contact` WHERE `network` = '%s' AND `contact`.`uid` = `item`.`uid`)",
1469                 NETWORK_ZOT, NETWORK_ZOT);
1470
1471         $r = q("UPDATE `item` SET `network`='%s' WHERE `contact-id` IN (SELECT `id` FROM`contact` WHERE `network` = '%s' AND `contact`.`uid` = `item`.`uid`)",
1472                 NETWORK_OSTATUS, NETWORK_OSTATUS);
1473
1474         $r = q("UPDATE `item` SET `network`='%s' WHERE `contact-id` IN (SELECT `id` FROM`contact` WHERE `network` = '%s' AND `contact`.`uid` = `item`.`uid`)",
1475                 NETWORK_FEED, NETWORK_FEED);
1476
1477         $r = q("UPDATE `item` SET `network`='%s' WHERE `contact-id` IN (SELECT `id` FROM`contact` WHERE `network` = '%s' AND `contact`.`uid` = `item`.`uid`)",
1478                 NETWORK_DIASPORA, NETWORK_DIASPORA);
1479
1480         $r = q("UPDATE `item` SET `network`='%s' WHERE `contact-id` IN (SELECT `id` FROM`contact` WHERE `network` = '%s' AND `contact`.`uid` = `item`.`uid`)",
1481                 NETWORK_MAIL, NETWORK_MAIL);
1482
1483         $r = q("UPDATE `item` SET `network`='%s' WHERE `contact-id` IN (SELECT `id` FROM`contact` WHERE `network` = '%s' AND `contact`.`uid` = `item`.`uid`)",
1484                 NETWORK_MAIL2, NETWORK_MAIL2);
1485
1486         $r = q("UPDATE `item` SET `network`='%s' WHERE `contact-id` IN (SELECT `id` FROM`contact` WHERE `network` = '%s' AND `contact`.`uid` = `item`.`uid`)",
1487                 NETWORK_FACEBOOK, NETWORK_FACEBOOK);
1488
1489         $r = q("UPDATE `item` SET `network`='%s' WHERE `contact-id` IN (SELECT `id` FROM`contact` WHERE `network` = '%s' AND `contact`.`uid` = `item`.`uid`)",
1490                 NETWORK_LINKEDIN, NETWORK_LINKEDIN);
1491
1492         $r = q("UPDATE `item` SET `network`='%s' WHERE `contact-id` IN (SELECT `id` FROM`contact` WHERE `network` = '%s' AND `contact`.`uid` = `item`.`uid`)",
1493                 NETWORK_XMPP, NETWORK_XMPP);
1494
1495         $r = q("UPDATE `item` SET `network`='%s' WHERE `contact-id` IN (SELECT `id` FROM`contact` WHERE `network` = '%s' AND `contact`.`uid` = `item`.`uid`)",
1496                 NETWORK_MYSPACE, NETWORK_MYSPACE);
1497
1498         $r = q("UPDATE `item` SET `network`='%s' WHERE `contact-id` IN (SELECT `id` FROM`contact` WHERE `network` = '%s' AND `contact`.`uid` = `item`.`uid`)",
1499                 NETWORK_GPLUS, NETWORK_GPLUS);
1500
1501         $r = q("UPDATE `item` SET `network`='%s' WHERE `contact-id` IN (SELECT `id` FROM`contact` WHERE `network` = '%s' AND `contact`.`uid` = `item`.`uid`)",
1502                 NETWORK_PUMPIO, NETWORK_PUMPIO);
1503
1504         $r = q("UPDATE `item` SET `network`='%s' WHERE `contact-id` IN (SELECT `id` FROM`contact` WHERE `network` = '%s' AND `contact`.`uid` = `item`.`uid`)",
1505                 NETWORK_TWITTER, NETWORK_TWITTER);
1506
1507         set_config('system', 'maintenance', 0);
1508
1509         return UPDATE_SUCCESS;
1510 }
1511
1512 function update_1165() {
1513         $r = q("CREATE TABLE IF NOT EXISTS `push_subscriber` (
1514                         `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
1515                     `uid` INT NOT NULL,
1516                 `callback_url` CHAR( 255 ) NOT NULL,
1517             `topic` CHAR( 255 ) NOT NULL,
1518             `nickname` CHAR( 255 ) NOT NULL,
1519             `push` INT NOT NULL,
1520             `last_update` DATETIME NOT NULL,
1521             `secret` CHAR( 255 ) NOT NULL
1522                   ) ENGINE = MYISAM DEFAULT CHARSET=utf8 ");
1523         if (!$r)
1524                 return UPDATE_FAILED;
1525
1526         return UPDATE_SUCCESS;
1527 }
1528
1529 function update_1166() {
1530         $r = q("CREATE TABLE IF NOT EXISTS `unique_contacts` (
1531                         `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
1532                         `url` CHAR(255) NOT NULL,
1533                         `nick` CHAR(255) NOT NULL,
1534                         `name` CHAR(255) NOT NULL,
1535                         `avatar` CHAR(255) NOT NULL,
1536                         INDEX (`url`)
1537                   ) ENGINE = MYISAM DEFAULT CHARSET=utf8 ");
1538         if (!$r)
1539                 return UPDATE_FAILED;
1540
1541         return UPDATE_SUCCESS;
1542 }
1543
1544 function update_1167() {
1545         $r = q("ALTER TABLE `contact` ADD `notify_new_posts` TINYINT(1) NOT NULL DEFAULT '0'");
1546         if (!$r)
1547                 return UPDATE_FAILED;
1548
1549         return UPDATE_SUCCESS;
1550 }
1551
1552 function update_1168() {
1553         $r = q("ALTER TABLE `contact` ADD `fetch_further_information` TINYINT(1) NOT NULL DEFAULT '0'");
1554         if (!$r)
1555                 return UPDATE_FAILED;
1556
1557         return UPDATE_SUCCESS;
1558 }
1559
1560 function update_1169() {
1561         $r = q("CREATE TABLE IF NOT EXISTS `thread` (
1562                   `iid` int(10) unsigned NOT NULL DEFAULT '0',
1563                   `uid` int(10) unsigned NOT NULL DEFAULT '0',
1564                   `contact-id` int(11) unsigned NOT NULL DEFAULT '0',
1565                   `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
1566                   `edited` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
1567                   `commented` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
1568                   `received` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
1569                   `changed` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
1570                   `wall` tinyint(1) NOT NULL DEFAULT '0',
1571                   `private` tinyint(1) NOT NULL DEFAULT '0',
1572                   `pubmail` tinyint(1) NOT NULL DEFAULT '0',
1573                   `moderated` tinyint(1) NOT NULL DEFAULT '0',
1574                   `visible` tinyint(1) NOT NULL DEFAULT '0',
1575                   `spam` tinyint(1) NOT NULL DEFAULT '0',
1576                   `starred` tinyint(1) NOT NULL DEFAULT '0',
1577                   `bookmark` tinyint(1) NOT NULL DEFAULT '0',
1578                   `unseen` tinyint(1) NOT NULL DEFAULT '1',
1579                   `deleted` tinyint(1) NOT NULL DEFAULT '0',
1580                   `origin` tinyint(1) NOT NULL DEFAULT '0',
1581                   `forum_mode` tinyint(1) NOT NULL DEFAULT '0',
1582                   `mention` tinyint(1) NOT NULL DEFAULT '0',
1583                   `network` char(32) NOT NULL,
1584                   PRIMARY KEY (`iid`),
1585                   KEY `created` (`created`),
1586                   KEY `commented` (`commented`),
1587                   KEY `uid_network_commented` (`uid`,`network`,`commented`),
1588                   KEY `uid_network_created` (`uid`,`network`,`created`),
1589                   KEY `uid_contactid_commented` (`uid`,`contact-id`,`commented`),
1590                   KEY `uid_contactid_created` (`uid`,`contact-id`,`created`),
1591                   KEY `wall_private_received` (`wall`,`private`,`received`),
1592                   KEY `uid_created` (`uid`,`created`),
1593                   KEY `uid_commented` (`uid`,`commented`)
1594                 ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;");
1595         if (!$r)
1596                 return UPDATE_FAILED;
1597
1598         proc_run('php',"include/threadupdate.php");
1599
1600         return UPDATE_SUCCESS;
1601 }
1602
1603 function update_1170() {
1604         $r = q("ALTER TABLE `guid` CHANGE `guid` `guid` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL");
1605         if (!$r)
1606                 return UPDATE_FAILED;
1607         return UPDATE_SUCCESS;
1608 }