Path: blob/master/src/applications/differential/customfield/DifferentialAsanaRepresentationField.php
12256 views
<?php12final class DifferentialAsanaRepresentationField3extends DifferentialCustomField {45public function getFieldKey() {6return 'differential:asana-representation';7}89public function getFieldName() {10return pht('In Asana');11}1213public function canDisableField() {14return false;15}1617public function getFieldDescription() {18return pht('Shows revision representation in Asana.');19}2021public function shouldAppearInPropertyView() {22return (bool)PhabricatorEnv::getEnvConfig('asana.workspace-id');23}2425public function renderPropertyViewLabel() {26return $this->getFieldName();27}2829public function renderPropertyViewValue(array $handles) {30$viewer = $this->getViewer();31$src_phid = $this->getObject()->getPHID();32$edge_type = PhabricatorObjectHasAsanaTaskEdgeType::EDGECONST;3334$query = id(new PhabricatorEdgeQuery())35->withSourcePHIDs(array($src_phid))36->withEdgeTypes(array($edge_type))37->needEdgeData(true);3839$edges = $query->execute();40if (!$edges) {41return null;42}4344$edge = head($edges[$src_phid][$edge_type]);4546if (!$edge) {47return null;48}4950if (!empty($edge['data']['gone'])) {51return phutil_tag(52'em',53array(),54pht('Asana Task Deleted'));55}5657$ref = id(new DoorkeeperImportEngine())58->setViewer($viewer)59->withPHIDs(array($edge['dst']))60->needLocalOnly(true)61->executeOne();6263if (!$ref) {64return null;65}6667return id(new DoorkeeperTagView())68->setExternalObject($ref->getExternalObject());69}7071}727374