[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/differential/customfield/ -> DifferentialProjectsField.php (source)

   1  <?php
   2  
   3  final class DifferentialProjectsField
   4    extends DifferentialCoreCustomField {
   5  
   6    public function getFieldKey() {
   7      return 'phabricator:projects';
   8    }
   9  
  10    public function getFieldName() {
  11      return pht('Projects');
  12    }
  13  
  14    public function getFieldDescription() {
  15      return pht('Tag projects.');
  16    }
  17  
  18    public function shouldAppearInPropertyView() {
  19      return false;
  20    }
  21  
  22    public function shouldAppearInEditView() {
  23      return true;
  24    }
  25  
  26    public function shouldAppearInApplicationTransactions() {
  27      return true;
  28    }
  29  
  30    protected function readValueFromRevision(
  31      DifferentialRevision $revision) {
  32      if (!$revision->getPHID()) {
  33        return array();
  34      }
  35  
  36      $projects = PhabricatorEdgeQuery::loadDestinationPHIDs(
  37        $revision->getPHID(),
  38        PhabricatorProjectObjectHasProjectEdgeType::EDGECONST);
  39      $projects = array_reverse($projects);
  40  
  41      return $projects;
  42    }
  43  
  44    public function getNewValueForApplicationTransactions() {
  45      return array('=' => array_fuse($this->getValue()));
  46    }
  47  
  48    public function readValueFromRequest(AphrontRequest $request) {
  49      $this->setValue($request->getArr($this->getFieldKey()));
  50    }
  51  
  52    public function getRequiredHandlePHIDsForEdit() {
  53      return $this->getValue();
  54    }
  55  
  56    public function renderEditControl(array $handles) {
  57      return id(new AphrontFormTokenizerControl())
  58        ->setName($this->getFieldKey())
  59        ->setDatasource(new PhabricatorProjectDatasource())
  60        ->setValue($handles)
  61        ->setLabel($this->getFieldName());
  62    }
  63  
  64    public function getApplicationTransactionType() {
  65      return PhabricatorTransactions::TYPE_EDGE;
  66    }
  67  
  68    public function shouldAppearInCommitMessage() {
  69      return true;
  70    }
  71  
  72    public function shouldAllowEditInCommitMessage() {
  73      return true;
  74    }
  75  
  76    public function shouldOverwriteWhenCommitMessageIsEdited() {
  77      return true;
  78    }
  79  
  80    public function getCommitMessageLabels() {
  81      return array(
  82        'Project',
  83        'Projects',
  84      );
  85    }
  86  
  87    public function getRequiredHandlePHIDsForCommitMessage() {
  88      return $this->getValue();
  89    }
  90  
  91    public function renderCommitMessageValue(array $handles) {
  92      return $this->renderObjectList($handles);
  93    }
  94  
  95    public function shouldAppearInConduitDictionary() {
  96      return true;
  97    }
  98  
  99    public function getApplicationTransactionMetadata() {
 100      return array(
 101        'edge:type' => PhabricatorProjectObjectHasProjectEdgeType::EDGECONST,
 102      );
 103    }
 104  
 105    public function parseValueFromCommitMessage($value) {
 106      return $this->parseObjectList(
 107        $value,
 108        array(
 109          PhabricatorProjectProjectPHIDType::TYPECONST,
 110        ));
 111    }
 112  
 113  }


Generated: Sun Nov 30 09:20:46 2014 Cross-referenced by PHPXref 0.7.1