@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Convert some loadPreferences() to getUserSetting()

Summary:
Ref T4103. This doesn't get everything, but takes care of most of the easy stuff.

The tricky-ish bit here is that I need to move timezones, pronouns and translations to proper settings. I expect to pursue that next.

Test Plan:
- Grepped for `loadPreferences` to identify callsites.
- Changed start-of-week setting, loaded Calendar, saw correct start.
- Visited welcome page, read "Adjust Settings" point.
- Loaded Conpherence -- I changed behavior here slightly (switching threads drops the title glyph) but it wasn't consistent to start with and this seems like a good thing to push to the next version of Conpherence.
- Enabled Filetree, toggled in Differential.
- Disabled Filetree, no longer visible in Differential.
- Changed "Unified Diffs" preference to "Small Screens" vs "Always".
- Toggled filetree in Diffusion.
- Edited a task, saw sensible projects in policy dropdown.
- Viewed user profile, uncollapsed/collapsed side nav, reloaded page, sticky'd.
- Toggled "monospaced textareas", used a comment box, got appropriate fonts.
- Toggled durable column.
- Disabled title glyphs.
- Changed monospaced font to 18px/36px impact.

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T4103

Differential Revision: https://secure.phabricator.com/D16004

+62 -84
+2 -28
resources/sql/autopatches/20140722.appname.php
··· 74 74 75 75 /* -( User preferences )--------------------------------------------------- */ 76 76 77 - echo pht('Migrating user preferences...')."\n"; 78 - $table = new PhabricatorUserPreferences(); 79 - $conn_w = $table->establishConnection('w'); 80 - $pref_pinned = PhabricatorUserPreferences::PREFERENCE_APP_PINNED; 81 77 82 - foreach (new LiskMigrationIterator(new PhabricatorUser()) as $user) { 83 - $user_preferences = $user->loadPreferences(); 84 - 85 - $old_pinned_apps = $user_preferences->getPreference($pref_pinned); 86 - $new_pinned_apps = array(); 87 - 88 - if (!$old_pinned_apps) { 89 - continue; 90 - } 91 - 92 - foreach ($old_pinned_apps as $pinned_app) { 93 - $new_pinned_apps[] = idx($map, $pinned_app, $pinned_app); 94 - } 95 - 96 - $user_preferences 97 - ->setPreference($pref_pinned, $new_pinned_apps); 98 - 99 - queryfx( 100 - $conn_w, 101 - 'UPDATE %T SET preferences = %s WHERE id = %d', 102 - $user_preferences->getTableName(), 103 - json_encode($user_preferences->getPreferences()), 104 - $user_preferences->getID()); 105 - } 78 + // This originally migrated pinned applications in user preferences, but was 79 + // removed to simplify preference changes after about 22 months. 106 80 107 81 108 82 /* -( Dashboard installs )------------------------------------------------- */
+2 -3
src/applications/calendar/query/PhabricatorCalendarEventSearchEngine.php
··· 151 151 $display_start = $start_day->format('U'); 152 152 $display_end = $next->format('U'); 153 153 154 - $preferences = $viewer->loadPreferences(); 155 - $pref_week_day = PhabricatorUserPreferences::PREFERENCE_WEEK_START_DAY; 154 + $start_of_week = $viewer->getUserSetting( 155 + PhabricatorWeekStartDaySetting::SETTINGKEY); 156 156 157 - $start_of_week = $preferences->getPreference($pref_week_day, 0); 158 157 $end_of_week = ($start_of_week + 6) % 7; 159 158 160 159 $first_of_month = $start_day->format('w');
+8 -2
src/applications/config/controller/PhabricatorConfigWelcomeController.php
··· 141 141 $content); 142 142 143 143 $settings_href = PhabricatorEnv::getURI('/settings/'); 144 - $prefs = $viewer->loadPreferences()->getPreferences(); 145 - $have_settings = !empty($prefs); 144 + 145 + $preferences = id(new PhabricatorUserPreferencesQuery()) 146 + ->setViewer($viewer) 147 + ->withUsers(array($viewer)) 148 + ->executeOne(); 149 + 150 + $have_settings = ($preferences && $preferences->getPreferences()); 151 + 146 152 if ($have_settings) { 147 153 $content = pht( 148 154 "=== Adjust Account Settings ===\n\n".
+1 -9
src/applications/conpherence/view/ConpherenceThreadListView.php
··· 72 72 $epoch = $data['epoch']; 73 73 $image = $data['image']; 74 74 $dom_id = $thread->getPHID().'-nav-item'; 75 - $glyph_pref = PhabricatorUserPreferences::PREFERENCE_TITLES; 76 - $preferences = $user->loadPreferences(); 77 - if ($preferences->getPreference($glyph_pref) == 'glyph') { 78 - $glyph = id(new PhabricatorConpherenceApplication()) 79 - ->getTitleGlyph().' '; 80 - } else { 81 - $glyph = null; 82 - } 83 75 84 76 return id(new ConpherenceMenuItemView()) 85 77 ->setUser($user) ··· 93 85 ->addSigil('conpherence-menu-click') 94 86 ->setMetadata( 95 87 array( 96 - 'title' => $glyph.$data['title'], 88 + 'title' => $data['title'], 97 89 'id' => $dom_id, 98 90 'threadID' => $thread->getID(), 99 91 ));
+8 -7
src/applications/differential/controller/DifferentialRevisionViewController.php
··· 375 375 $crumbs->addTextCrumb($object_id, '/'.$object_id); 376 376 $crumbs->setBorder(true); 377 377 378 - $prefs = $viewer->loadPreferences(); 379 - $pref_filetree = PhabricatorUserPreferences::PREFERENCE_DIFF_FILETREE; 378 + $filetree_on = $viewer->compareUserSetting( 379 + PhabricatorShowFiletreeSetting::SETTINGKEY, 380 + PhabricatorShowFiletreeSetting::VALUE_ENABLE_FILETREE); 381 + 380 382 $nav = null; 381 - if ($prefs->getPreference($pref_filetree)) { 382 - $collapsed = $prefs->getPreference( 383 - PhabricatorUserPreferences::PREFERENCE_NAV_COLLAPSED, 384 - false); 383 + if ($filetree_on) { 384 + $collapsed_key = PhabricatorUserPreferences::PREFERENCE_NAV_COLLAPSED; 385 + $collapsed_value = $viewer->getUserSetting($collapsed_key); 385 386 386 387 $nav = id(new DifferentialChangesetFileTreeSideNavBuilder()) 387 388 ->setTitle('D'.$revision->getID()) 388 389 ->setBaseURI(new PhutilURI('/D'.$revision->getID())) 389 - ->setCollapsed((bool)$collapsed) 390 + ->setCollapsed((bool)$collapsed_value) 390 391 ->build($changesets); 391 392 } 392 393
+6 -3
src/applications/differential/parser/DifferentialChangesetParser.php
··· 150 150 } 151 151 152 152 public static function getDefaultRendererForViewer(PhabricatorUser $viewer) { 153 - $prefs = $viewer->loadPreferences(); 154 - $pref_unified = PhabricatorUserPreferences::PREFERENCE_DIFF_UNIFIED; 155 - if ($prefs->getPreference($pref_unified) == 'unified') { 153 + $is_unified = $viewer->compareUserSetting( 154 + PhabricatorUnifiedDiffsSetting::SETTINGKEY, 155 + PhabricatorUnifiedDiffsSetting::VALUE_ALWAYS_UNIFIED); 156 + 157 + if ($is_unified) { 156 158 return '1up'; 157 159 } 160 + 158 161 return null; 159 162 } 160 163
+4 -3
src/applications/differential/query/DifferentialInlineCommentQuery.php
··· 175 175 176 176 $viewer = $this->getViewer(); 177 177 178 - $pref = $viewer->loadPreferences()->getPreference( 179 - PhabricatorUserPreferences::PREFERENCE_DIFF_GHOSTS); 180 - if ($pref == 'disabled') { 178 + $no_ghosts = $viewer->compareUserSetting( 179 + PhabricatorOlderInlinesSetting::SETTINGKEY, 180 + PhabricatorOlderInlinesSetting::VALUE_GHOST_INLINES_DISABLED); 181 + if ($no_ghosts) { 181 182 return $inlines; 182 183 } 183 184
+6 -5
src/applications/diffusion/controller/DiffusionCommitController.php
··· 325 325 326 326 $add_comment = $this->renderAddCommentPanel($commit, $audit_requests); 327 327 328 - $prefs = $viewer->loadPreferences(); 329 - $pref_filetree = PhabricatorUserPreferences::PREFERENCE_DIFF_FILETREE; 328 + $filetree_on = $viewer->compareUserSetting( 329 + PhabricatorShowFiletreeSetting::SETTINGKEY, 330 + PhabricatorShowFiletreeSetting::VALUE_ENABLE_FILETREE); 331 + 330 332 $pref_collapse = PhabricatorUserPreferences::PREFERENCE_NAV_COLLAPSED; 331 - $show_filetree = $prefs->getPreference($pref_filetree); 332 - $collapsed = $prefs->getPreference($pref_collapse); 333 + $collapsed = $viewer->getUserSetting($pref_collapse); 333 334 334 335 $nav = null; 335 - if ($show_changesets && $show_filetree) { 336 + if ($show_changesets && $filetree_on) { 336 337 $nav = id(new DifferentialChangesetFileTreeSideNavBuilder()) 337 338 ->setTitle($commit->getDisplayName()) 338 339 ->setBaseURI(new PhutilURI($commit->getURI()))
+5
src/applications/people/storage/PhabricatorUser.php
··· 506 506 return null; 507 507 } 508 508 509 + public function compareUserSetting($key, $value) { 510 + $actual = $this->getUserSetting($key); 511 + return ($actual == $value); 512 + } 513 + 509 514 public function loadPreferences() { 510 515 if ($this->preferences) { 511 516 return $this->preferences;
+1 -2
src/applications/policy/query/PhabricatorPolicyQuery.php
··· 201 201 $default_limit = 5; 202 202 203 203 // If possible, show the user's 10 most recently used projects. 204 - $preferences = $viewer->loadPreferences(); 205 - $favorites = $preferences->getPreference($pref_key); 204 + $favorites = $viewer->getUserSetting($pref_key); 206 205 if (!is_array($favorites)) { 207 206 $favorites = array(); 208 207 }
+1 -2
src/applications/search/engine/PhabricatorProfilePanelEngine.php
··· 385 385 $collapse_key = 386 386 PhabricatorUserPreferences::PREFERENCE_PROFILE_MENU_COLLAPSED; 387 387 388 - $preferences = $viewer->loadPreferences(); 389 - $is_collapsed = $preferences->getPreference($collapse_key, false); 388 + $is_collapsed = $viewer->getUserSetting($collapse_key); 390 389 391 390 if ($is_collapsed) { 392 391 $nav->addClass('phui-profile-menu-collapsed');
+6 -7
src/view/form/control/PhabricatorRemarkupControl.php
··· 260 260 ), 261 261 $buttons); 262 262 263 - $monospaced_textareas = null; 264 - $monospaced_textareas_class = null; 263 + $use_monospaced = $viewer->compareUserSetting( 264 + PhabricatorMonospacedTextareasSetting::SETTINGKEY, 265 + PhabricatorMonospacedTextareasSetting::VALUE_TEXT_MONOSPACED); 265 266 266 - $monospaced_textareas = $viewer 267 - ->loadPreferences() 268 - ->getPreference( 269 - PhabricatorUserPreferences::PREFERENCE_MONOSPACED_TEXTAREAS); 270 - if ($monospaced_textareas == 'enabled') { 267 + if ($use_monospaced) { 271 268 $monospaced_textareas_class = 'PhabricatorMonospaced'; 269 + } else { 270 + $monospaced_textareas_class = null; 272 271 } 273 272 274 273 $this->setCustomClass(
+9 -10
src/view/page/PhabricatorStandardPageView.php
··· 133 133 134 134 public function getDurableColumnVisible() { 135 135 $column_key = PhabricatorUserPreferences::PREFERENCE_CONPHERENCE_COLUMN; 136 - return (bool)$this->getUserPreference($column_key, 0); 136 + return (bool)$this->getUserPreference($column_key, false); 137 137 } 138 138 139 139 public function addQuicksandConfig(array $config) { ··· 164 164 } 165 165 166 166 public function getTitle() { 167 - $glyph_key = PhabricatorUserPreferences::PREFERENCE_TITLES; 168 - if ($this->getUserPreference($glyph_key) == 'text') { 169 - $use_glyph = false; 170 - } else { 171 - $use_glyph = true; 172 - } 167 + $glyph_key = PhabricatorTitleGlyphsSetting::SETTINGKEY; 168 + $glyph_on = PhabricatorTitleGlyphsSetting::VALUE_TITLE_GLYPHS; 169 + $glyph_setting = $this->getUserPreference($glyph_key, $glyph_on); 170 + 171 + $use_glyph = ($glyph_setting == $glyph_on); 173 172 174 173 $title = parent::getTitle(); 175 174 ··· 362 361 if ($request) { 363 362 $user = $request->getUser(); 364 363 if ($user) { 365 - $monospaced = $user->loadPreferences()->getPreference( 366 - PhabricatorUserPreferences::PREFERENCE_MONOSPACED); 364 + $monospaced = $user->getUserSetting( 365 + PhabricatorMonospacedFontSetting::SETTINGKEY); 367 366 } 368 367 } 369 368 ··· 834 833 return $default; 835 834 } 836 835 837 - return $user->loadPreferences()->getPreference($key, $default); 836 + return $user->getUserSetting($key); 838 837 } 839 838 840 839 public function produceAphrontResponse() {
+3 -3
src/view/phui/calendar/PHUICalendarMonthView.php
··· 574 574 } 575 575 576 576 private function getWeekStartAndEnd() { 577 - $preferences = $this->getViewer()->loadPreferences(); 578 - $pref_week_start = PhabricatorUserPreferences::PREFERENCE_WEEK_START_DAY; 577 + $viewer = $this->getViewer(); 578 + $week_key = PhabricatorUserPreferences::PREFERENCE_WEEK_START_DAY; 579 579 580 - $week_start = $preferences->getPreference($pref_week_start, 0); 580 + $week_start = $viewer->getUserSetting($week_key); 581 581 $week_end = ($week_start + 6) % 7; 582 582 583 583 return array($week_start, $week_end);