Path: blob/master/src/applications/nuance/management/NuanceManagementWorkflow.php
12256 views
<?php12abstract class NuanceManagementWorkflow3extends PhabricatorManagementWorkflow {45protected function loadSource(PhutilArgumentParser $argv, $key) {6$source = $argv->getArg($key);7if (!strlen($source)) {8throw new PhutilArgumentUsageException(9pht(10'Specify a source with %s.',11'--'.$key));12}1314$query = id(new NuanceSourceQuery())15->setViewer($this->getViewer())16->setRaisePolicyExceptions(true);1718$type_unknown = PhabricatorPHIDConstants::PHID_TYPE_UNKNOWN;1920if (ctype_digit($source)) {21$kind = 'id';22$query->withIDs(array($source));23} else if (phid_get_type($source) !== $type_unknown) {24$kind = 'phid';25$query->withPHIDs($source);26} else {27$kind = 'name';28$query->withNameNgrams($source);29}3031$sources = $query->execute();3233if (!$sources) {34switch ($kind) {35case 'id':36$message = pht(37'No source exists with ID "%s".',38$source);39break;40case 'phid':41$message = pht(42'No source exists with PHID "%s".',43$source);44break;45default:46$message = pht(47'No source exists with a name matching "%s".',48$source);49break;50}5152throw new PhutilArgumentUsageException($message);53} else if (count($sources) > 1) {54$message = pht(55'More than one source matches "%s". Choose a narrower query, or '.56'use an ID or PHID to select a source. Matching sources: %s.',57$source,58implode(', ', mpull($sources, 'getName')));5960throw new PhutilArgumentUsageException($message);61}6263return head($sources);64}6566protected function loadITem(PhutilArgumentParser $argv, $key) {67$item = $argv->getArg($key);68if (!strlen($item)) {69throw new PhutilArgumentUsageException(70pht(71'Specify a item with %s.',72'--'.$key));73}7475$query = id(new NuanceItemQuery())76->setViewer($this->getViewer())77->setRaisePolicyExceptions(true);7879$type_unknown = PhabricatorPHIDConstants::PHID_TYPE_UNKNOWN;8081if (ctype_digit($item)) {82$kind = 'id';83$query->withIDs(array($item));84} else if (phid_get_type($item) !== $type_unknown) {85$kind = 'phid';86$query->withPHIDs($item);87} else {88throw new PhutilArgumentUsageException(89pht(90'Specify the ID or PHID of an item to update. Parameter "%s" '.91'is not an ID or PHID.',92$item));93}9495$items = $query->execute();9697if (!$items) {98switch ($kind) {99case 'id':100$message = pht(101'No item exists with ID "%s".',102$item);103break;104case 'phid':105$message = pht(106'No item exists with PHID "%s".',107$item);108break;109}110111throw new PhutilArgumentUsageException($message);112}113114return head($items);115}116}117118119