@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at recaptime-dev/main 116 lines 3.0 kB view raw
1<?php 2 3final class DifferentialDraftField 4 extends DifferentialCoreCustomField { 5 6 public function getFieldKey() { 7 return 'differential:draft'; 8 } 9 10 public function getFieldName() { 11 return pht('Draft'); 12 } 13 14 public function getFieldDescription() { 15 return pht('Show a warning about draft revisions.'); 16 } 17 18 protected function readValueFromRevision( 19 DifferentialRevision $revision) { 20 return null; 21 } 22 23 public function shouldAppearInPropertyView() { 24 return true; 25 } 26 27 public function renderPropertyViewValue(array $handles) { 28 return null; 29 } 30 31 public function getWarningsForRevisionHeader(array $handles) { 32 $viewer = $this->getViewer(); 33 $revision = $this->getObject(); 34 35 if (!$revision->isDraft()) { 36 return array(); 37 } 38 39 // If the author has held this revision as a draft explicitly, don't 40 // show any misleading messages about it autosubmitting later. We do show 41 // reminder text. 42 if ($revision->getHoldAsDraft()) { 43 return array( 44 pht( 45 'This is a draft revision that has not yet been submitted for '. 46 'review.'), 47 ); 48 } 49 50 $warnings = array(); 51 52 $blocking_map = array( 53 HarbormasterBuildStatus::STATUS_FAILED, 54 HarbormasterBuildStatus::STATUS_ABORTED, 55 HarbormasterBuildStatus::STATUS_ERROR, 56 HarbormasterBuildStatus::STATUS_PAUSED, 57 HarbormasterBuildStatus::STATUS_DEADLOCKED, 58 ); 59 $blocking_map = array_fuse($blocking_map); 60 61 $builds = $revision->loadImpactfulBuilds($viewer); 62 63 $waiting = array(); 64 $blocking = array(); 65 foreach ($builds as $build) { 66 if (isset($blocking_map[$build->getBuildStatus()])) { 67 $blocking[] = $build; 68 } else { 69 $waiting[] = $build; 70 } 71 } 72 73 $blocking_list = $viewer->renderHandleList(mpull($blocking, 'getPHID')) 74 ->setAsInline(true); 75 $waiting_list = $viewer->renderHandleList(mpull($waiting, 'getPHID')) 76 ->setAsInline(true); 77 78 if ($blocking) { 79 $warnings[] = pht( 80 'This draft revision will not be submitted for review because %s '. 81 'build(s) failed: %s.', 82 phutil_count($blocking), 83 $blocking_list); 84 $warnings[] = pht( 85 'Fix build failures and update the revision.'); 86 } else if ($waiting) { 87 $warnings[] = pht( 88 'This draft revision will be sent for review once %s '. 89 'build(s) pass: %s.', 90 phutil_count($waiting), 91 $waiting_list); 92 } else { 93 $warnings[] = pht( 94 'This is a draft revision that has not yet been submitted for '. 95 'review.'); 96 } 97 98 return $warnings; 99 } 100 101 public function getWarningsForDetailView() { 102 $revision = $this->getObject(); 103 104 if ($revision->getShouldBroadcast()) { 105 return array(); 106 } 107 108 return array( 109 pht( 110 'This revision is currently a draft. You can leave comments, but '. 111 'no one will be notified until the revision is submitted for '. 112 'review.'), 113 ); 114 } 115 116}