+ DBA::escape(User::ACCOUNT_TYPE_COMMUNITY),
+ DBA::escape(User::PAGE_FLAGS_COMMUNITY),
+ DBA::escape(User::PAGE_FLAGS_PRVGROUP)
+ );
+}
+
+function update_1244()
+{
+ // Sets legacy_password for all legacy hashes
+ DBA::update('user', ['legacy_password' => true], ['SUBSTR(password, 1, 4) != "$2y$"']);
+
+ // All legacy hashes are re-hashed using the new secure hashing function
+ $stmt = DBA::select('user', ['uid', 'password'], ['legacy_password' => true]);
+ while ($user = DBA::fetch($stmt)) {
+ DBA::update('user', ['password' => User::hashPassword($user['password'])], ['uid' => $user['uid']]);
+ }
+
+ // Logged in users are forcibly logged out
+ DBA::delete('session', ['1 = 1']);
+
+ return Update::SUCCESS;
+}
+
+function update_1245()
+{
+ $rino = Config::get('system', 'rino_encrypt');
+
+ if (!$rino) {
+ return Update::SUCCESS;
+ }
+
+ Config::set('system', 'rino_encrypt', 1);
+
+ return Update::SUCCESS;
+}
+
+function update_1247()
+{
+ // Removing hooks with the old name
+ DBA::e("DELETE FROM `hook`
+WHERE `hook` LIKE 'plugin_%'");
+
+ // Make sure we install the new renamed ones
+ Addon::reload();
+}
+
+function update_1260()
+{
+ Config::set('system', 'maintenance', 1);
+ Config::set(
+ 'system',
+ 'maintenance_reason',
+ L10n::t(
+ '%s: Updating author-id and owner-id in item and thread table. ',
+ DateTimeFormat::utcNow().' '.date('e')
+ )
+ );
+
+ $items = DBA::p("SELECT `id`, `owner-link`, `owner-name`, `owner-avatar`, `network` FROM `item`
+ WHERE `owner-id` = 0 AND `owner-link` != ''");
+ while ($item = DBA::fetch($items)) {
+ $contact = ['url' => $item['owner-link'], 'name' => $item['owner-name'],
+ 'photo' => $item['owner-avatar'], 'network' => $item['network']];
+ $cid = Contact::getIdForURL($item['owner-link'], 0, false, $contact);
+ if (empty($cid)) {
+ continue;
+ }
+ Item::update(['owner-id' => $cid], ['id' => $item['id']]);
+ }
+ DBA::close($items);
+
+ DBA::e("UPDATE `thread` INNER JOIN `item` ON `thread`.`iid` = `item`.`id`
+ SET `thread`.`owner-id` = `item`.`owner-id` WHERE `thread`.`owner-id` = 0");
+
+ $items = DBA::p("SELECT `id`, `author-link`, `author-name`, `author-avatar`, `network` FROM `item`
+ WHERE `author-id` = 0 AND `author-link` != ''");
+ while ($item = DBA::fetch($items)) {
+ $contact = ['url' => $item['author-link'], 'name' => $item['author-name'],
+ 'photo' => $item['author-avatar'], 'network' => $item['network']];
+ $cid = Contact::getIdForURL($item['author-link'], 0, false, $contact);
+ if (empty($cid)) {
+ continue;
+ }
+ Item::update(['author-id' => $cid], ['id' => $item['id']]);
+ }
+ DBA::close($items);
+
+ DBA::e("UPDATE `thread` INNER JOIN `item` ON `thread`.`iid` = `item`.`id`
+ SET `thread`.`author-id` = `item`.`author-id` WHERE `thread`.`author-id` = 0");
+
+ Config::set('system', 'maintenance', 0);
+ return Update::SUCCESS;
+}
+
+function update_1261()
+{
+ // This fixes the results of an issue in the develop branch of 2018-05.
+ DBA::update('contact', ['blocked' => false, 'pending' => false], ['uid' => 0, 'blocked' => true, 'pending' => true]);
+ return Update::SUCCESS;
+}
+
+function update_1278()
+{
+ Config::set('system', 'maintenance', 1);
+ Config::set(
+ 'system',
+ 'maintenance_reason',
+ L10n::t(
+ '%s: Updating post-type.',
+ DateTimeFormat::utcNow().' '.date('e')
+ )
+ );
+
+ Item::update(['post-type' => Item::PT_PAGE], ['bookmark' => true]);
+ Item::update(['post-type' => Item::PT_PERSONAL_NOTE], ['type' => 'note']);
+
+ Config::set('system', 'maintenance', 0);
+
+ return Update::SUCCESS;
+}
+
+function update_1288()
+{
+ // Updates missing `uri-id` values
+
+ DBA::e("UPDATE `item-activity` INNER JOIN `item` ON `item`.`iaid` = `item-activity`.`id` SET `item-activity`.`uri-id` = `item`.`uri-id` WHERE `item-activity`.`uri-id` IS NULL OR `item-activity`.`uri-id` = 0");
+ DBA::e("UPDATE `item-content` INNER JOIN `item` ON `item`.`icid` = `item-content`.`id` SET `item-content`.`uri-id` = `item`.`uri-id` WHERE `item-content`.`uri-id` IS NULL OR `item-content`.`uri-id` = 0");
+
+ return Update::SUCCESS;
+}
+
+// Post-update script of PR 5751
+function update_1298()
+{
+ $keys = ['gender', 'marital', 'sexual'];
+ foreach ($keys as $translateKey) {
+ $allData = DBA::select('profile', ['id', $translateKey]);
+ $allLangs = L10n::getAvailableLanguages();
+ $success = 0;
+ $fail = 0;
+ foreach ($allData as $key => $data) {
+ $toTranslate = $data[$translateKey];
+ if ($toTranslate != '') {
+ foreach ($allLangs as $key => $lang) {
+ $a = new \stdClass();
+ $a->strings = [];
+
+ // First we get the the localizations
+ if (file_exists("view/lang/$lang/strings.php")) {
+ include "view/lang/$lang/strings.php";
+ }
+ if (file_exists("addon/morechoice/lang/$lang/strings.php")) {
+ include "addon/morechoice/lang/$lang/strings.php";
+ }
+
+ $localizedStrings = $a->strings;
+ unset($a);
+
+ $key = array_search($toTranslate, $localizedStrings);
+ if ($key !== false) {
+ break;
+ }
+
+ // defaulting to empty string
+ $key = '';
+ }
+
+ if ($key == '') {
+ $fail++;
+ } else {
+ DBA::update('profile', [$translateKey => $key], ['id' => $data['id']]);
+ Logger::notice('Updated contact', ['action' => 'update', 'contact' => $data['id'], "$translateKey" => $key,
+ 'was' => $data[$translateKey]]);
+ Worker::add(PRIORITY_LOW, 'ProfileUpdate', $data['id']);
+ Contact::updateSelfFromUserID($data['id']);
+ GContact::updateForUser($data['id']);
+ $success++;
+ }
+ }
+ }
+
+ Logger::notice($translateKey . " fix completed", ['action' => 'update', 'translateKey' => $translateKey, 'Success' => $success, 'Fail' => $fail ]);
+ }
+ return Update::SUCCESS;