Path: blob/master/src/applications/diffusion/engineextension/DiffusionHovercardEngineExtension.php
12242 views
<?php12final class DiffusionHovercardEngineExtension3extends PhabricatorHovercardEngineExtension {45const EXTENSIONKEY = 'diffusion';67public function isExtensionEnabled() {8return PhabricatorApplication::isClassInstalled(9'PhabricatorDiffusionApplication');10}1112public function getExtensionName() {13return pht('Diffusion Commits');14}1516public function canRenderObjectHovercard($object) {17return ($object instanceof PhabricatorRepositoryCommit);18}1920public function renderHovercard(21PHUIHovercardView $hovercard,22PhabricatorObjectHandle $handle,23$commit,24$data) {2526$viewer = $this->getViewer();2728$commit = id(new DiffusionCommitQuery())29->setViewer($viewer)30->needIdentities(true)31->needCommitData(true)32->withPHIDs(array($commit->getPHID()))33->executeOne();34if (!$commit) {35return;36}3738$author_phid = $commit->getAuthorDisplayPHID();39$committer_phid = $commit->getCommitterDisplayPHID();40$repository_phid = $commit->getRepository()->getPHID();4142$phids = array();43$phids[] = $author_phid;44$phids[] = $committer_phid;45$phids[] = $repository_phid;4647$handles = $viewer->loadHandles($phids);4849$hovercard->setTitle($handle->getName());5051// See T13620. Use a longer slice of the message than the "summary" here,52// since we have at least a few lines of room in the UI.53$commit_message = $commit->getCommitMessageForDisplay();5455$message_limit = 512;5657$short_message = id(new PhutilUTF8StringTruncator())58->setMaximumBytes($message_limit * 4)59->setMaximumGlyphs($message_limit)60->truncateString($commit_message);61$short_message = phutil_escape_html_newlines($short_message);6263$hovercard->setDetail($short_message);6465$repository = $handles[$repository_phid]->renderLink();66$hovercard->addField(pht('Repository'), $repository);6768$author = $handles[$author_phid]->renderLink();69if ($author_phid) {70$hovercard->addField(pht('Author'), $author);71}7273if ($committer_phid && ($committer_phid !== $author_phid)) {74$committer = $handles[$committer_phid]->renderLink();75$hovercard->addField(pht('Committer'), $committer);76}7778$date = phabricator_date($commit->getEpoch(), $viewer);79$hovercard->addField(pht('Commit Date'), $date);8081if (!$commit->isAuditStatusNoAudit()) {82$status = $commit->getAuditStatusObject();8384$hovercard->addField(85pht('Audit Status'),86$status->getName());87}88}8990}919293