]> git.mxchange.org Git - friendica.git/commitdiff
Issue 13511: Ensure stattic community user settings
authorMichael <heluecht@pirati.ca>
Sun, 29 Oct 2023 19:43:44 +0000 (19:43 +0000)
committerMichael <heluecht@pirati.ca>
Sun, 29 Oct 2023 19:43:44 +0000 (19:43 +0000)
database.sql
src/Model/User.php
src/Module/Settings/Account.php
static/dbstructure.config.php
update.php

index a6e29826be16db2342926d34accec5bf47079412..5c999da2314bb23a6e3a4bb0e7b8fbdce5c6af96 100644 (file)
@@ -1,6 +1,6 @@
 -- ------------------------------------------
 -- Friendica 2023.09-rc (Giant Rhubarb)
--- DB_UPDATE_VERSION 1538
+-- DB_UPDATE_VERSION 1539
 -- ------------------------------------------
 
 
index 18fecf080380d4e0c9f6a6df7cb1f9bcea1763ee..d774a6454aa5480edfcfd2543173b0cf77083c45 100644 (file)
@@ -343,6 +343,35 @@ class User
                return DBA::selectFirst('user', $fields, ['nickname' => $nickname]);
        }
 
+       /**
+        * Set static settings for community user accounts
+        *
+        * @param integer $uid
+        * @return void
+        */
+       public static function setCommunityUserSettings(int $uid)
+       {
+               $user = self::getById($uid, ['account-type', 'page-flags']);
+               if ($user['account-type'] != User::ACCOUNT_TYPE_COMMUNITY) {
+                       return;
+               }
+
+               DI::pConfig()->set($uid, 'system', 'unlisted', true);
+
+               $fields = [
+                       'allow_cid'  => '',
+                       'allow_gid'  => $user['page-flags'] == User::PAGE_FLAGS_PRVGROUP ? '<' . Circle::FOLLOWERS . '>' : '',
+                       'deny_cid'   => '',
+                       'deny_gid'   => '',
+                       'blockwall'  => true,
+                       'hidewall'   => true,
+               ];
+
+               User::update($fields, $uid);
+
+               Profile::update(['hide-friends' => true], $uid);
+       }
+
        /**
         * Returns the user id of a given profile URL
         *
index 8ff00addb5294c7d4e4c1a0c941c6b55b0a28550..70d1bddc380a60c9023b5bc16f31501b8b30b7ba 100644 (file)
@@ -199,6 +199,7 @@ class Account extends BaseSettings
                                DI::sysmsg()->addNotice(DI::l10n()->t('Settings were not updated.'));
                        }
 
+                       User::setCommunityUserSettings(DI::userSession()->getLocalUserId());
                        DI::baseUrl()->redirect($redirectUrl);
                }
 
@@ -321,37 +322,16 @@ class Account extends BaseSettings
                                $page_flags = User::PAGE_FLAGS_COMMUNITY;
                        }
 
-                       $fields         = [];
-                       $profile_fields = [];
-
-                       if ($account_type == User::ACCOUNT_TYPE_COMMUNITY) {
-                               DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'system', 'unlisted', true);
-
-                               $fields = [
-                                       'allow_cid' => '',
-                                       'allow_gid' => $page_flags == User::PAGE_FLAGS_PRVGROUP ?
-                                                       '<' . Circle::FOLLOWERS . '>'
-                                                       : '',
-                                       'deny_cid'  => '',
-                                       'deny_gid'  => '',
-                                       'blockwall' => true,
-                                       'blocktags' => true,
-                               ];
-
-                               $profile_fields = [
-                                       'hide-friends' => true,
-                               ];
-                       }
-
-                       $fields = array_merge($fields, [
+                       $fields = [
                                'page-flags'   => $page_flags,
                                'account-type' => $account_type,
-                       ]);
+                       ];
 
-                       if (!User::update($fields, DI::userSession()->getLocalUserId()) || !empty($profile_fields) && !Profile::update($profile_fields, DI::userSession()->getLocalUserId())) {
+                       if (!User::update($fields, DI::userSession()->getLocalUserId())) {
                                DI::sysmsg()->addNotice(DI::l10n()->t('Settings were not updated.'));
                        }
 
+                       User::setCommunityUserSettings(DI::userSession()->getLocalUserId());
                        DI::baseUrl()->redirect($redirectUrl);
                }
 
index e97d1ea1cd05dd3ad0fb626e3534c4589eda0f73..e0f98e97f854054329e47bbb877e3d6fcede8e77 100644 (file)
@@ -56,7 +56,7 @@ use Friendica\Database\DBA;
 
 // This file is required several times during the test in DbaDefinition which justifies this condition
 if (!defined('DB_UPDATE_VERSION')) {
-       define('DB_UPDATE_VERSION', 1538);
+       define('DB_UPDATE_VERSION', 1539);
 }
 
 return [
index f04a4d5c5f009d12168dd824d4ed3e931310dbcb..ce22a28d14e075a0aa3533e197b674f065361f1c 100644 (file)
@@ -1398,5 +1398,16 @@ function update_1535()
        }
        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