Correct a parameter order swap in "diffusion.historyquery" for Mercurial
[phabricator.git] / src / applications / search / editor / PhabricatorProfileMenuEditor.php
blob71f8c32e944a9bb02eed2412eb28f9e576b7efc6
1 <?php
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();
17 $types[] =
18 PhabricatorProfileMenuItemConfigurationTransaction::TYPE_PROPERTY;
19 $types[] =
20 PhabricatorProfileMenuItemConfigurationTransaction::TYPE_ORDER;
21 $types[] =
22 PhabricatorProfileMenuItemConfigurationTransaction::TYPE_VISIBILITY;
24 return $types;
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);
64 return;
65 case PhabricatorProfileMenuItemConfigurationTransaction::TYPE_ORDER:
66 $object->setMenuItemOrder($xaction->getNewValue());
67 return;
68 case PhabricatorProfileMenuItemConfigurationTransaction::TYPE_VISIBILITY:
69 $object->setVisibility($xaction->getNewValue());
70 return;
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:
84 return;
87 return parent::applyCustomExternalTransaction($object, $xaction);
90 protected function validateTransaction(
91 PhabricatorLiskDAO $object,
92 $type,
93 array $xactions) {
95 $errors = parent::validateTransaction($object, $type, $xactions);
97 $actor = $this->getActor();
98 $menu_item = $object->getMenuItem();
99 $menu_item->setViewer($actor);
101 switch ($type) {
102 case PhabricatorProfileMenuItemConfigurationTransaction::TYPE_PROPERTY:
103 $key_map = array();
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,
110 'old' => $old,
111 'new' => $new,
115 foreach ($object->validateTransactions($key_map) as $error) {
116 $errors[] = $error;
118 break;
121 return $errors;
124 protected function supportsSearch() {
125 return true;