@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at recaptime-dev/main 128 lines 4.2 kB view raw
1<?php 2 3final class PhabricatorProfileMenuEditor 4 extends PhabricatorApplicationTransactionEditor { 5 6 public function getEditorApplicationClass() { 7 return PhabricatorSearchApplication::class; 8 } 9 10 public function getEditorObjectsDescription() { 11 return pht('Profile Menu Items'); 12 } 13 14 public function getTransactionTypes() { 15 $types = parent::getTransactionTypes(); 16 17 $types[] = 18 PhabricatorProfileMenuItemConfigurationTransaction::TYPE_PROPERTY; 19 $types[] = 20 PhabricatorProfileMenuItemConfigurationTransaction::TYPE_ORDER; 21 $types[] = 22 PhabricatorProfileMenuItemConfigurationTransaction::TYPE_VISIBILITY; 23 24 return $types; 25 } 26 27 protected function getCustomTransactionOldValue( 28 PhabricatorLiskDAO $object, 29 PhabricatorApplicationTransaction $xaction) { 30 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(); 39 } 40 } 41 42 protected function getCustomTransactionNewValue( 43 PhabricatorLiskDAO $object, 44 PhabricatorApplicationTransaction $xaction) { 45 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(); 52 } 53 } 54 55 protected function applyCustomInternalTransaction( 56 PhabricatorLiskDAO $object, 57 PhabricatorApplicationTransaction $xaction) { 58 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; 71 } 72 73 return parent::applyCustomInternalTransaction($object, $xaction); 74 } 75 76 protected function applyCustomExternalTransaction( 77 PhabricatorLiskDAO $object, 78 PhabricatorApplicationTransaction $xaction) { 79 80 switch ($xaction->getTransactionType()) { 81 case PhabricatorProfileMenuItemConfigurationTransaction::TYPE_PROPERTY: 82 case PhabricatorProfileMenuItemConfigurationTransaction::TYPE_ORDER: 83 case PhabricatorProfileMenuItemConfigurationTransaction::TYPE_VISIBILITY: 84 return; 85 } 86 87 return parent::applyCustomExternalTransaction($object, $xaction); 88 } 89 90 protected function validateTransaction( 91 PhabricatorLiskDAO $object, 92 $type, 93 array $xactions) { 94 95 $errors = parent::validateTransaction($object, $type, $xactions); 96 97 $actor = $this->getActor(); 98 $menu_item = $object->getMenuItem(); 99 $menu_item->setViewer($actor); 100 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, 112 ); 113 } 114 115 foreach ($object->validateTransactions($key_map) as $error) { 116 $errors[] = $error; 117 } 118 break; 119 } 120 121 return $errors; 122 } 123 124 protected function supportsSearch() { 125 return true; 126 } 127 128}