Differential D17020 Diff 41026 src/applications/release/changes/ReleaseChangeRequestImplementation.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/release/changes/ReleaseChangeRequestImplementation.php
- This file was added.
<?php | |||||
abstract class ReleaseChangeRequestImplementation extends Phobject { | |||||
public abstract function getTitle(ReleaseChangeRequest $request); | |||||
final public function getImplementationKey() { | |||||
return $this->getPhobjectClassConstant('IMPLEMENTATION_KEY'); | |||||
} | |||||
// TODO does this need caching if we load lots of requests? | |||||
public static function getImplementationByKey($key) { | |||||
$all = id(new PhutilClassMapQuery()) | |||||
->setAncestorClass(__CLASS__) | |||||
->setUniqueMethod('getImplementationKey') | |||||
->execute(); | |||||
$implementation = idx($all, $key); | |||||
if (!$implementation) { | |||||
throw new Exception(pht('Implementation not found for key %s', $key)); | |||||
} | |||||
return $implementation; | |||||
} | |||||
public function createRequest() { | |||||
return id(new ReleaseChangeRequest()) | |||||
->setImplementationKey($this->getImplementationKey()) | |||||
->setRequestedObjectPHID($this->getRequestReference()); | |||||
} | |||||
/** | |||||
* Return the value to use for the requestReference field in the Request. | |||||
*/ | |||||
protected abstract function getRequestReference(); | |||||
} |