1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-14 19:02:41 +01:00
phorge-phorge/src/applications/calendar/controller/PhabricatorCalendarViewStatusController.php
epriestley a22bea2a74 Apply lint rules to Phabricator
Summary: Mostly applies a new call spacing rule; also a few things that have slipped through via pull requests and such

Test Plan: `find src/ -type f -name '*.php' | xargs -n16 arc lint --output summary --apply-patches`

Reviewers: chad

Reviewed By: chad

CC: aran

Differential Revision: https://secure.phabricator.com/D5002
2013-02-19 13:33:10 -08:00

125 lines
3.4 KiB
PHP

<?php
final class PhabricatorCalendarViewStatusController
extends PhabricatorCalendarController {
private $phid;
public function willProcessRequest(array $data) {
$user = $this->getRequest()->getUser();
$this->phid = idx($data, 'phid', $user->getPHID());
$this->loadHandles(array($this->phid));
}
public function processRequest() {
$request = $this->getRequest();
$user = $request->getUser();
$handle = $this->getHandle($this->phid);
$statuses = id(new PhabricatorUserStatus())
->loadAllWhere('userPHID = %s AND dateTo > UNIX_TIMESTAMP()',
$this->phid);
$nav = $this->buildSideNavView();
$nav->selectFilter($this->getFilter());
$page_title = $this->getPageTitle();
$status_list = $this->buildStatusList($statuses);
$status_list->setNoDataString($this->getNoDataString());
$nav->appendChild(
array(
id(new PhabricatorHeaderView())->setHeader($page_title),
$status_list,
));
return $this->buildApplicationPage(
$nav,
array(
'title' => $page_title,
'device' => true
));
}
private function buildStatusList(array $statuses) {
assert_instances_of($statuses, 'PhabricatorUserStatus');
$user = $this->getRequest()->getUser();
$list = new PhabricatorObjectItemListView();
foreach ($statuses as $status) {
if ($status->getUserPHID() == $user->getPHID()) {
$href = $this->getApplicationURI('/status/edit/'.$status->getID().'/');
} else {
$from = $status->getDateFrom();
$month = phabricator_format_local_time($from, $user, 'm');
$year = phabricator_format_local_time($from, $user, 'Y');
$uri = new PhutilURI($this->getApplicationURI());
$uri->setQueryParams(
array(
'month' => $month,
'year' => $year,
));
$href = (string) $uri;
}
$from = phabricator_datetime($status->getDateFrom(), $user);
$to = phabricator_datetime($status->getDateTo(), $user);
$color = ($status->getStatus() == PhabricatorUserStatus::STATUS_AWAY)
? 'red'
: 'yellow';
$item = id(new PhabricatorObjectItemView())
->setHeader($status->getTerseSummary($user))
->setHref($href)
->setBarColor($color)
->addAttribute(pht('From %s to %s', $from, $to))
->addAttribute(
phutil_utf8_shorten($status->getDescription(), 64));
$list->addItem($item);
}
return $list;
}
private function getNoDataString() {
if ($this->isUserRequest()) {
$no_data =
pht('You do not have any upcoming status events.');
} else {
$no_data =
pht('%s does not have any upcoming status events.',
$this->getHandle($this->phid)->getName());
}
return $no_data;
}
private function getFilter() {
if ($this->isUserRequest()) {
$filter = 'status/';
} else {
$filter = 'status/view/'.$this->phid.'/';
}
return $filter;
}
private function getPageTitle() {
if ($this->isUserRequest()) {
$page_title = pht('Upcoming Statuses');
} else {
$page_title = pht(
'Upcoming Statuses for %s',
$this->getHandle($this->phid)->getName());
}
return $page_title;
}
private function isUserRequest() {
$user = $this->getRequest()->getUser();
return $this->phid == $user->getPHID();
}
}