Path: blob/master/src/applications/herald/storage/transcript/HeraldConditionResult.php
12262 views
<?php12final class HeraldConditionResult3extends HeraldTranscriptResult {45const RESULT_MATCHED = 'matched';6const RESULT_FAILED = 'failed';7const RESULT_OBJECT_STATE = 'object-state';8const RESULT_INVALID = 'invalid';9const RESULT_RECURSION = 'recursion';10const RESULT_EXCEPTION = 'exception';11const RESULT_UNKNOWN = 'unknown';1213public static function newFromResultCode($result_code) {14return id(new self())->setResultCode($result_code);15}1617public static function newFromResultMap(array $map) {18return id(new self())->loadFromResultMap($map);19}2021public function getIsMatch() {22return ($this->getSpecificationProperty('match') === true);23}2425public function newDetailsView(PhabricatorUser $viewer) {26switch ($this->getResultCode()) {27case self::RESULT_OBJECT_STATE:28$reason = $this->getDataProperty('reason');29$details = HeraldStateReasons::getExplanation($reason);30break;31case self::RESULT_INVALID:32case self::RESULT_EXCEPTION:33$error_class = $this->getDataProperty('exception.class');34$error_message = $this->getDataProperty('exception.message');3536if (!strlen($error_class)) {37$error_class = pht('Unknown Error');38}3940switch ($error_class) {41case 'HeraldInvalidConditionException':42$error_class = pht('Invalid Condition');43break;44}4546if (!strlen($error_message)) {47$error_message = pht(48'An unknown error occurred while evaluating this condition. No '.49'additional information is available.');50}5152$details = pht(53'%s: %s',54phutil_tag('strong', array(), $error_class),55phutil_escape_html_newlines($error_message));56break;57default:58$details = null;59break;60}6162return $details;63}6465protected function newResultSpecificationMap() {66return array(67self::RESULT_MATCHED => array(68'match' => true,69'icon' => 'fa-check',70'color.icon' => 'green',71'name' => pht('Passed'),72),73self::RESULT_FAILED => array(74'match' => false,75'icon' => 'fa-times',76'color.icon' => 'red',77'name' => pht('Failed'),78),79self::RESULT_OBJECT_STATE => array(80'match' => null,81'icon' => 'fa-ban',82'color.icon' => 'indigo',83'name' => pht('Forbidden'),84),85self::RESULT_INVALID => array(86'match' => null,87'icon' => 'fa-exclamation-triangle',88'color.icon' => 'yellow',89'name' => pht('Invalid'),90),91self::RESULT_RECURSION => array(92'match' => null,93'icon' => 'fa-exclamation-triangle',94'color.icon' => 'red',95'name' => pht('Recursion'),96),97self::RESULT_EXCEPTION => array(98'match' => null,99'icon' => 'fa-exclamation-triangle',100'color.icon' => 'red',101'name' => pht('Exception'),102),103self::RESULT_UNKNOWN => array(104'match' => null,105'icon' => 'fa-question',106'color.icon' => 'grey',107'name' => pht('Unknown'),108),109);110}111112}113114115