Path: blob/master/src/view/page/menu/PhabricatorMainMenuBarExtension.php
12242 views
<?php12abstract class PhabricatorMainMenuBarExtension extends Phobject {34private $viewer;5private $application;6private $controller;7private $isFullSession;89public function setViewer(PhabricatorUser $viewer) {10$this->viewer = $viewer;11return $this;12}1314public function getViewer() {15return $this->viewer;16}1718public function setApplication(PhabricatorApplication $application) {19$this->application = $application;20return $this;21}2223public function getApplication() {24return $this->application;25}2627public function setController(PhabricatorController $controller) {28$this->controller = $controller;29return $this;30}3132public function getController() {33return $this->controller;34}3536public function setIsFullSession($is_full_session) {37$this->isFullSession = $is_full_session;38return $this;39}4041public function getIsFullSession() {42return $this->isFullSession;43}4445final public function getExtensionKey() {46return $this->getPhobjectClassConstant('MAINMENUBARKEY');47}4849public function isExtensionEnabled() {50return true;51}5253public function shouldRequireFullSession() {54return true;55}5657public function isExtensionEnabledForViewer(PhabricatorUser $viewer) {58if (!$viewer->isLoggedIn()) {59return false;60}6162if (!$viewer->isUserActivated()) {63return false;64}6566// Don't show menus for users with partial sessions. This usually means67// they have logged in but have not made it through MFA, so we don't want68// to show notification counts, saved queries, etc.69if (!$viewer->hasSession()) {70return false;71}7273if ($viewer->getSession()->getIsPartial()) {74return false;75}7677return true;78}7980public function getExtensionOrder() {81return 1000;82}8384abstract public function buildMainMenus();8586final public static function getAllExtensions() {87return id(new PhutilClassMapQuery())88->setAncestorClass(__CLASS__)89->setUniqueMethod('getExtensionKey')90->setSortMethod('getExtensionOrder')91->execute();92}9394final public static function getAllEnabledExtensions() {95$extensions = self::getAllExtensions();9697foreach ($extensions as $key => $extension) {98if (!$extension->isExtensionEnabled()) {99unset($extensions[$key]);100}101}102103return $extensions;104}105106}107108109