protected function buildJoinClauseParts(AphrontDatabaseConnection $conn)
 {
     $joins = parent::buildJoinClauseParts($conn);
     $join_publisher = $this->fullKeys !== null;
     if ($join_publisher) {
         $publisher_table = new PhabricatorPackagesPublisher();
         $joins[] = qsprintf($conn, 'JOIN %T u ON u.phid = p.publisherPHID', $publisher_table->getTableName());
     }
     return $joins;
 }
 private function buildPackagesView(PhabricatorPackagesPublisher $publisher)
 {
     $viewer = $this->getViewer();
     $packages = id(new PhabricatorPackagesPackageQuery())->setViewer($viewer)->withPublisherPHIDs(array($publisher->getPHID()))->setLimit(25)->execute();
     $packages_list = id(new PhabricatorPackagesPackageListView())->setViewer($viewer)->setPackages($packages);
     $all_href = urisprintf('package/?publisher=%s#R', $publisher->getPHID());
     $all_href = $this->getApplicationURI($all_href);
     $view_all = id(new PHUIButtonView())->setTag('a')->setIcon('fa-search')->setText(pht('View All'))->setHref($all_href);
     $header = id(new PHUIHeaderView())->setHeader(pht('Packages'))->addActionLink($view_all);
     $packages_view = id(new PHUIObjectBoxView())->setHeader($header)->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)->setObjectList($packages_list);
     return $packages_view;
 }
 public function validateTransactions($object, array $xactions)
 {
     $errors = array();
     if ($this->isEmptyTextTransaction($object->getName(), $xactions)) {
         $errors[] = $this->newRequiredError(pht('Publishers must have a name.'));
     }
     foreach ($xactions as $xaction) {
         $value = $xaction->getNewValue();
         try {
             PhabricatorPackagesPublisher::assertValidPublisherName($value);
         } catch (Exception $ex) {
             $errors[] = $this->newInvalidError($ex->getMessage(), $xaction);
         }
     }
     return $errors;
 }
 public function validateTransactions($object, array $xactions)
 {
     $errors = array();
     if ($this->isEmptyTextTransaction($object->getName(), $xactions)) {
         $errors[] = $this->newRequiredError(pht('Publishers must have a unique publisher key.'));
     }
     if (!$this->isNewObject()) {
         foreach ($xactions as $xaction) {
             $errors[] = $this->newInvalidError(pht('Once a publisher is created, its key can not be changed.'), $xaction);
         }
     }
     foreach ($xactions as $xaction) {
         $value = $xaction->getNewValue();
         try {
             PhabricatorPackagesPublisher::assertValidPublisherKey($value);
         } catch (Exception $ex) {
             $errors[] = $this->newInvalidError($ex->getMessage(), $xaction);
         }
     }
     return $errors;
 }
 protected function newEditableObject()
 {
     $viewer = $this->getViewer();
     return PhabricatorPackagesPublisher::initializeNewPublisher($viewer);
 }