@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 115 lines 2.8 kB view raw
1<?php 2 3final class DifferentialLintField 4 extends DifferentialHarbormasterField { 5 6 public function getFieldKey() { 7 return 'differential:lint'; 8 } 9 10 public function getFieldName() { 11 return pht('Lint'); 12 } 13 14 public function getFieldDescription() { 15 return pht('Shows lint results.'); 16 } 17 18 public function shouldAppearInPropertyView() { 19 return true; 20 } 21 22 public function renderPropertyViewValue(array $handles) { 23 return null; 24 } 25 26 public function shouldAppearInDiffPropertyView() { 27 return true; 28 } 29 30 public function renderDiffPropertyViewLabel(DifferentialDiff $diff) { 31 return $this->getFieldName(); 32 } 33 34 protected function getLegacyProperty() { 35 return 'arc:lint'; 36 } 37 38 protected function getDiffPropertyKeys() { 39 return array( 40 'arc:lint', 41 ); 42 } 43 44 protected function loadHarbormasterTargetMessages(array $target_phids) { 45 return id(new HarbormasterBuildLintMessage())->loadAllWhere( 46 'buildTargetPHID IN (%Ls) LIMIT 25', 47 $target_phids); 48 } 49 50 protected function newHarbormasterMessageView(array $messages) { 51 return id(new HarbormasterLintPropertyView()) 52 ->setLimit(25) 53 ->setLintMessages($messages); 54 } 55 56 protected function newModernMessage(array $message) { 57 return HarbormasterBuildLintMessage::newFromDictionary( 58 new HarbormasterBuildTarget(), 59 $this->getModernLintMessageDictionary($message)); 60 } 61 62 public function getWarningsForDetailView() { 63 $status = $this->getObject()->getActiveDiff()->getLintStatus(); 64 if ($status < DifferentialLintStatus::LINT_WARN) { 65 return array(); 66 } 67 if ($status == DifferentialLintStatus::LINT_AUTO_SKIP) { 68 return array(); 69 } 70 71 $warnings = array(); 72 if ($status == DifferentialLintStatus::LINT_SKIP) { 73 $warnings[] = pht( 74 'Lint was skipped when generating these changes.'); 75 } else { 76 $warnings[] = pht('These changes have lint problems.'); 77 } 78 79 return $warnings; 80 } 81 82 protected function renderHarbormasterStatus( 83 DifferentialDiff $diff, 84 array $messages) { 85 86 $status_value = $diff->getLintStatus(); 87 $status = DifferentialLintStatus::newStatusFromValue($status_value); 88 89 $status_icon = $status->getIconIcon(); 90 $status_color = $status->getIconColor(); 91 $status_name = $status->getName(); 92 93 $status = id(new PHUIStatusListView()) 94 ->addItem( 95 id(new PHUIStatusItemView()) 96 ->setIcon($status_icon, $status_color) 97 ->setTarget($status_name)); 98 99 return $status; 100 } 101 102 private function getModernLintMessageDictionary(array $map) { 103 // Strip out `null` values to satisfy stricter typechecks. 104 foreach ($map as $key => $value) { 105 if ($value === null) { 106 unset($map[$key]); 107 } 108 } 109 110 // TODO: We might need to remap some stuff here? 111 return $map; 112 } 113 114 115}