@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at recaptime-dev/main 139 lines 3.3 kB view raw
1<?php 2 3abstract class PhabricatorPeopleProfileController 4 extends PhabricatorPeopleController { 5 6 private $user; 7 8 public function shouldRequireAdmin() { 9 return false; 10 } 11 12 public function setUser(PhabricatorUser $user) { 13 $this->user = $user; 14 return $this; 15 } 16 17 public function getUser() { 18 return $this->user; 19 } 20 21 protected function buildApplicationCrumbs() { 22 $crumbs = parent::buildApplicationCrumbs(); 23 24 $user = $this->getUser(); 25 if ($user) { 26 $crumbs->addTextCrumb( 27 $user->getUsername(), 28 urisprintf('/p/%s/', $user->getUsername())); 29 } 30 31 return $crumbs; 32 } 33 34 public function buildProfileHeader() { 35 $user = $this->user; 36 $viewer = $this->getViewer(); 37 38 $profile = $user->loadUserProfile(); 39 $picture = $user->getProfileImageURI(); 40 41 $profile_icon = PhabricatorPeopleIconSet::getIconIcon($profile->getIcon()); 42 $profile_title = $profile->getDisplayTitle(); 43 44 45 $tag = id(new PHUITagView()) 46 ->setType(PHUITagView::TYPE_SHADE); 47 48 $tags = array(); 49 if ($user->getIsAdmin()) { 50 $tags[] = id(clone $tag) 51 ->setName(pht('Administrator')) 52 ->setColor('blue'); 53 } 54 55 // "Disabled" gets a stronger status tag below. 56 57 if (!$user->getIsApproved()) { 58 $tags[] = id(clone $tag) 59 ->setName('Not Approved') 60 ->setColor('yellow'); 61 } 62 63 if ($user->getIsSystemAgent()) { 64 $tags[] = id(clone $tag) 65 ->setName(pht('Bot')) 66 ->setColor('orange'); 67 } 68 69 if ($user->getIsMailingList()) { 70 $tags[] = id(clone $tag) 71 ->setName(pht('Mailing List')) 72 ->setColor('orange'); 73 } 74 75 if (!$user->getIsEmailVerified()) { 76 $tags[] = id(clone $tag) 77 ->setName(pht('Email Not Verified')) 78 ->setColor('violet'); 79 } 80 81 if ($viewer->getIsAdmin() && $user->getIsEnrolledInMultiFactor()) { 82 $tags[] = id(clone $tag) 83 ->setName(pht('Has MFA')) 84 ->setIcon('fa-lock') 85 ->setColor('green'); 86 } 87 88 $header = id(new PHUIHeaderView()) 89 ->setHeader($user->getFullName()) 90 ->setImage($picture) 91 ->setProfileHeader(true) 92 ->addClass('people-profile-header'); 93 94 foreach ($tags as $tag) { 95 $header->addTag($tag); 96 } 97 98 require_celerity_resource('project-view-css'); 99 100 if ($user->getIsDisabled()) { 101 $header->setStatus('fa-ban', 'red', pht('Disabled')); 102 } else { 103 $header->setStatus($profile_icon, 'bluegrey', $profile_title); 104 } 105 106 $can_edit = PhabricatorPolicyFilter::hasCapability( 107 $viewer, 108 $user, 109 PhabricatorPolicyCapability::CAN_EDIT); 110 111 if ($can_edit) { 112 $id = $user->getID(); 113 $header->setImageEditURL($this->getApplicationURI("picture/{$id}/")); 114 } 115 116 return $header; 117 } 118 119 final protected function newNavigation( 120 PhabricatorUser $user, 121 $item_identifier) { 122 123 $viewer = $this->getViewer(); 124 125 $engine = id(new PhabricatorPeopleProfileMenuEngine()) 126 ->setViewer($viewer) 127 ->setController($this) 128 ->setProfileObject($user); 129 130 $view_list = $engine->newProfileMenuItemViewList(); 131 132 $view_list->setSelectedViewWithItemIdentifier($item_identifier); 133 134 $navigation = $view_list->newNavigationView(); 135 136 return $navigation; 137 } 138 139}