From 5138bf8bff7bb7a75427e00b13679d7b352adef7 Mon Sep 17 00:00:00 2001 From: epriestley Date: Wed, 28 Aug 2013 13:06:29 -0700 Subject: [PATCH] Restore fields to Releeph from prior to CustomField patch Summary: See notes / inlines. Test Plan: See inlines. Reviewers: wez, btrahan Reviewed By: btrahan CC: btrahan, aran Differential Revision: https://secure.phabricator.com/D6831 --- .../selector/ReleephDefaultFieldSelector.php | 186 +++++++++++++----- .../releeph/query/ReleephRequestQuery.php | 10 +- .../query/ReleephRequestSearchEngine.php | 21 +- 3 files changed, 162 insertions(+), 55 deletions(-) diff --git a/src/applications/releeph/field/selector/ReleephDefaultFieldSelector.php b/src/applications/releeph/field/selector/ReleephDefaultFieldSelector.php index 9863db71db..0801203b89 100644 --- a/src/applications/releeph/field/selector/ReleephDefaultFieldSelector.php +++ b/src/applications/releeph/field/selector/ReleephDefaultFieldSelector.php @@ -2,63 +2,151 @@ final class ReleephDefaultFieldSelector extends ReleephFieldSelector { + /** + * Determine if this install is Facebook. + * + * TODO: This is a giant hacky mess because I am dumb and moved forward on + * Releeph changes with partial information. Recover from this as gracefully + * as possible. This obivously is an abomination. -epriestley + */ + public static function isFacebook() { + try { + class_exists('ReleephFacebookKarmaFieldSpecification'); + return true; + } catch (Exception $ex) { + return false; + } + } + + /** + * @phutil-external-symbol class ReleephFacebookKarmaFieldSpecification + * @phutil-external-symbol class ReleephFacebookSeverityFieldSpecification + * @phutil-external-symbol class ReleephFacebookTagFieldSpecification + * @phutil-external-symbol class ReleephFacebookTasksFieldSpecification + */ public function getFieldSpecifications() { - return array( - new ReleephCommitMessageFieldSpecification(), - new ReleephSummaryFieldSpecification(), - new ReleephReasonFieldSpecification(), - new ReleephAuthorFieldSpecification(), - new ReleephRevisionFieldSpecification(), - new ReleephRequestorFieldSpecification(), - new ReleephSeverityFieldSpecification(), - new ReleephOriginalCommitFieldSpecification(), - new ReleephDiffMessageFieldSpecification(), - new ReleephStatusFieldSpecification(), - new ReleephIntentFieldSpecification(), - new ReleephBranchCommitFieldSpecification(), - new ReleephDiffSizeFieldSpecification(), - new ReleephDiffChurnFieldSpecification(), - ); + if (self::isFacebook()) { + return array( + new ReleephCommitMessageFieldSpecification(), + new ReleephSummaryFieldSpecification(), + new ReleephReasonFieldSpecification(), + new ReleephAuthorFieldSpecification(), + new ReleephRevisionFieldSpecification(), + new ReleephRequestorFieldSpecification(), + new ReleephFacebookKarmaFieldSpecification(), + new ReleephFacebookSeverityFieldSpecification(), + new ReleephOriginalCommitFieldSpecification(), + new ReleephDiffMessageFieldSpecification(), + new ReleephStatusFieldSpecification(), + new ReleephIntentFieldSpecification(), + new ReleephBranchCommitFieldSpecification(), + new ReleephDiffSizeFieldSpecification(), + new ReleephDiffChurnFieldSpecification(), + new ReleephFacebookTagFieldSpecification(), + new ReleephFacebookTasksFieldSpecification(), + ); + } else { + return array( + new ReleephCommitMessageFieldSpecification(), + new ReleephSummaryFieldSpecification(), + new ReleephReasonFieldSpecification(), + new ReleephAuthorFieldSpecification(), + new ReleephRevisionFieldSpecification(), + new ReleephRequestorFieldSpecification(), + new ReleephSeverityFieldSpecification(), + new ReleephOriginalCommitFieldSpecification(), + new ReleephDiffMessageFieldSpecification(), + new ReleephStatusFieldSpecification(), + new ReleephIntentFieldSpecification(), + new ReleephBranchCommitFieldSpecification(), + new ReleephDiffSizeFieldSpecification(), + new ReleephDiffChurnFieldSpecification(), + ); + } } public function arrangeFieldsForHeaderView(array $fields) { - return array( - // Top group - array( - 'left' => self::selectFields($fields, array( - 'ReleephAuthorFieldSpecification', - 'ReleephRevisionFieldSpecification', - 'ReleephOriginalCommitFieldSpecification', - 'ReleephDiffSizeFieldSpecification', - 'ReleephDiffChurnFieldSpecification', - )), - 'right' => self::selectFields($fields, array( - 'ReleephRequestorFieldSpecification', - 'ReleephSeverityFieldSpecification', - 'ReleephStatusFieldSpecification', - 'ReleephIntentFieldSpecification', - 'ReleephBranchCommitFieldSpecification', - )) - ), + if (self::isFacebook()) { + return array( + // Top group + array( + 'left' => self::selectFields($fields, array( + 'ReleephAuthorFieldSpecification', + 'ReleephRevisionFieldSpecification', + 'ReleephOriginalCommitFieldSpecification', + 'ReleephDiffSizeFieldSpecification', + 'ReleephDiffChurnFieldSpecification', + 'ReleephFacebookTasksFieldSpecification', + )), + 'right' => self::selectFields($fields, array( + 'ReleephRequestorFieldSpecification', + 'ReleephFacebookKarmaFieldSpecification', + 'ReleephFacebookSeverityFieldSpecification', + 'ReleephFacebookTagFieldSpecification', + 'ReleephStatusFieldSpecification', + 'ReleephIntentFieldSpecification', + 'ReleephBranchCommitFieldSpecification', + )) + ), - // Bottom group - array( - 'left' => self::selectFields($fields, array( - 'ReleephDiffMessageFieldSpecification', - )), - 'right' => self::selectFields($fields, array( - 'ReleephReasonFieldSpecification', - )) - ) - ); + // Bottom group + array( + 'left' => self::selectFields($fields, array( + 'ReleephDiffMessageFieldSpecification', + )), + 'right' => self::selectFields($fields, array( + 'ReleephReasonFieldSpecification', + )) + ) + ); + } else { + return array( + // Top group + array( + 'left' => self::selectFields($fields, array( + 'ReleephAuthorFieldSpecification', + 'ReleephRevisionFieldSpecification', + 'ReleephOriginalCommitFieldSpecification', + 'ReleephDiffSizeFieldSpecification', + 'ReleephDiffChurnFieldSpecification', + )), + 'right' => self::selectFields($fields, array( + 'ReleephRequestorFieldSpecification', + 'ReleephSeverityFieldSpecification', + 'ReleephStatusFieldSpecification', + 'ReleephIntentFieldSpecification', + 'ReleephBranchCommitFieldSpecification', + )) + ), + + // Bottom group + array( + 'left' => self::selectFields($fields, array( + 'ReleephDiffMessageFieldSpecification', + )), + 'right' => self::selectFields($fields, array( + 'ReleephReasonFieldSpecification', + )) + ) + ); + } } public function arrangeFieldsForSelectForm(array $fields) { - return self::selectFields($fields, array( - 'ReleephStatusFieldSpecification', - 'ReleephSeverityFieldSpecification', - 'ReleephRequestorFieldSpecification', - )); + if (self::isFacebook()) { + return self::selectFields($fields, array( + 'ReleephStatusFieldSpecification', + 'ReleephFacebookSeverityFieldSpecification', + 'ReleephRequestorFieldSpecification', + 'ReleephFacebookTagFieldSpecification', + )); + } else { + return self::selectFields($fields, array( + 'ReleephStatusFieldSpecification', + 'ReleephSeverityFieldSpecification', + 'ReleephRequestorFieldSpecification', + )); + } } public function sortFieldsForCommitMessage(array $fields) { diff --git a/src/applications/releeph/query/ReleephRequestQuery.php b/src/applications/releeph/query/ReleephRequestQuery.php index 02ca00b676..b57bc7a79b 100644 --- a/src/applications/releeph/query/ReleephRequestQuery.php +++ b/src/applications/releeph/query/ReleephRequestQuery.php @@ -117,7 +117,15 @@ final class ReleephRequestQuery if ($this->severities) { $severities = array_fuse($this->severities); foreach ($requests as $key => $request) { - if (empty($severities[$request->getDetail('releeph:severity')])) { + + // NOTE: Facebook uses a custom field here. + if (ReleephDefaultFieldSelector::isFacebook()) { + $severity = $request->getDetail('severity'); + } else { + $severity = $request->getDetail('releeph:severity'); + } + + if (empty($severities[$severity])) { unset($requests[$key]); } } diff --git a/src/applications/releeph/query/ReleephRequestSearchEngine.php b/src/applications/releeph/query/ReleephRequestSearchEngine.php index 9f30734838..0042fec9d6 100644 --- a/src/applications/releeph/query/ReleephRequestSearchEngine.php +++ b/src/applications/releeph/query/ReleephRequestSearchEngine.php @@ -148,11 +148,22 @@ final class ReleephRequestSearchEngine } private function getSeverityOptions() { - return array( - '' => pht('(All Severities)'), - ReleephSeverityFieldSpecification::HOTFIX => pht('Hotfix'), - ReleephSeverityFieldSpecification::RELEASE => pht('Release'), - ); + if (ReleephDefaultFieldSelector::isFacebook()) { + return array( + '' => pht('(All Severities)'), + 11 => 'HOTFIX', + 12 => 'PIGGYBACK', + 13 => 'RELEASE', + 14 => 'DAILY', + 15 => 'PARKING', + ); + } else { + return array( + '' => pht('(All Severities)'), + ReleephSeverityFieldSpecification::HOTFIX => pht('Hotfix'), + ReleephSeverityFieldSpecification::RELEASE => pht('Release'), + ); + } } }