]> git.mxchange.org Git - friendica.git/blobdiff - update.php
Changes:
[friendica.git] / update.php
index 356877ff9b0d2c94a0cbd3e425c508cdccd92de5..65f8bd2d755fa1f095b9416fdd308a8250c8a699 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2010-2023, the Friendica project
+ * @copyright Copyright (C) 2010-2024, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
@@ -49,7 +49,6 @@ use Friendica\Core\Update;
 use Friendica\Core\Worker;
 use Friendica\Database\Database;
 use Friendica\Database\DBA;
-use Friendica\Database\DBStructure;
 use Friendica\DI;
 use Friendica\Model\Contact;
 use Friendica\Model\Item;
@@ -59,8 +58,10 @@ use Friendica\Model\Photo;
 use Friendica\Model\Post;
 use Friendica\Model\Profile;
 use Friendica\Model\User;
+use Friendica\Protocol\Activity;
 use Friendica\Protocol\Delivery;
 use Friendica\Security\PermissionSet\Repository\PermissionSet;
+use Friendica\Util\DateTimeFormat;
 
 // Post-update script of PR 5751
 function update_1298()
@@ -78,7 +79,7 @@ function update_1298()
                                        $a = new \stdClass();
                                        $a->strings = [];
 
-                                       // First we get the the localizations
+                                       // First we get the localizations
                                        if (file_exists('view/lang/$lang/strings.php')) {
                                                include 'view/lang/$lang/strings.php';
                                        }
@@ -314,33 +315,6 @@ function update_1351()
 
        return Update::SUCCESS;
 }
-
-function pre_update_1354()
-{
-       if (DBStructure::existsColumn('contact', ['ffi_keyword_blacklist'])
-               && !DBStructure::existsColumn('contact', ['ffi_keyword_denylist'])
-               && !DBA::e("ALTER TABLE `contact` CHANGE `ffi_keyword_blacklist` `ffi_keyword_denylist` text null")) {
-               return Update::FAILED;
-       }
-       return Update::SUCCESS;
-}
-
-function update_1354()
-{
-       if (DBStructure::existsColumn('contact', ['ffi_keyword_blacklist'])
-               && DBStructure::existsColumn('contact', ['ffi_keyword_denylist'])) {
-               if (!DBA::e("UPDATE `contact` SET `ffi_keyword_denylist` = `ffi_keyword_blacklist`")) {
-                       return Update::FAILED;
-               }
-
-               // When the data had been copied then the main task is done.
-               // Having the old field removed is only beauty but not crucial.
-               // So we don't care if this was successful or not.
-               DBA::e("ALTER TABLE `contact` DROP `ffi_keyword_blacklist`");
-       }
-       return Update::SUCCESS;
-}
-
 function update_1357()
 {
        if (!DBA::e("UPDATE `contact` SET `failed` = true WHERE `success_update` < `failure_update` AND `failed` IS NULL")) {
@@ -1148,6 +1122,10 @@ function update_1502()
 
 function update_1505()
 {
+       if (!DBStructure::existsTable('config')) {
+               return Update::SUCCESS;
+       }
+
        $conditions = [
                "((`cat`  = ?) AND ((`k` LIKE ?) OR (`k` = ?) OR (`k` LIKE ?) OR (`k` = ?))) OR " .
                "((`cat` != ?) AND  (`k` LIKE ?)) OR " .
@@ -1175,3 +1153,233 @@ function update_1505()
 
        return DBA::delete('config', $conditions) ? Update::SUCCESS : Update::FAILED;
 }
+
+function update_1508()
+{
+       $config = DBA::selectToArray('config');
+
+       $newConfig = DI::config()->beginTransaction();
+
+       foreach ($config as $entry) {
+               $newConfig->set($entry['cat'], $entry['k'], $entry['v']);
+       }
+
+       $newConfig->commit();
+
+       return Update::SUCCESS;
+}
+
+function update_1509()
+{
+       $addons = DBA::selectToArray('addon');
+
+       $newConfig = DI::config()->beginTransaction();
+
+       foreach ($addons as $addon) {
+               $newConfig->set('addons', $addon['name'], [
+                       'last_update' => $addon['timestamp'],
+                       'admin' => (bool)$addon['plugin_admin'],
+               ]);
+       }
+
+       $newConfig->commit();
+
+       return Update::SUCCESS;
+}
+
+function update_1510()
+{
+       $blocks = DBA::select('pconfig', ['uid', 'v'], ['cat' => 'blockem', 'k' => 'words']);
+       while ($block = DBA::fetch($blocks)) {
+               foreach (explode(',', $block['v']) as $account) {
+                       $id = Contact::getIdForURL(trim($account), 0, false);
+                       if (empty($id)) {
+                               continue;
+                       }
+                       Contact\User::setCollapsed($id, $block['uid'], true);
+               }
+       }
+       return Update::SUCCESS;
+}
+
+function update_1512()
+{
+       DI::keyValue()->set('nodeinfo_total_users', DI::config()->get('nodeinfo', 'total_users'));
+       DI::keyValue()->set('nodeinfo_active_users_halfyear', DI::config()->get('nodeinfo', 'active_users_halfyear'));
+       DI::keyValue()->set('nodeinfo_active_users_monthly', DI::config()->get('nodeinfo', 'active_users_monthly'));
+       DI::keyValue()->set('nodeinfo_active_users_weekly', DI::config()->get('nodeinfo', 'active_users_weekly'));
+       DI::keyValue()->set('nodeinfo_local_posts', DI::config()->get('nodeinfo', 'local_posts'));
+       DI::keyValue()->set('nodeinfo_local_comments', DI::config()->get('nodeinfo', 'local_comments'));
+
+       DI::config()->delete('nodeinfo', 'total_users');
+       DI::config()->delete('nodeinfo', 'active_users_halfyear');
+       DI::config()->delete('nodeinfo', 'active_users_monthly');
+       DI::config()->delete('nodeinfo', 'active_users_weekly');
+       DI::config()->delete('nodeinfo', 'local_posts');
+       DI::config()->delete('nodeinfo', 'local_comments');
+}
+
+function update_1513()
+{
+       DI::keyValue()->set('git_friendica_version', DI::config()->get('system', 'git_friendica_version'));
+       DI::keyValue()->set('twitter_application_name', DI::config()->get('twitter', 'application_name'));
+
+       DI::config()->delete('system', 'git_friendica_version');
+       DI::config()->delete('twitter', 'application_name');
+}
+
+function update_1514()
+{
+       if (file_exists(dirname(__FILE__) . '/config/node.config.php')) {
+
+               $transactionalConfig = DI::config()->beginTransaction();
+               $oldConfig = include dirname(__FILE__) . '/config/node.config.php';
+
+               if (is_array($oldConfig)) {
+                       $categories = array_keys($oldConfig);
+
+                       foreach ($categories as $category) {
+                               if (is_array($oldConfig[$category])) {
+                                       $keys = array_keys($oldConfig[$category]);
+
+                                       foreach ($keys as $key) {
+                                               $transactionalConfig->set($category, $key, $oldConfig[$category][$key]);
+                                       }
+                               }
+                       }
+               }
+
+               $transactionalConfig->commit();
+
+               // Rename the node.config.php so it won't get used, but it isn't deleted.
+               if (rename(dirname(__FILE__) . '/config/node.config.php', dirname(__FILE__) . '/config/node.config.php.bak')) {
+                       return Update::SUCCESS;
+               } else {
+                       return Update::FAILED;
+               }
+       }
+
+       return Update::SUCCESS;
+}
+
+function update_1515()
+{
+       DBA::update('verb', ['name' => Activity::READ], ['name' => 'https://www.w3.org/ns/activitystreams#read']);
+       DBA::update('verb', ['name' => Activity::VIEW], ['name' => 'https://joinpeertube.org/view']);
+       return Update::SUCCESS;
+}
+
+function update_1516()
+{
+       // Fixes https://github.com/friendica/friendica/issues/12803
+       // de-serialize multiple serialized values
+       $configTrans = DI::config()->beginTransaction();
+       $configArray = DI::config()->getCache()->getDataBySource(Cache::SOURCE_DATA);
+
+       foreach ($configArray as $category => $keyValues) {
+               if (is_array($keyValues)) {
+                       foreach ($keyValues as $key => $value) {
+                               $configTrans->set($category, $key, $value);
+                       }
+               }
+       }
+
+       $configTrans->commit();
+
+       return Update::SUCCESS;
+}
+
+function update_1518()
+{
+       $users = DBA::select('user', ['uid']);
+       while ($user = DBA::fetch($users)) {
+               Contact::updateSelfFromUserID($user['uid']);
+       }
+       DBA::close($users);
+
+       return Update::SUCCESS;
+}
+
+function update_1520(): int
+{
+       DBA::update('user', ['parent-uid' => null], ['parent-uid' => 0]);
+
+       return Update::SUCCESS;
+}
+
+/**
+ * user-contact.remote_self was wrongly declared as boolean, possibly truncating integer values from contact.remote_self
+ *
+ * @return int
+ * @throws Exception
+ */
+function update_1524(): int
+{
+       $contacts = DBA::select('contact', ['uid', 'uri-id', 'remote_self'], ["`uid` != ?", 0]);
+       while ($contact = DBA::fetch($contacts)) {
+               Contact\User::insertForContactArray($contact);
+       }
+
+       return Update::SUCCESS;
+}
+
+function update_1525(): int
+{
+       // Use expected value for user.username
+       if (!DBA::e('UPDATE `user` u
+    JOIN `profile` p
+    ON p.`uid` = u.`uid`
+    SET u.`username` = p.`name`
+    WHERE p.`name` != ""')) {
+               return Update::FAILED;
+       }
+
+       // Blank out deprecated field profile.name to avoid future confusion
+       if (!DBA::e('UPDATE `profile` p
+    SET p.`name` = ""')) {
+               return Update::FAILED;
+       }
+
+       // Update users' self-contact name if needed
+       if (!DBA::e('UPDATE `contact` c
+    JOIN `user` u
+    ON u.`uid` = c.`uid` AND c.`self` = 1
+    SET c.`name` = u.`username`')) {
+               return Update::FAILED;
+       }
+
+       return Update::SUCCESS;
+}
+
+function update_1531()
+{
+       $threads = Post::selectThread(Item::DELIVER_FIELDLIST, ["`uid` = ? AND `created` > ?", 0, DateTimeFormat::utc('now - ' . DI::config()->get('channel', 'engagement_hours') . ' hour')]);
+       while ($post = Post::fetch($threads)) {
+               $post['gravity'] = Item::GRAVITY_COMMENT;
+               Post\Engagement::storeFromItem($post);
+       }
+       DBA::close($threads);
+
+       return Update::SUCCESS;
+}
+
+function update_1535()
+{
+       if (DI::config()->get('system', 'compute_group_counts')) {
+               DI::config()->set('system', 'compute_circle_counts', true);
+       }
+       DI::config()->delete('system', 'compute_group_counts');
+       
+       return Update::SUCCESS;
+}
+
+function update_1539()
+{
+       $users = DBA::select('user', ['uid'], ['account-type' => User::ACCOUNT_TYPE_COMMUNITY]);
+       while ($user = DBA::fetch($users)) {
+               User::setCommunityUserSettings($user['uid']);
+       }
+       DBA::close($users);
+
+       return Update::SUCCESS;
+}
\ No newline at end of file