+
+function update_1357()
+{
+ if (!DBA::e("UPDATE `contact` SET `failed` = true WHERE `success_update` < `failure_update` AND `failed` IS NULL")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("UPDATE `contact` SET `failed` = false WHERE `success_update` > `failure_update` AND `failed` IS NULL")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("UPDATE `contact` SET `failed` = false WHERE `updated` > `failure_update` AND `failed` IS NULL")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("UPDATE `contact` SET `failed` = false WHERE `last-item` > `failure_update` AND `failed` IS NULL")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("UPDATE `gserver` SET `failed` = true WHERE `last_contact` < `last_failure` AND `failed` IS NULL")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("UPDATE `gserver` SET `failed` = false WHERE `last_contact` > `last_failure` AND `failed` IS NULL")) {
+ return Update::FAILED;
+ }
+
+ return Update::SUCCESS;
+}
+
+function pre_update_1358()
+{
+ if (!DBA::e("DELETE FROM `contact-relation` WHERE NOT `relation-cid` IN (SELECT `id` FROM `contact`) OR NOT `cid` IN (SELECT `id` FROM `contact`)")) {
+ return Update::FAILED;
+ }
+
+ return Update::SUCCESS;
+}
+
+function pre_update_1363()
+{
+ Photo::delete(["`contact-id` != ? AND NOT `contact-id` IN (SELECT `id` FROM `contact`)", 0]);
+ return Update::SUCCESS;
+}
+
+function pre_update_1364()
+{
+ if (!DBA::e("DELETE FROM `2fa_recovery_codes` WHERE NOT `uid` IN (SELECT `uid` FROM `user`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `2fa_app_specific_password` WHERE NOT `uid` IN (SELECT `uid` FROM `user`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `attach` WHERE NOT `uid` IN (SELECT `uid` FROM `user`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `clients` WHERE NOT `uid` IN (SELECT `uid` FROM `user`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `conv` WHERE NOT `uid` IN (SELECT `uid` FROM `user`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `fsuggest` WHERE NOT `uid` IN (SELECT `uid` FROM `user`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `group` WHERE NOT `uid` IN (SELECT `uid` FROM `user`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `intro` WHERE NOT `uid` IN (SELECT `uid` FROM `user`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `manage` WHERE NOT `uid` IN (SELECT `uid` FROM `user`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `manage` WHERE NOT `mid` IN (SELECT `uid` FROM `user`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `mail` WHERE NOT `uid` IN (SELECT `uid` FROM `user`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `mailacct` WHERE NOT `uid` IN (SELECT `uid` FROM `user`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `notify` WHERE NOT `uid` IN (SELECT `uid` FROM `user`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `openwebauth-token` WHERE NOT `uid` IN (SELECT `uid` FROM `user`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `pconfig` WHERE NOT `uid` IN (SELECT `uid` FROM `user`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `profile` WHERE NOT `uid` IN (SELECT `uid` FROM `user`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `profile_check` WHERE NOT `uid` IN (SELECT `uid` FROM `user`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `profile_field` WHERE NOT `uid` IN (SELECT `uid` FROM `user`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `push_subscriber` WHERE NOT `uid` IN (SELECT `uid` FROM `user`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `register` WHERE NOT `uid` IN (SELECT `uid` FROM `user`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `search` WHERE NOT `uid` IN (SELECT `uid` FROM `user`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `tokens` WHERE NOT `uid` IN (SELECT `uid` FROM `user`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `user-contact` WHERE NOT `uid` IN (SELECT `uid` FROM `user`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `user-item` WHERE NOT `uid` IN (SELECT `uid` FROM `user`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `notify-threads` WHERE NOT `receiver-uid` IN (SELECT `uid` FROM `user`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `event` WHERE NOT `cid` IN (SELECT `id` FROM `contact`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `fsuggest` WHERE NOT `cid` IN (SELECT `id` FROM `contact`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `group_member` WHERE NOT `contact-id` IN (SELECT `id` FROM `contact`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `intro` WHERE NOT `contact-id` IN (SELECT `id` FROM `contact`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `participation` WHERE NOT `cid` IN (SELECT `id` FROM `contact`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `profile_check` WHERE NOT `cid` IN (SELECT `id` FROM `contact`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `user-contact` WHERE NOT `cid` IN (SELECT `id` FROM `contact`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `participation` WHERE NOT `fid` IN (SELECT `id` FROM `fcontact`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `group_member` WHERE NOT `gid` IN (SELECT `id` FROM `group`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `gserver-tag` WHERE NOT `gserver-id` IN (SELECT `id` FROM `gserver`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `participation` WHERE NOT `iid` IN (SELECT `id` FROM `item`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `user-item` WHERE NOT `iid` IN (SELECT `id` FROM `item`)")) {
+ return Update::FAILED;
+ }
+
+ return Update::SUCCESS;
+}
+
+function pre_update_1365()
+{
+ if (!DBA::e("DELETE FROM `notify-threads` WHERE NOT `notify-id` IN (SELECT `id` FROM `notify`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `thread` WHERE NOT `iid` IN (SELECT `id` FROM `item`)")) {
+ return Update::FAILED;
+ }
+
+ return Update::SUCCESS;
+}
+
+function update_1375()
+{
+ if (!DBA::e("UPDATE `item` SET `thr-parent` = `parent-uri`, `thr-parent-id` = `parent-uri-id` WHERE `thr-parent` = ''")) {
+ return Update::FAILED;
+ }
+
+ return Update::SUCCESS;
+}
+
+function pre_update_1376()
+{
+ // Insert a user with uid=0
+ DBStructure::checkInitialValues();
+
+ if (!DBA::e("DELETE FROM `item` WHERE NOT `uid` IN (SELECT `uid` FROM `user`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `event` WHERE NOT `uid` IN (SELECT `uid` FROM `user`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `thread` WHERE NOT `uid` IN (SELECT `uid` FROM `user`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `permissionset` WHERE NOT `uid` IN (SELECT `uid` FROM `user`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `openwebauth-token` WHERE NOT `uid` IN (SELECT `uid` FROM `user`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `post-category` WHERE NOT `uid` IN (SELECT `uid` FROM `user`)")) {
+ return Update::FAILED;
+ }
+
+ Photo::delete(["NOT `uid` IN (SELECT `uid` FROM `user`)"]);
+
+ if (!DBA::e("DELETE FROM `contact` WHERE NOT `uid` IN (SELECT `uid` FROM `user`)")) {
+ return Update::FAILED;
+ }
+
+ return Update::SUCCESS;
+}
+
+function pre_update_1377()
+{
+ DBStructure::checkInitialValues();
+
+ if (!DBA::e("DELETE FROM `item` WHERE NOT `author-id` IN (SELECT `id` FROM `contact`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `item` WHERE NOT `owner-id` IN (SELECT `id` FROM `contact`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("UPDATE `item` SET `contact-id` = `owner-id` WHERE NOT `contact-id` IN (SELECT `id` FROM `contact`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `thread` WHERE NOT `author-id` IN (SELECT `id` FROM `contact`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `thread` WHERE NOT `owner-id` IN (SELECT `id` FROM `contact`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("UPDATE `thread` SET `contact-id` = `owner-id` WHERE NOT `contact-id` IN (SELECT `id` FROM `contact`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("UPDATE `notify` SET `uri-id` = NULL WHERE `uri-id` = 0")) {
+ return Update::FAILED;
+ }
+
+ if (DBStructure::existsTable('diaspora-interaction') && !DBA::e("DELETE FROM `diaspora-interaction` WHERE `uri-id` NOT IN (SELECT `id` FROM `item-uri`)")) {
+ return Update::FAILED;
+ }
+
+ if (DBStructure::existsTable('item-activity') && !DBA::e("DELETE FROM `item-activity` WHERE `uri-id` NOT IN (SELECT `id` FROM `item-uri`)")) {
+ return Update::FAILED;
+ }
+
+ if (DBStructure::existsTable('item-content') && !DBA::e("DELETE FROM `item-content` WHERE `uri-id` NOT IN (SELECT `id` FROM `item-uri`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `notify` WHERE `uri-id` NOT IN (SELECT `id` FROM `item-uri`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("UPDATE `notify` SET `parent-uri-id` = NULL WHERE `parent-uri-id` = 0")) {
+ return Update::FAILED;
+ }
+ if (!DBA::e("DELETE FROM `notify` WHERE `parent-uri-id` NOT IN (SELECT `id` FROM `item-uri`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("UPDATE `notify-threads` SET `master-parent-uri-id` = NULL WHERE `master-parent-uri-id` = 0")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `notify-threads` WHERE `master-parent-uri-id` NOT IN (SELECT `id` FROM `item-uri`)")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("DELETE FROM `notify-threads` WHERE `master-parent-item` NOT IN (SELECT `id` FROM `item`)")) {
+ return Update::FAILED;
+ }
+
+ return Update::SUCCESS;
+}
+
+function update_1380()
+{
+ if (!DBA::e("UPDATE `notify` INNER JOIN `item` ON `item`.`id` = `notify`.`iid` SET `notify`.`uri-id` = `item`.`uri-id` WHERE `notify`.`uri-id` IS NULL AND `notify`.`otype` IN (?, ?)",
+ Notification\ObjectType::ITEM, Notification\ObjectType::PERSON)) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("UPDATE `notify` INNER JOIN `item` ON `item`.`id` = `notify`.`parent` SET `notify`.`parent-uri-id` = `item`.`uri-id` WHERE `notify`.`parent-uri-id` IS NULL AND `notify`.`otype` IN (?, ?)",
+ Notification\ObjectType::ITEM, Notification\ObjectType::PERSON)) {
+ return Update::FAILED;
+ }
+
+ return Update::SUCCESS;
+}
+
+function pre_update_1395()
+{
+ if (DBStructure::existsTable('post-user') && !DBA::e("DROP TABLE `post-user`")) {
+ return Update::FAILED;
+ }
+ return Update::SUCCESS;
+}
+
+function update_1395()
+{
+ if (!DBA::e("INSERT INTO `post-user`(`id`, `uri-id`, `uid`, `contact-id`, `unseen`, `origin`, `psid`)
+ SELECT `id`, `uri-id`, `uid`, `contact-id`, `unseen`, `origin`, `psid` FROM `item`
+ ON DUPLICATE KEY UPDATE `contact-id` = `item`.`contact-id`, `unseen` = `item`.`unseen`, `origin` = `item`.`origin`, `psid` = `item`.`psid`")) {
+ return Update::FAILED;
+ }
+
+ if (!DBA::e("INSERT INTO `post-user`(`uri-id`, `uid`, `hidden`, `notification-type`)
+ SELECT `uri-id`, `user-item`.`uid`, `hidden`,`notification-type` FROM `user-item`
+ INNER JOIN `item` ON `item`.`id` = `user-item`.`iid`
+ ON DUPLICATE KEY UPDATE `hidden` = `user-item`.`hidden`, `notification-type` = `user-item`.`notification-type`")) {
+ return Update::FAILED;
+ }
+ return Update::SUCCESS;
+}
+
+function update_1396()
+{
+ if (!DBStructure::existsTable('item-content')) {
+ return Update::SUCCESS;
+ }
+
+ if (!DBA::e("INSERT IGNORE INTO `post-content`(`uri-id`, `title`, `content-warning`, `body`, `raw-body`,
+ `location`, `coord`, `language`, `app`, `rendered-hash`, `rendered-html`,
+ `object-type`, `object`, `target-type`, `target`, `resource-id`, `plink`)
+ SELECT `item-content`.`uri-id`, `item-content`.`title`, `item-content`.`content-warning`,
+ `item-content`.`body`, `item-content`.`raw-body`, `item-content`.`location`, `item-content`.`coord`,
+ `item-content`.`language`, `item-content`.`app`, `item-content`.`rendered-hash`,
+ `item-content`.`rendered-html`, `item-content`.`object-type`, `item-content`.`object`,
+ `item-content`.`target-type`, `item-content`.`target`, `item`.`resource-id`, `item-content`.`plink`
+ FROM `item-content` INNER JOIN `item` ON `item`.`uri-id` = `item-content`.`uri-id`")) {
+ return Update::FAILED;
+ }
+ return Update::SUCCESS;
+}
\ No newline at end of file