protected function willFilterPage(array $page)
 {
     $panels = PhabricatorProfilePanel::getAllPanels();
     foreach ($page as $key => $panel) {
         $panel_type = idx($panels, $panel->getPanelKey());
         if (!$panel_type) {
             $this->didRejectResult($panel);
             unset($page[$key]);
             continue;
         }
         $panel->attachPanel($panel_type);
     }
     if (!$page) {
         return array();
     }
     $profile_phids = mpull($page, 'getProfilePHID');
     $profiles = id(new PhabricatorObjectQuery())->setViewer($this->getViewer())->setParentQuery($this)->withPHIDs($profile_phids)->execute();
     $profiles = mpull($profiles, null, 'getPHID');
     foreach ($page as $key => $panel) {
         $profile = idx($profiles, $panel->getProfilePHID());
         if (!$profile) {
             $this->didRejectResult($panel);
             unset($page[$key]);
             continue;
         }
         $panel->attachProfileObject($profile);
     }
     return $page;
 }
コード例 #2
0
 private function buildPanelNewContent($panel_key)
 {
     $panel_types = PhabricatorProfilePanel::getAllPanels();
     $panel_type = idx($panel_types, $panel_key);
     if (!$panel_type) {
         return new Aphront404Response();
     }
     $object = $this->getProfileObject();
     if (!$panel_type->canAddToObject($object)) {
         return new Aphront404Response();
     }
     $configuration = PhabricatorProfilePanelConfiguration::initializeNewPanelConfiguration($object, $panel_type);
     $viewer = $this->getViewer();
     PhabricatorPolicyFilter::requireCapability($viewer, $configuration, PhabricatorPolicyCapability::CAN_EDIT);
     $controller = $this->getController();
     return id(new PhabricatorProfilePanelEditEngine())->setPanelEngine($this)->setProfileObject($object)->setNewPanelConfiguration($configuration)->setController($controller)->buildResponse();
 }