-- ------------------------------------------
-- Friendica 2023.09-rc (Giant Rhubarb)
--- DB_UPDATE_VERSION 1538
+-- DB_UPDATE_VERSION 1539
-- ------------------------------------------
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
*
DI::sysmsg()->addNotice(DI::l10n()->t('Settings were not updated.'));
}
+ User::setCommunityUserSettings(DI::userSession()->getLocalUserId());
DI::baseUrl()->redirect($redirectUrl);
}
$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);
}
// 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 [
}
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