Differential D16163 Diff 38887 src/applications/search/relationship/PhabricatorObjectRelationship.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/search/relationship/PhabricatorObjectRelationship.php
Show All 18 Lines | abstract class PhabricatorObjectRelationship extends Phobject { | ||||
abstract public function isEnabledForObject($object); | abstract public function isEnabledForObject($object); | ||||
abstract public function getEdgeConstant(); | abstract public function getEdgeConstant(); | ||||
abstract protected function getActionName(); | abstract protected function getActionName(); | ||||
abstract protected function getActionIcon(); | abstract protected function getActionIcon(); | ||||
abstract public function canRelateObjects($src, $dst); | |||||
abstract public function getDialogTitleText(); | |||||
abstract public function getDialogHeaderText(); | |||||
abstract public function getDialogButtonText(); | |||||
public function getDialogInstructionsText() { | |||||
return null; | |||||
} | |||||
public function shouldAppearInActionMenu() { | public function shouldAppearInActionMenu() { | ||||
return true; | return true; | ||||
} | } | ||||
protected function isActionEnabled($object) { | protected function isActionEnabled($object) { | ||||
$viewer = $this->getViewer(); | $viewer = $this->getViewer(); | ||||
return PhabricatorPolicyFilter::hasCapability( | return PhabricatorPolicyFilter::hasCapability( | ||||
Show All 18 Lines | final public static function getAllRelationships() { | ||||
return id(new PhutilClassMapQuery()) | return id(new PhutilClassMapQuery()) | ||||
->setAncestorClass(__CLASS__) | ->setAncestorClass(__CLASS__) | ||||
->setUniqueMethod('getRelationshipConstant') | ->setUniqueMethod('getRelationshipConstant') | ||||
->execute(); | ->execute(); | ||||
} | } | ||||
private function getActionURI($object) { | private function getActionURI($object) { | ||||
$phid = $object->getPHID(); | $phid = $object->getPHID(); | ||||
$type = $this->getRelationshipConstant(); | |||||
// TODO: Remove this, this is just legacy support for the current | return "/search/rel/{$type}/{$phid}/"; | ||||
// controller until a new one gets built. | |||||
$legacy_kinds = array( | |||||
ManiphestTaskHasCommitEdgeType::EDGECONST => 'CMIT', | |||||
ManiphestTaskHasMockEdgeType::EDGECONST => 'MOCK', | |||||
ManiphestTaskHasRevisionEdgeType::EDGECONST => 'DREV', | |||||
); | |||||
$edge_type = $this->getEdgeConstant(); | |||||
$legacy_kind = idx($legacy_kinds, $edge_type); | |||||
if (!$legacy_kind) { | |||||
throw new Exception( | |||||
pht( | |||||
'Only specific legacy relationships are supported!')); | |||||
} | |||||
return "/search/attach/{$phid}/{$legacy_kind}/"; | |||||
} | } | ||||
} | } |