Path: blob/master/src/applications/differential/engineextension/DifferentialHovercardEngineExtension.php
12256 views
<?php12final class DifferentialHovercardEngineExtension3extends PhabricatorHovercardEngineExtension {45const EXTENSIONKEY = 'differential';67public function isExtensionEnabled() {8return PhabricatorApplication::isClassInstalled(9'PhabricatorDifferentialApplication');10}1112public function getExtensionName() {13return pht('Differential Revisions');14}1516public function canRenderObjectHovercard($object) {17return ($object instanceof DifferentialRevision);18}1920public function willRenderHovercards(array $objects) {21$viewer = $this->getViewer();22$phids = mpull($objects, 'getPHID');2324$revisions = id(new DifferentialRevisionQuery())25->setViewer($viewer)26->withPHIDs($phids)27->needReviewers(true)28->execute();29$revisions = mpull($revisions, null, 'getPHID');3031return array(32'revisions' => $revisions,33);34}3536public function renderHovercard(37PHUIHovercardView $hovercard,38PhabricatorObjectHandle $handle,39$object,40$data) {4142$viewer = $this->getViewer();4344$revision = idx($data['revisions'], $object->getPHID());45if (!$revision) {46return;47}4849$hovercard->setTitle('D'.$revision->getID());50$hovercard->setDetail($revision->getTitle());5152$hovercard->addField(53pht('Author'),54$viewer->renderHandle($revision->getAuthorPHID()));5556$reviewer_phids = $revision->getReviewerPHIDs();5758$hovercard->addField(59pht('Reviewers'),60$viewer->renderHandleList($reviewer_phids)->setAsInline(true));6162$summary = $revision->getSummary();63if (strlen($summary)) {64$summary = id(new PhutilUTF8StringTruncator())65->setMaximumGlyphs(120)66->truncateString($summary);6768$hovercard->addField(pht('Summary'), $summary);69}7071}7273}747576