Path: blob/master/src/applications/differential/customfield/DifferentialDraftField.php
12256 views
<?php12final class DifferentialDraftField3extends DifferentialCoreCustomField {45public function getFieldKey() {6return 'differential:draft';7}89public function getFieldName() {10return pht('Draft');11}1213public function getFieldDescription() {14return pht('Show a warning about draft revisions.');15}1617protected function readValueFromRevision(18DifferentialRevision $revision) {19return null;20}2122public function shouldAppearInPropertyView() {23return true;24}2526public function renderPropertyViewValue(array $handles) {27return null;28}2930public function getWarningsForRevisionHeader(array $handles) {31$viewer = $this->getViewer();32$revision = $this->getObject();3334if (!$revision->isDraft()) {35return array();36}3738// If the author has held this revision as a draft explicitly, don't39// show any misleading messages about it autosubmitting later. We do show40// reminder text.41if ($revision->getHoldAsDraft()) {42return array(43pht(44'This is a draft revision that has not yet been submitted for '.45'review.'),46);47}4849$warnings = array();5051$blocking_map = array(52HarbormasterBuildStatus::STATUS_FAILED,53HarbormasterBuildStatus::STATUS_ABORTED,54HarbormasterBuildStatus::STATUS_ERROR,55HarbormasterBuildStatus::STATUS_PAUSED,56HarbormasterBuildStatus::STATUS_DEADLOCKED,57);58$blocking_map = array_fuse($blocking_map);5960$builds = $revision->loadImpactfulBuilds($viewer);6162$waiting = array();63$blocking = array();64foreach ($builds as $build) {65if (isset($blocking_map[$build->getBuildStatus()])) {66$blocking[] = $build;67} else {68$waiting[] = $build;69}70}7172$blocking_list = $viewer->renderHandleList(mpull($blocking, 'getPHID'))73->setAsInline(true);74$waiting_list = $viewer->renderHandleList(mpull($waiting, 'getPHID'))75->setAsInline(true);7677if ($blocking) {78$warnings[] = pht(79'This draft revision will not be submitted for review because %s '.80'build(s) failed: %s.',81phutil_count($blocking),82$blocking_list);83$warnings[] = pht(84'Fix build failures and update the revision.');85} else if ($waiting) {86$warnings[] = pht(87'This draft revision will be sent for review once %s '.88'build(s) pass: %s.',89phutil_count($waiting),90$waiting_list);91} else {92$warnings[] = pht(93'This is a draft revision that has not yet been submitted for '.94'review.');95}9697return $warnings;98}99100public function getWarningsForDetailView() {101$revision = $this->getObject();102103if ($revision->getShouldBroadcast()) {104return array();105}106107return array(108pht(109'This revision is currently a draft. You can leave comments, but '.110'no one will be notified until the revision is submitted for '.111'review.'),112);113}114115}116117118