Differential D16043 Diff 38609 src/applications/people/cache/PhabricatorUserPreferencesCacheType.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/people/cache/PhabricatorUserPreferencesCacheType.php
| Show All 11 Lines | return array( | ||||
| self::KEY_PREFERENCES, | self::KEY_PREFERENCES, | ||||
| ); | ); | ||||
| } | } | ||||
| public function canManageKey($key) { | public function canManageKey($key) { | ||||
| return ($key === self::KEY_PREFERENCES); | return ($key === self::KEY_PREFERENCES); | ||||
| } | } | ||||
| public function getValueFromStorage($value) { | |||||
| return phutil_json_decode($value); | |||||
| } | |||||
| public function newValueForUsers($key, array $users) { | public function newValueForUsers($key, array $users) { | ||||
| $viewer = $this->getViewer(); | $viewer = $this->getViewer(); | ||||
| $user_phids = mpull($users, 'getPHID'); | $user_phids = mpull($users, 'getPHID'); | ||||
| $preferences = id(new PhabricatorUserPreferencesQuery()) | $preferences = id(new PhabricatorUserPreferencesQuery()) | ||||
| ->setViewer($viewer) | ->setViewer($viewer) | ||||
| ->withUserPHIDs($user_phids) | ->withUserPHIDs($user_phids) | ||||
| ->execute(); | ->execute(); | ||||
| $empty = array_fill_keys($user_phids, array()); | $settings = mpull($preferences, 'getPreferences', 'getUserPHID'); | ||||
| $results = array(); | |||||
| foreach ($user_phids as $user_phid) { | |||||
| $value = idx($settings, $user_phid, array()); | |||||
| $results[$user_phid] = phutil_json_encode($value); | |||||
| } | |||||
| return mpull($preferences, 'getPreferences', 'getUserPHID') + $empty; | return $results; | ||||
| } | } | ||||
| } | } | ||||