mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-30 18:52:42 +01:00
ebd8f3c987
Summary: Ref T4103. These are currently stored on the user, for historic/performance reasons. Since I want administrators to be able to set defaults for translations and timezones at a minimum and there's no longer a meaningful performance penalty for moving them off the user record, turn them into real preferences and then nuke the columns. Test Plan: - Set settings to unusual values. - Ran migrations. - Verified my unusual settings survived. - Created a new user. - Edited all settings with old and new UIs. - Reconciled client/server timezone disagreement. Reviewers: chad Reviewed By: chad Maniphest Tasks: T4103 Differential Revision: https://secure.phabricator.com/D16005
59 lines
1.6 KiB
PHP
59 lines
1.6 KiB
PHP
<?php
|
|
|
|
// Move timezone, translation and pronoun from the user object to preferences
|
|
// so they can be defaulted and edited like other settings.
|
|
|
|
$table = new PhabricatorUser();
|
|
$conn_w = $table->establishConnection('w');
|
|
$table_name = $table->getTableName();
|
|
$prefs_table = new PhabricatorUserPreferences();
|
|
|
|
foreach (new LiskRawMigrationIterator($conn_w, $table_name) as $row) {
|
|
$phid = $row['phid'];
|
|
|
|
$pref_row = queryfx_one(
|
|
$conn_w,
|
|
'SELECT preferences FROM %T WHERE userPHID = %s',
|
|
$prefs_table->getTableName(),
|
|
$phid);
|
|
|
|
if ($pref_row) {
|
|
try {
|
|
$prefs = phutil_json_decode($pref_row['preferences']);
|
|
} catch (Exception $ex) {
|
|
$prefs = array();
|
|
}
|
|
} else {
|
|
$prefs = array();
|
|
}
|
|
|
|
$zone = $row['timezoneIdentifier'];
|
|
if (strlen($zone)) {
|
|
$prefs[PhabricatorTimezoneSetting::SETTINGKEY] = $zone;
|
|
}
|
|
|
|
$pronoun = $row['sex'];
|
|
if (strlen($pronoun)) {
|
|
$prefs[PhabricatorPronounSetting::SETTINGKEY] = $pronoun;
|
|
}
|
|
|
|
$translation = $row['translation'];
|
|
if (strlen($translation)) {
|
|
$prefs[PhabricatorTranslationSetting::SETTINGKEY] = $translation;
|
|
}
|
|
|
|
if ($prefs) {
|
|
queryfx(
|
|
$conn_w,
|
|
'INSERT INTO %T (phid, userPHID, preferences, dateModified, dateCreated)
|
|
VALUES (%s, %s, %s, UNIX_TIMESTAMP(), UNIX_TIMESTAMP())
|
|
ON DUPLICATE KEY UPDATE preferences = VALUES(preferences)',
|
|
$prefs_table->getTableName(),
|
|
$prefs_table->generatePHID(),
|
|
$phid,
|
|
phutil_json_encode($prefs));
|
|
}
|
|
}
|
|
|
|
$prefs_key = PhabricatorUserPreferencesCacheType::KEY_PREFERENCES;
|
|
PhabricatorUserCache::clearCacheForAllUsers($prefs_key);
|