Changeset View
Changeset View
Standalone View
Standalone View
src/applications/herald/field/HeraldField.php
<?php | <?php | ||||
abstract class HeraldField extends Phobject { | abstract class HeraldField extends Phobject { | ||||
private $adapter; | private $adapter; | ||||
const STANDARD_LIST = 'standard.list'; | |||||
const STANDARD_BOOL = 'standard.bool'; | const STANDARD_BOOL = 'standard.bool'; | ||||
const STANDARD_TEXT = 'standard.text'; | const STANDARD_TEXT = 'standard.text'; | ||||
const STANDARD_TEXT_LIST = 'standard.text.list'; | const STANDARD_TEXT_LIST = 'standard.text.list'; | ||||
const STANDARD_TEXT_MAP = 'standard.text.map'; | const STANDARD_TEXT_MAP = 'standard.text.map'; | ||||
const STANDARD_PHID = 'standard.phid'; | const STANDARD_PHID = 'standard.phid'; | ||||
const STANDARD_PHID_LIST = 'standard.phid.list'; | |||||
const STANDARD_PHID_BOOL = 'standard.phid.bool'; | const STANDARD_PHID_BOOL = 'standard.phid.bool'; | ||||
const STANDARD_PHID_NULLABLE = 'standard.phid.nullable'; | const STANDARD_PHID_NULLABLE = 'standard.phid.nullable'; | ||||
abstract public function getHeraldFieldName(); | abstract public function getHeraldFieldName(); | ||||
abstract public function getHeraldFieldValue($object); | abstract public function getHeraldFieldValue($object); | ||||
protected function getHeraldFieldStandardType() { | |||||
throw new PhutilMethodNotImplementedException(); | |||||
} | |||||
public function getHeraldFieldConditions() { | public function getHeraldFieldConditions() { | ||||
switch ($this->getHeraldFieldStandardConditions()) { | $standard_type = $this->getHeraldFieldStandardType(); | ||||
case self::STANDARD_LIST: | switch ($standard_type) { | ||||
return array( | |||||
HeraldAdapter::CONDITION_INCLUDE_ALL, | |||||
HeraldAdapter::CONDITION_INCLUDE_ANY, | |||||
HeraldAdapter::CONDITION_INCLUDE_NONE, | |||||
HeraldAdapter::CONDITION_EXISTS, | |||||
HeraldAdapter::CONDITION_NOT_EXISTS, | |||||
); | |||||
case self::STANDARD_BOOL: | case self::STANDARD_BOOL: | ||||
return array( | return array( | ||||
HeraldAdapter::CONDITION_IS_TRUE, | HeraldAdapter::CONDITION_IS_TRUE, | ||||
HeraldAdapter::CONDITION_IS_FALSE, | HeraldAdapter::CONDITION_IS_FALSE, | ||||
); | ); | ||||
case self::STANDARD_TEXT: | case self::STANDARD_TEXT: | ||||
return array( | return array( | ||||
HeraldAdapter::CONDITION_CONTAINS, | HeraldAdapter::CONDITION_CONTAINS, | ||||
HeraldAdapter::CONDITION_NOT_CONTAINS, | HeraldAdapter::CONDITION_NOT_CONTAINS, | ||||
HeraldAdapter::CONDITION_IS, | HeraldAdapter::CONDITION_IS, | ||||
HeraldAdapter::CONDITION_IS_NOT, | HeraldAdapter::CONDITION_IS_NOT, | ||||
HeraldAdapter::CONDITION_REGEXP, | HeraldAdapter::CONDITION_REGEXP, | ||||
); | ); | ||||
case self::STANDARD_PHID: | case self::STANDARD_PHID: | ||||
return array( | return array( | ||||
HeraldAdapter::CONDITION_IS_ANY, | HeraldAdapter::CONDITION_IS_ANY, | ||||
HeraldAdapter::CONDITION_IS_NOT_ANY, | HeraldAdapter::CONDITION_IS_NOT_ANY, | ||||
); | ); | ||||
case self::STANDARD_PHID_LIST: | |||||
return array( | |||||
HeraldAdapter::CONDITION_INCLUDE_ALL, | |||||
HeraldAdapter::CONDITION_INCLUDE_ANY, | |||||
HeraldAdapter::CONDITION_INCLUDE_NONE, | |||||
HeraldAdapter::CONDITION_EXISTS, | |||||
HeraldAdapter::CONDITION_NOT_EXISTS, | |||||
); | |||||
case self::STANDARD_PHID_BOOL: | case self::STANDARD_PHID_BOOL: | ||||
return array( | return array( | ||||
HeraldAdapter::CONDITION_EXISTS, | HeraldAdapter::CONDITION_EXISTS, | ||||
HeraldAdapter::CONDITION_NOT_EXISTS, | HeraldAdapter::CONDITION_NOT_EXISTS, | ||||
); | ); | ||||
case self::STANDARD_PHID_NULLABLE: | case self::STANDARD_PHID_NULLABLE: | ||||
return array( | return array( | ||||
HeraldAdapter::CONDITION_IS_ANY, | HeraldAdapter::CONDITION_IS_ANY, | ||||
Show All 9 Lines | switch ($standard_type) { | ||||
case self::STANDARD_TEXT_MAP: | case self::STANDARD_TEXT_MAP: | ||||
return array( | return array( | ||||
HeraldAdapter::CONDITION_CONTAINS, | HeraldAdapter::CONDITION_CONTAINS, | ||||
HeraldAdapter::CONDITION_REGEXP, | HeraldAdapter::CONDITION_REGEXP, | ||||
HeraldAdapter::CONDITION_REGEXP_PAIR, | HeraldAdapter::CONDITION_REGEXP_PAIR, | ||||
); | ); | ||||
} | } | ||||
throw new Exception(pht('Unknown standard condition set.')); | throw new Exception( | ||||
pht( | |||||
'Herald field "%s" has unknown standard type "%s".', | |||||
get_class($this), | |||||
$standard_type)); | |||||
} | } | ||||
protected function getHeraldFieldStandardConditions() { | public function getHeraldFieldValueType($condition) { | ||||
throw new PhutilMethodNotImplementedException(); | $standard_type = $this->getHeraldFieldStandardType(); | ||||
switch ($standard_type) { | |||||
case self::STANDARD_BOOL: | |||||
case self::STANDARD_PHID_BOOL: | |||||
return HeraldAdapter::VALUE_NONE; | |||||
case self::STANDARD_TEXT: | |||||
case self::STANDARD_TEXT_LIST: | |||||
case self::STANDARD_TEXT_MAP: | |||||
return HeraldAdapter::VALUE_TEXT; | |||||
} | } | ||||
abstract public function getHeraldFieldValueType($condition); | throw new Exception( | ||||
pht( | |||||
'Herald field "%s" has unknown standard type "%s".', | |||||
get_class($this), | |||||
$standard_type)); | |||||
} | |||||
abstract public function supportsObject($object); | abstract public function supportsObject($object); | ||||
public function getFieldsForObject($object) { | public function getFieldsForObject($object) { | ||||
return array($this->getFieldConstant() => $this); | return array($this->getFieldConstant() => $this); | ||||
} | } | ||||
public function renderConditionValue( | public function renderConditionValue( | ||||
▲ Show 20 Lines • Show All 93 Lines • Show Last 20 Lines |