Introduce an AuditStatus object for commits and move some callsites to it
Summary: Ref T13195. See PHI851. Add an object, analogous to the `DifferentialRevisionStatus` object, to handle audit status management. This will primarily make it easier to swap storage over to strings later, but also cleans things up a bit. Test Plan: Viewed audit/commit lists, saw sensible state icons. Ran `bin/audit synchronize`, got sensible output. Reviewers: amckinley Reviewed By: amckinley Maniphest Tasks: T13195 Differential Revision: https://secure.phabricator.com/D19646
This commit is contained in:
		| @@ -2,6 +2,9 @@ | ||||
|  | ||||
| final class PhabricatorAuditCommitStatusConstants extends Phobject { | ||||
|  | ||||
|   private $key; | ||||
|   private $spec = array(); | ||||
|  | ||||
|   const NONE                = 0; | ||||
|   const NEEDS_AUDIT         = 1; | ||||
|   const CONCERN_RAISED      = 2; | ||||
| @@ -16,6 +19,47 @@ final class PhabricatorAuditCommitStatusConstants extends Phobject { | ||||
|   const MODERN_AUDITED = 'audited'; | ||||
|   const MODERN_NEEDS_VERIFICATION = 'needs-verification'; | ||||
|  | ||||
|   public static function newForLegacyStatus($status) { | ||||
|     $map = self::getMap(); | ||||
|  | ||||
|     foreach ($map as $key => $spec) { | ||||
|       if (idx($spec, 'legacy') == $status) { | ||||
|         return self::newForStatus($key); | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     return self::newForStatus($status); | ||||
|   } | ||||
|  | ||||
|   public static function newForStatus($status) { | ||||
|     $result = new self(); | ||||
|  | ||||
|     $result->key = $status; | ||||
|  | ||||
|     $map = self::getMap(); | ||||
|     if (isset($map[$status])) { | ||||
|       $result->spec = $map[$status]; | ||||
|     } | ||||
|  | ||||
|     return $result; | ||||
|   } | ||||
|  | ||||
|   public function getKey() { | ||||
|     return $this->key; | ||||
|   } | ||||
|  | ||||
|   public function getIcon() { | ||||
|     return idx($this->spec, 'icon'); | ||||
|   } | ||||
|  | ||||
|   public function getColor() { | ||||
|     return idx($this->spec, 'color'); | ||||
|   } | ||||
|  | ||||
|   public function getName() { | ||||
|     return idx($this->spec, 'name', pht('Unknown ("%s")', $this->key)); | ||||
|   } | ||||
|  | ||||
|   public static function getStatusNameMap() { | ||||
|     $map = self::getMap(); | ||||
|     return ipull($map, 'name', 'legacy'); | ||||
|   | ||||
| @@ -30,11 +30,11 @@ final class PhabricatorAuditSynchronizeManagementWorkflow | ||||
|           continue; | ||||
|         } | ||||
|  | ||||
|         $old_status = $commit->getAuditStatus(); | ||||
|         $old_status = $commit->getAuditStatusObject(); | ||||
|         $commit->updateAuditStatus($commit->getAudits()); | ||||
|         $new_status = $commit->getAuditStatus(); | ||||
|         $new_status = $commit->getAuditStatusObject(); | ||||
|  | ||||
|         if ($old_status == $new_status) { | ||||
|         if ($old_status->getKey() == $new_status->getKey()) { | ||||
|           echo tsprintf( | ||||
|             "%s\n", | ||||
|             pht( | ||||
| @@ -46,10 +46,8 @@ final class PhabricatorAuditSynchronizeManagementWorkflow | ||||
|             pht( | ||||
|               'Updating "%s": "%s" -> "%s".', | ||||
|               $commit->getDisplayName(), | ||||
|               PhabricatorAuditCommitStatusConstants::getStatusName( | ||||
|                 $old_status), | ||||
|               PhabricatorAuditCommitStatusConstants::getStatusName( | ||||
|                 $new_status))); | ||||
|               $old_status->getName(), | ||||
|               $new_status->getName())); | ||||
|  | ||||
|           $commit->save(); | ||||
|         } | ||||
|   | ||||
| @@ -120,14 +120,11 @@ final class PhabricatorAuditListView extends AphrontView { | ||||
|       $commit_desc = $this->getCommitDescription($commit_phid); | ||||
|       $committed = phabricator_datetime($commit->getEpoch(), $viewer); | ||||
|  | ||||
|       $status = $commit->getAuditStatus(); | ||||
|       $status = $commit->getAuditStatusObject(); | ||||
|  | ||||
|       $status_text = | ||||
|         PhabricatorAuditCommitStatusConstants::getStatusName($status); | ||||
|       $status_color = | ||||
|         PhabricatorAuditCommitStatusConstants::getStatusColor($status); | ||||
|       $status_icon = | ||||
|         PhabricatorAuditCommitStatusConstants::getStatusIcon($status); | ||||
|       $status_text = $status->getName(); | ||||
|       $status_color = $status->getColor(); | ||||
|       $status_icon = $status->getIcon(); | ||||
|  | ||||
|       $author_phid = $commit->getAuthorPHID(); | ||||
|       if ($author_phid) { | ||||
|   | ||||
| @@ -114,10 +114,10 @@ final class DiffusionHistoryTableView extends DiffusionHistoryView { | ||||
|           'type' => $history->getFileType(), | ||||
|         )); | ||||
|  | ||||
|       $status = $commit->getAuditStatus(); | ||||
|       $icon = PhabricatorAuditCommitStatusConstants::getStatusIcon($status); | ||||
|       $color = PhabricatorAuditCommitStatusConstants::getStatusColor($status); | ||||
|       $name = PhabricatorAuditCommitStatusConstants::getStatusName($status); | ||||
|       $status = $commit->getAuditStatusObject(); | ||||
|       $icon = $status->getIcon(); | ||||
|       $color = $status->getColor(); | ||||
|       $name = $status->getName(); | ||||
|  | ||||
|       $audit_view = id(new PHUIIconView()) | ||||
|         ->setIcon($icon, $color) | ||||
|   | ||||
| @@ -82,10 +82,10 @@ final class PhabricatorRepositoryCommitPHIDType extends PhabricatorPHIDType { | ||||
|       $handle->setURI($commit->getURI()); | ||||
|       $handle->setTimestamp($commit->getEpoch()); | ||||
|  | ||||
|       $status = $commit->getAuditStatus(); | ||||
|       $icon = PhabricatorAuditCommitStatusConstants::getStatusIcon($status); | ||||
|       $color = PhabricatorAuditCommitStatusConstants::getStatusColor($status); | ||||
|       $name = PhabricatorAuditCommitStatusConstants::getStatusName($status); | ||||
|       $status = $commit->getAuditStatusObject(); | ||||
|       $icon = $status->getIcon(); | ||||
|       $color = $status->getColor(); | ||||
|       $name = $status->getName(); | ||||
|  | ||||
|       $handle | ||||
|         ->setStateIcon($icon) | ||||
|   | ||||
| @@ -530,6 +530,11 @@ final class PhabricatorRepositoryCommit | ||||
|     return $data->getCommitDetail('authorPHID'); | ||||
|   } | ||||
|  | ||||
|   public function getAuditStatusObject() { | ||||
|     $status = $this->getAuditStatus(); | ||||
|     return PhabricatorAuditCommitStatusConstants::newForLegacyStatus($status); | ||||
|   } | ||||
|  | ||||
| /* -(  PhabricatorPolicyInterface  )----------------------------------------- */ | ||||
|  | ||||
|   public function getCapabilities() { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 epriestley
					epriestley