X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=update.php;h=81e5be8d649875be0c76d4810003ba5cc909e72f;hb=107cc6f297b8af88b2fd3d4b382e6cc80edfec69;hp=e46a91107d044b188e61027e19204fd819b2242b;hpb=07ef1edfd6baefa10c22c44a4f85bad3d0034e8b;p=friendica.git diff --git a/update.php b/update.php index e46a91107d..81e5be8d64 100644 --- a/update.php +++ b/update.php @@ -41,6 +41,7 @@ */ use Friendica\Core\Logger; +use Friendica\Core\Storage\Capability\ICanReadFromStorage; use Friendica\Core\Update; use Friendica\Core\Worker; use Friendica\Database\Database; @@ -54,7 +55,7 @@ use Friendica\Model\Notification; use Friendica\Model\Photo; use Friendica\Model\Post; use Friendica\Model\Profile; -use Friendica\Model\Storage; +use Friendica\Security\PermissionSet\Repository\PermissionSet; use Friendica\Worker\Delivery; // Post-update script of PR 5751 @@ -182,7 +183,7 @@ function update_1330() // set the name of the storage instead of the classpath as config if (!empty($currStorage)) { - /** @var Storage\IStorage $currStorage */ + /** @var ICanReadFromStorage $currStorage */ if (!DI::config()->set('storage', 'name', $currStorage::getName())) { return Update::FAILED; } @@ -192,8 +193,8 @@ function update_1330() } // Update attachments and photos - if (!DBA::p("UPDATE `photo` SET `photo`.`backend-class` = SUBSTR(`photo`.`backend-class`, 25) WHERE `photo`.`backend-class` LIKE 'Friendica\\\Model\\\Storage\\\%' ESCAPE '|'") || - !DBA::p("UPDATE `attach` SET `attach`.`backend-class` = SUBSTR(`attach`.`backend-class`, 25) WHERE `attach`.`backend-class` LIKE 'Friendica\\\Model\\\Storage\\\%' ESCAPE '|'")) { + if (!DBA::e("UPDATE `photo` SET `photo`.`backend-class` = SUBSTR(`photo`.`backend-class`, 25) WHERE `photo`.`backend-class` LIKE 'Friendica\\\Model\\\Storage\\\%' ESCAPE '|'") || + !DBA::e("UPDATE `attach` SET `attach`.`backend-class` = SUBSTR(`attach`.`backend-class`, 25) WHERE `attach`.`backend-class` LIKE 'Friendica\\\Model\\\Storage\\\%' ESCAPE '|'")) { return Update::FAILED; }; @@ -206,7 +207,7 @@ function update_1332() $profiles = DBA::select('profile', [], $condition); while ($profile = DBA::fetch($profiles)) { - DI::profileField()->migrateFromLegacyProfile($profile); + Profile::migrate($profile); } DBA::close($profiles); @@ -240,9 +241,12 @@ function pre_update_1348() update_1348(); - DBA::e("DELETE FROM `auth_codes` WHERE NOT `client_id` IN (SELECT `client_id` FROM `clients`)"); - DBA::e("DELETE FROM `tokens` WHERE NOT `client_id` IN (SELECT `client_id` FROM `clients`)"); - + if (DBStructure::existsTable('auth_codes') && DBStructure::existsTable('clients')) { + DBA::e("DELETE FROM `auth_codes` WHERE NOT `client_id` IN (SELECT `client_id` FROM `clients`)"); + } + if (DBStructure::existsTable('tokens') && DBStructure::existsTable('clients')) { + DBA::e("DELETE FROM `tokens` WHERE NOT `client_id` IN (SELECT `client_id` FROM `clients`)"); + } return Update::SUCCESS; } @@ -391,7 +395,7 @@ function pre_update_1364() return Update::FAILED; } - if (!DBA::e("DELETE FROM `clients` WHERE NOT `uid` IN (SELECT `uid` FROM `user`)")) { + if (DBStructure::existsTable('clients') && !DBA::e("DELETE FROM `clients` WHERE NOT `uid` IN (SELECT `uid` FROM `user`)")) { return Update::FAILED; } @@ -443,7 +447,7 @@ function pre_update_1364() return Update::FAILED; } - if (!DBA::e("DELETE FROM `profile_check` WHERE NOT `uid` IN (SELECT `uid` FROM `user`)")) { + if (DBStructure::existsTable('profile_check') && !DBA::e("DELETE FROM `profile_check` WHERE NOT `uid` IN (SELECT `uid` FROM `user`)")) { return Update::FAILED; } @@ -463,7 +467,7 @@ function pre_update_1364() return Update::FAILED; } - if (!DBA::e("DELETE FROM `tokens` WHERE NOT `uid` IN (SELECT `uid` FROM `user`)")) { + if (DBStructure::existsTable('tokens') && !DBA::e("DELETE FROM `tokens` WHERE NOT `uid` IN (SELECT `uid` FROM `user`)")) { return Update::FAILED; } @@ -495,7 +499,7 @@ function pre_update_1364() return Update::FAILED; } - if (!DBA::e("DELETE FROM `profile_check` WHERE NOT `cid` IN (SELECT `id` FROM `contact`)")) { + if (DBStructure::existsTable('profile_check') && !DBA::e("DELETE FROM `profile_check` WHERE NOT `cid` IN (SELECT `id` FROM `contact`)")) { return Update::FAILED; } @@ -694,16 +698,30 @@ function update_1396() 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; + if (DBStructure::existsColumn('item-content', ['raw-body'])) { + 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; + } + } else { + if (!DBA::e("INSERT IGNORE INTO `post-content`(`uri-id`, `title`, `content-warning`, `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`.`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; } @@ -826,7 +844,7 @@ function update_1400() function pre_update_1403() { // Necessary before a primary key change - if (!DBA::e("DROP TABLE `parsed_url`")) { + if (DBStructure::existsTable('parsed_url') && !DBA::e("DROP TABLE `parsed_url`")) { return Update::FAILED; } @@ -964,3 +982,91 @@ function update_1429() return Update::SUCCESS; } + +function update_1434() +{ + $name = DI::config()->get('storage', 'name'); + + // in case of an empty config, set "Database" as default storage backend + if (empty($name)) { + DI::config()->set('storage', 'name', \Friendica\Core\Storage\Type\Database::getName()); + } + + // In case of a Using deprecated storage class value, set the right name for it + if (stristr($name, 'Friendica\Model\Storage\\')) { + DI::config()->set('storage', 'name', substr($name, 24)); + } + + return Update::SUCCESS; +} + +function update_1438() +{ + DBA::update('photo', ['photo-type' => Photo::USER_AVATAR], ['profile' => true]); + DBA::update('photo', ['photo-type' => Photo::CONTACT_AVATAR], ["NOT `profile` AND NOT `contact-id` IS NULL AND `contact-id` != ?", 0]); + DBA::update('photo', ['photo-type' => Photo::DEFAULT], ["NOT `profile` AND (`contact-id` IS NULL OR `contact-id` = ?) AND `photo-type` IS NULL AND `album` != ?", 0, Photo::CONTACT_PHOTOS]); +} + +function update_1439() +{ + $intros = DBA::select('intro', ['id', 'fid'], ["NOT `fid` IS NULL AND `fid` != ?", 0]); + while ($intro = DBA::fetch($intros)) { + $fcontact = DBA::selectFirst('fcontact', ['url'], ['id' => $intro['fid']]); + if (!empty($fcontact['url'])) { + $id = Contact::getIdForURL($fcontact['url']); + if (!empty($id)) { + DBA::update('intro',['suggest-cid' => $id], ['id' => $intro['id']]); + } + } + } + DBA::close($intros); +} + +function update_1440() +{ + // Fix wrong public permissionset + DBA::p("UPDATE `profile_field` SET `psid` = ? WHERE psid IN (SELECT `id` FROM `permissionset` WHERE `id` != ? AND `allow_cid` = '' AND `allow_gid` = '' AND `deny_cid` = '' AND `deny_gid` = '')", PermissionSet::PUBLIC, PermissionSet::PUBLIC); + DBA::delete('permissionset', ["`id` != ? AND `allow_cid` = '' AND `allow_gid` = '' AND `deny_cid` = '' AND `deny_gid` = ''", PermissionSet::PUBLIC]); + + return Update::SUCCESS; +} + +function update_1441() +{ + $languages = DI::l10n()->getAvailableLanguages(); + + $albums = [Photo::PROFILE_PHOTOS]; + foreach ($languages as $language) { + $albums[] = DI::l10n()->withLang($language)->t(Photo::PROFILE_PHOTOS); + } + $albums = array_unique($albums); + + Photo::update(['photo-type' => Photo::USER_AVATAR], ['album' => $albums]); + + return Update::SUCCESS; +} + +function update_1442() +{ + // transform blocked intros into ignored intros + DBA::update('intro', ['ignore' => 1, 'blocked' => 0], ['blocked' => 1]); + + return Update::SUCCESS; +} + +/** + * A bug in Contact\User::updateByContactUpdate prevented any update to the user-contact table since the rows have been + * created in version 1435. This version fixes this bug but the user-contact rows are outdated, we need to regenerate + * them. + */ +function update_1444() +{ + DBA::e('TRUNCATE TABLE `user-contact`'); + + $contacts = DBA::select('contact', [], ["`uid` != ?", 0]); + while ($contact = DBA::fetch($contacts)) { + Contact\User::insertForContactArray($contact); + } + + return Update::SUCCESS; +}