Differential D16018 Diff 38571 src/applications/settings/editor/PhabricatorUserPreferencesEditor.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/settings/editor/PhabricatorUserPreferencesEditor.php
| Show All 13 Lines | final class PhabricatorUserPreferencesEditor | ||||
| public function getTransactionTypes() { | public function getTransactionTypes() { | ||||
| $types = parent::getTransactionTypes(); | $types = parent::getTransactionTypes(); | ||||
| $types[] = PhabricatorUserPreferencesTransaction::TYPE_SETTING; | $types[] = PhabricatorUserPreferencesTransaction::TYPE_SETTING; | ||||
| return $types; | return $types; | ||||
| } | } | ||||
| protected function expandTransaction( | |||||
| PhabricatorLiskDAO $object, | |||||
| PhabricatorApplicationTransaction $xaction) { | |||||
| $setting_key = $xaction->getMetadataValue( | |||||
| PhabricatorUserPreferencesTransaction::PROPERTY_SETTING); | |||||
| $settings = $this->getSettings(); | |||||
| $setting = idx($settings, $setting_key); | |||||
| if ($setting) { | |||||
| return $setting->expandSettingTransaction($object, $xaction); | |||||
| } | |||||
| return parent::expandTransaction($object, $xaction); | |||||
| } | |||||
| protected function getCustomTransactionOldValue( | protected function getCustomTransactionOldValue( | ||||
| PhabricatorLiskDAO $object, | PhabricatorLiskDAO $object, | ||||
| PhabricatorApplicationTransaction $xaction) { | PhabricatorApplicationTransaction $xaction) { | ||||
| $setting_key = $xaction->getMetadataValue( | $setting_key = $xaction->getMetadataValue( | ||||
| PhabricatorUserPreferencesTransaction::PROPERTY_SETTING); | PhabricatorUserPreferencesTransaction::PROPERTY_SETTING); | ||||
| switch ($xaction->getTransactionType()) { | switch ($xaction->getTransactionType()) { | ||||
| ▲ Show 20 Lines • Show All 60 Lines • ▼ Show 20 Lines | final class PhabricatorUserPreferencesEditor | ||||
| } | } | ||||
| protected function validateTransaction( | protected function validateTransaction( | ||||
| PhabricatorLiskDAO $object, | PhabricatorLiskDAO $object, | ||||
| $type, | $type, | ||||
| array $xactions) { | array $xactions) { | ||||
| $errors = parent::validateTransaction($object, $type, $xactions); | $errors = parent::validateTransaction($object, $type, $xactions); | ||||
| $settings = $this->getSettings(); | |||||
| $actor = $this->getActor(); | |||||
| $settings = PhabricatorSetting::getAllEnabledSettings($actor); | |||||
| foreach ($settings as $key => $setting) { | |||||
| $setting = clone $setting; | |||||
| $setting->setViewer($actor); | |||||
| $settings[$key] = $setting; | |||||
| } | |||||
| switch ($type) { | switch ($type) { | ||||
| case PhabricatorUserPreferencesTransaction::TYPE_SETTING: | case PhabricatorUserPreferencesTransaction::TYPE_SETTING: | ||||
| foreach ($xactions as $xaction) { | foreach ($xactions as $xaction) { | ||||
| $setting_key = $xaction->getMetadataValue( | $setting_key = $xaction->getMetadataValue( | ||||
| PhabricatorUserPreferencesTransaction::PROPERTY_SETTING); | PhabricatorUserPreferencesTransaction::PROPERTY_SETTING); | ||||
| $setting = idx($settings, $setting_key); | $setting = idx($settings, $setting_key); | ||||
| Show All 37 Lines | if ($user_phid) { | ||||
| PhabricatorUserCache::clearCacheForAllUsers( | PhabricatorUserCache::clearCacheForAllUsers( | ||||
| PhabricatorUserPreferencesCacheType::KEY_PREFERENCES); | PhabricatorUserPreferencesCacheType::KEY_PREFERENCES); | ||||
| } | } | ||||
| return $xactions; | return $xactions; | ||||
| } | } | ||||
| private function getSettings() { | |||||
| $actor = $this->getActor(); | |||||
| $settings = PhabricatorSetting::getAllEnabledSettings($actor); | |||||
| foreach ($settings as $key => $setting) { | |||||
| $setting = clone $setting; | |||||
| $setting->setViewer($actor); | |||||
| $settings[$key] = $setting; | |||||
| } | |||||
| return $settings; | |||||
| } | |||||
| } | } | ||||