1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-12-24 06:20:56 +01:00

Show only recent open revisions affecting the same files

Summary: Fixes T5658. Over a long period of time, some cruft can build up here. Only show revisions which have been updated in the last 30 days.

Test Plan:
  - Viewed panel in Differential and Diffusion.
  - Changed limit from 30 days to 30 seconds and saw no revisions.

Reviewers: btrahan

Reviewed By: btrahan

Subscribers: epriestley

Maniphest Tasks: T5658

Differential Revision: https://secure.phabricator.com/D12158
This commit is contained in:
epriestley 2015-03-25 10:21:56 -07:00
parent 6ce4044bfa
commit e5445de163
4 changed files with 47 additions and 5 deletions

View file

@ -780,9 +780,12 @@ final class DifferentialRevisionViewController extends DifferentialController {
return array();
}
$recent = (PhabricatorTime::getNow() - phutil_units('30 days in seconds'));
$query = id(new DifferentialRevisionQuery())
->setViewer($this->getRequest()->getUser())
->withStatus(DifferentialRevisionQuery::STATUS_OPEN)
->withUpdatedEpochBetween($recent, null)
->setOrder(DifferentialRevisionQuery::ORDER_PATH_MODIFIED)
->setLimit(10)
->needFlags(true)
@ -807,13 +810,17 @@ final class DifferentialRevisionViewController extends DifferentialController {
private function renderOtherRevisions(array $revisions) {
assert_instances_of($revisions, 'DifferentialRevision');
$viewer = $this->getViewer();
$user = $this->getRequest()->getUser();
$header = id(new PHUIHeaderView())
->setHeader(pht('Similar Open Revisions'))
->setSubheader(
pht('Recently updated open revisions affecting the same files.'));
$view = id(new DifferentialRevisionListView())
->setHeader(pht('Open Revisions Affecting These Files'))
->setHeader($header)
->setRevisions($revisions)
->setUser($user);
->setUser($viewer);
$phids = $view->getRequiredHandlePHIDs();
$handles = $this->loadViewerHandles($phids);

View file

@ -38,6 +38,8 @@ final class DifferentialRevisionQuery
private $branches = array();
private $arcanistProjectPHIDs = array();
private $repositoryPHIDs;
private $updatedEpochMin;
private $updatedEpochMax;
private $order = 'order-modified';
const ORDER_MODIFIED = 'order-modified';
@ -253,6 +255,12 @@ final class DifferentialRevisionQuery
return $this;
}
public function withUpdatedEpochBetween($min, $max) {
$this->updatedEpochMin = $min;
$this->updatedEpochMax = $max;
return $this;
}
/**
* Set result ordering. Provide a class constant, such as
@ -764,6 +772,20 @@ final class DifferentialRevisionQuery
$this->arcanistProjectPHIDs);
}
if ($this->updatedEpochMin !== null) {
$where[] = qsprintf(
$conn_r,
'r.dateModified >= %d',
$this->updatedEpochMin);
}
if ($this->updatedEpochMax !== null) {
$where[] = qsprintf(
$conn_r,
'r.dateModified <= %d',
$this->updatedEpochMax);
}
switch ($this->status) {
case self::STATUS_ANY:
break;

View file

@ -191,8 +191,13 @@ final class DifferentialRevisionListView extends AphrontView {
if ($this->header && !$this->noBox) {
$list->setFlush(true);
$list = id(new PHUIObjectBoxView())
->setHeaderText($this->header)
->appendChild($list);
if ($this->header instanceof PHUIHeaderView) {
$list->setHeader($this->header);
} else {
$list->setHeaderText($this->header);
}
} else {
$list->setHeader($this->header);
}

View file

@ -192,10 +192,13 @@ abstract class DiffusionBrowseController extends DiffusionController {
return null;
}
$recent = (PhabricatorTime::getNow() - phutil_units('30 days in seconds'));
$revisions = id(new DifferentialRevisionQuery())
->setViewer($user)
->withPath($repository->getID(), $path_id)
->withStatus(DifferentialRevisionQuery::STATUS_OPEN)
->withUpdatedEpochBetween($recent, null)
->setOrder(DifferentialRevisionQuery::ORDER_PATH_MODIFIED)
->setLimit(10)
->needRelationships(true)
@ -207,8 +210,13 @@ abstract class DiffusionBrowseController extends DiffusionController {
return null;
}
$header = id(new PHUIHeaderView())
->setHeader(pht('Open Revisions'))
->setSubheader(
pht('Recently updated open revisions affecting this file.'));
$view = id(new DifferentialRevisionListView())
->setHeader(pht('Pending Differential Revisions'))
->setHeader($header)
->setRevisions($revisions)
->setUser($user);