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; | |||||
} | |||||
} | } |