getSettingKey(); $default_value = $object->getDefaultValue($setting_key); $options = $this->getSelectOptions(); if (isset($options[$default_value])) { $default_label = pht('Default (%s)', $options[$default_value]); } else { $default_label = pht('Default (Unknown, "%s")', $default_value); } if (empty($options[''])) { $options = array( '' => $default_label, ) + $options; } return $this->newEditField($object, new PhabricatorSelectEditField()) ->setOptions($options); } final public function validateTransactionValue($value) { if (!strlen($value)) { return; } $options = $this->getSelectOptions(); if (!isset($options[$value])) { throw new Exception( pht( 'Value "%s" is not valid for setting "%s": valid values are %s.', $value, $this->getSettingName(), implode(', ', array_keys($options)))); } return; } public function getTransactionNewValue($value) { if (!strlen($value)) { return null; } return (string)$value; } }