public final function execute() { if (!$this->viewer) { throw new Exception("Call setViewer() before execute()!"); } $results = array(); $filter = new PhabricatorPolicyFilter(); $filter->setViewer($this->viewer); $filter->setCapability(PhabricatorPolicyCapability::CAN_VIEW); $filter->raisePolicyExceptions($this->raisePolicyExceptions); do { $page = $this->loadPage(); $visible = $filter->apply($page); foreach ($visible as $key => $result) { $results[$key] = $result; if ($this->getLimit() && count($results) >= $this->getLimit()) { break 2; } } if (!$this->getLimit() || count($page) < $this->getLimit()) { break; } $this->nextPage($page); } while (true); return $results; }