Page MenuHomePhabricator

D9137.diff
No OneTemporary

D9137.diff

diff --git a/src/applications/people/controller/PhabricatorPeopleListController.php b/src/applications/people/controller/PhabricatorPeopleListController.php
--- a/src/applications/people/controller/PhabricatorPeopleListController.php
+++ b/src/applications/people/controller/PhabricatorPeopleListController.php
@@ -1,7 +1,7 @@
<?php
-final class PhabricatorPeopleListController extends PhabricatorPeopleController
- implements PhabricatorApplicationSearchResultsControllerInterface {
+final class PhabricatorPeopleListController
+ extends PhabricatorPeopleController {
private $key;
@@ -32,79 +32,4 @@
return $this->delegateToController($controller);
}
- public function renderResultsList(
- array $users,
- PhabricatorSavedQuery $query) {
-
- assert_instances_of($users, 'PhabricatorUser');
-
- $request = $this->getRequest();
- $viewer = $request->getUser();
-
- $list = new PHUIObjectItemListView();
-
- $is_approval = ($query->getQueryKey() == 'approval');
-
- foreach ($users as $user) {
- $primary_email = $user->loadPrimaryEmail();
- if ($primary_email && $primary_email->getIsVerified()) {
- $email = pht('Verified');
- } else {
- $email = pht('Unverified');
- }
-
- $item = new PHUIObjectItemView();
- $item->setHeader($user->getFullName())
- ->setHref('/p/'.$user->getUsername().'/')
- ->addAttribute(hsprintf('%s %s',
- phabricator_date($user->getDateCreated(), $viewer),
- phabricator_time($user->getDateCreated(), $viewer)))
- ->addAttribute($email)
- ->setImageURI($user->getProfileImageURI());
-
- if ($is_approval && $primary_email) {
- $item->addAttribute($primary_email->getAddress());
- }
-
- if ($user->getIsDisabled()) {
- $item->addIcon('disable', pht('Disabled'));
- }
-
- if (!$is_approval) {
- if (!$user->getIsApproved()) {
- $item->addIcon('perflab-grey', pht('Needs Approval'));
- }
- }
-
- if ($user->getIsAdmin()) {
- $item->addIcon('highlight', pht('Admin'));
- }
-
- if ($user->getIsSystemAgent()) {
- $item->addIcon('computer', pht('Bot/Script'));
- }
-
- if ($viewer->getIsAdmin()) {
- $user_id = $user->getID();
- if ($is_approval) {
- $item->addAction(
- id(new PHUIListItemView())
- ->setIcon('fa-ban')
- ->setName(pht('Disable'))
- ->setWorkflow(true)
- ->setHref($this->getApplicationURI('disapprove/'.$user_id.'/')));
- $item->addAction(
- id(new PHUIListItemView())
- ->setIcon('fa-thumbs-o-up')
- ->setName(pht('Approve'))
- ->setWorkflow(true)
- ->setHref($this->getApplicationURI('approve/'.$user_id.'/')));
- }
- }
-
- $list->addItem($item);
- }
-
- return $list;
- }
}
diff --git a/src/applications/people/query/PhabricatorPeopleSearchEngine.php b/src/applications/people/query/PhabricatorPeopleSearchEngine.php
--- a/src/applications/people/query/PhabricatorPeopleSearchEngine.php
+++ b/src/applications/people/query/PhabricatorPeopleSearchEngine.php
@@ -3,6 +3,10 @@
final class PhabricatorPeopleSearchEngine
extends PhabricatorApplicationSearchEngine {
+ public function getApplicationClassName() {
+ return 'PhabricatorApplicationPeople';
+ }
+
public function getCustomFieldObject() {
return new PhabricatorUser();
}
@@ -29,6 +33,20 @@
->needPrimaryEmail(true)
->needProfileImage(true);
+ $viewer = $this->requireViewer();
+
+ // If the viewer can't browse the user directory, restrict the query to
+ // just the user's own profile. This is a little bit silly, but serves to
+ // restrict users from creating a dashboard panel which essentially just
+ // contains a user directory anyway.
+ $can_browse = PhabricatorPolicyFilter::hasCapability(
+ $viewer,
+ $this->getApplication(),
+ PeopleCapabilityBrowseUserDirectory::CAPABILITY);
+ if (!$can_browse) {
+ $query->withPHIDs(array($viewer->getPHID()));
+ }
+
$usernames = $saved->getParameter('usernames', array());
if ($usernames) {
$query->withUsernames($usernames);
@@ -170,4 +188,79 @@
return parent::buildSavedQueryFromBuiltin($query_key);
}
+ protected function renderResultList(
+ array $users,
+ PhabricatorSavedQuery $query,
+ array $handles) {
+
+ assert_instances_of($users, 'PhabricatorUser');
+
+ $request = $this->getRequest();
+ $viewer = $this->requireViewer();
+
+ $list = new PHUIObjectItemListView();
+
+ $is_approval = ($query->getQueryKey() == 'approval');
+
+ foreach ($users as $user) {
+ $primary_email = $user->loadPrimaryEmail();
+ if ($primary_email && $primary_email->getIsVerified()) {
+ $email = pht('Verified');
+ } else {
+ $email = pht('Unverified');
+ }
+
+ $item = new PHUIObjectItemView();
+ $item->setHeader($user->getFullName())
+ ->setHref('/p/'.$user->getUsername().'/')
+ ->addAttribute(phabricator_datetime($user->getDateCreated(), $viewer))
+ ->addAttribute($email)
+ ->setImageURI($user->getProfileImageURI());
+
+ if ($is_approval && $primary_email) {
+ $item->addAttribute($primary_email->getAddress());
+ }
+
+ if ($user->getIsDisabled()) {
+ $item->addIcon('fa-ban', pht('Disabled'));
+ }
+
+ if (!$is_approval) {
+ if (!$user->getIsApproved()) {
+ $item->addIcon('fa-clock-o', pht('Needs Approval'));
+ }
+ }
+
+ if ($user->getIsAdmin()) {
+ $item->addIcon('fa-star', pht('Admin'));
+ }
+
+ if ($user->getIsSystemAgent()) {
+ $item->addIcon('fa-desktop', pht('Bot/Script'));
+ }
+
+ if ($viewer->getIsAdmin()) {
+ $user_id = $user->getID();
+ if ($is_approval) {
+ $item->addAction(
+ id(new PHUIListItemView())
+ ->setIcon('fa-ban')
+ ->setName(pht('Disable'))
+ ->setWorkflow(true)
+ ->setHref($this->getApplicationURI('disapprove/'.$user_id.'/')));
+ $item->addAction(
+ id(new PHUIListItemView())
+ ->setIcon('fa-thumbs-o-up')
+ ->setName(pht('Approve'))
+ ->setWorkflow(true)
+ ->setHref($this->getApplicationURI('approve/'.$user_id.'/')));
+ }
+ }
+
+ $list->addItem($item);
+ }
+
+ return $list;
+ }
+
}

File Metadata

Mime Type
text/plain
Expires
Fri, May 24, 4:36 AM (3 w, 2 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6301713
Default Alt Text
D9137.diff (6 KB)

Event Timeline