3 final class PhabricatorProfileMenuEditor
4 extends PhabricatorApplicationTransactionEditor
{
6 public function getEditorApplicationClass() {
7 return 'PhabricatorSearchApplication';
10 public function getEditorObjectsDescription() {
11 return pht('Profile Menu Items');
14 public function getTransactionTypes() {
15 $types = parent
::getTransactionTypes();
18 PhabricatorProfileMenuItemConfigurationTransaction
::TYPE_PROPERTY
;
20 PhabricatorProfileMenuItemConfigurationTransaction
::TYPE_ORDER
;
22 PhabricatorProfileMenuItemConfigurationTransaction
::TYPE_VISIBILITY
;
27 protected function getCustomTransactionOldValue(
28 PhabricatorLiskDAO
$object,
29 PhabricatorApplicationTransaction
$xaction) {
31 switch ($xaction->getTransactionType()) {
32 case PhabricatorProfileMenuItemConfigurationTransaction
::TYPE_PROPERTY
:
33 $key = $xaction->getMetadataValue('property.key');
34 return $object->getMenuItemProperty($key, null);
35 case PhabricatorProfileMenuItemConfigurationTransaction
::TYPE_ORDER
:
36 return $object->getMenuItemOrder();
37 case PhabricatorProfileMenuItemConfigurationTransaction
::TYPE_VISIBILITY
:
38 return $object->getVisibility();
42 protected function getCustomTransactionNewValue(
43 PhabricatorLiskDAO
$object,
44 PhabricatorApplicationTransaction
$xaction) {
46 switch ($xaction->getTransactionType()) {
47 case PhabricatorProfileMenuItemConfigurationTransaction
::TYPE_PROPERTY
:
48 case PhabricatorProfileMenuItemConfigurationTransaction
::TYPE_VISIBILITY
:
49 return $xaction->getNewValue();
50 case PhabricatorProfileMenuItemConfigurationTransaction
::TYPE_ORDER
:
51 return (int)$xaction->getNewValue();
55 protected function applyCustomInternalTransaction(
56 PhabricatorLiskDAO
$object,
57 PhabricatorApplicationTransaction
$xaction) {
59 switch ($xaction->getTransactionType()) {
60 case PhabricatorProfileMenuItemConfigurationTransaction
::TYPE_PROPERTY
:
61 $key = $xaction->getMetadataValue('property.key');
62 $value = $xaction->getNewValue();
63 $object->setMenuItemProperty($key, $value);
65 case PhabricatorProfileMenuItemConfigurationTransaction
::TYPE_ORDER
:
66 $object->setMenuItemOrder($xaction->getNewValue());
68 case PhabricatorProfileMenuItemConfigurationTransaction
::TYPE_VISIBILITY
:
69 $object->setVisibility($xaction->getNewValue());
73 return parent
::applyCustomInternalTransaction($object, $xaction);
76 protected function applyCustomExternalTransaction(
77 PhabricatorLiskDAO
$object,
78 PhabricatorApplicationTransaction
$xaction) {
80 switch ($xaction->getTransactionType()) {
81 case PhabricatorProfileMenuItemConfigurationTransaction
::TYPE_PROPERTY
:
82 case PhabricatorProfileMenuItemConfigurationTransaction
::TYPE_ORDER
:
83 case PhabricatorProfileMenuItemConfigurationTransaction
::TYPE_VISIBILITY
:
87 return parent
::applyCustomExternalTransaction($object, $xaction);
90 protected function validateTransaction(
91 PhabricatorLiskDAO
$object,
95 $errors = parent
::validateTransaction($object, $type, $xactions);
97 $actor = $this->getActor();
98 $menu_item = $object->getMenuItem();
99 $menu_item->setViewer($actor);
102 case PhabricatorProfileMenuItemConfigurationTransaction
::TYPE_PROPERTY
:
104 foreach ($xactions as $xaction) {
105 $xaction_key = $xaction->getMetadataValue('property.key');
106 $old = $this->getCustomTransactionOldValue($object, $xaction);
107 $new = $xaction->getNewValue();
108 $key_map[$xaction_key][] = array(
109 'xaction' => $xaction,
115 foreach ($object->validateTransactions($key_map) as $error) {
124 protected function supportsSearch() {