Ejemplo n.º 1
0
 public function execute()
 {
     $table = new PhabricatorRepositoryAuditRequest();
     $conn_r = $table->establishConnection('r');
     $joins = $this->buildJoinClause($conn_r);
     $where = $this->buildWhereClause($conn_r);
     $order = $this->buildOrderClause($conn_r);
     $limit = $this->buildLimitClause($conn_r);
     $data = queryfx_all($conn_r, 'SELECT req.* FROM %T req %Q %Q %Q %Q', $table->getTableName(), $joins, $where, $order, $limit);
     $audits = $table->loadAllFromArray($data);
     if ($this->needCommits || $this->needCommitData) {
         $phids = mpull($audits, 'getCommitPHID', 'getCommitPHID');
         if ($phids) {
             $cquery = new PhabricatorAuditCommitQuery();
             $cquery->needCommitData($this->needCommitData);
             $cquery->withCommitPHIDs(array_keys($phids));
             $commits = $cquery->execute();
         } else {
             $commits = array();
         }
         $this->commits = $commits;
     }
     return $audits;
 }
Ejemplo n.º 2
0
 protected function buildJoinClause(AphrontDatabaseConnection $conn_r)
 {
     $joins = array();
     $audit_request = new PhabricatorRepositoryAuditRequest();
     if ($this->shouldJoinAudits()) {
         $joins[] = qsprintf($conn_r, '%Q %T audit ON commit.phid = audit.commitPHID', $this->rowsMustHaveAudits() ? 'JOIN' : 'LEFT JOIN', $audit_request->getTableName());
     }
     if ($this->auditAwaitingUser) {
         // Join the request table on the awaiting user's requests, so we can
         // filter out package and project requests which the user has resigned
         // from.
         $joins[] = qsprintf($conn_r, 'LEFT JOIN %T awaiting ON audit.commitPHID = awaiting.commitPHID AND
     awaiting.auditorPHID = %s', $audit_request->getTableName(), $this->auditAwaitingUser->getPHID());
     }
     if ($joins) {
         return implode(' ', $joins);
     } else {
         return '';
     }
 }
 protected function buildJoinClauseParts(AphrontDatabaseConnection $conn)
 {
     $join = parent::buildJoinClauseParts($conn);
     $audit_request = new PhabricatorRepositoryAuditRequest();
     if ($this->shouldJoinStatus()) {
         $join[] = qsprintf($conn, 'LEFT JOIN %T status ON commit.phid = status.commitPHID', $audit_request->getTableName());
     }
     if ($this->shouldJoinAudits()) {
         $join[] = qsprintf($conn, 'JOIN %T audit ON commit.phid = audit.commitPHID', $audit_request->getTableName());
     }
     if ($this->shouldJoinNeeds()) {
         $join[] = qsprintf($conn, 'JOIN %T needs ON commit.phid = needs.commitPHID
       AND needs.auditStatus IN (%Ls)', $audit_request->getTableName(), array(PhabricatorAuditStatusConstants::AUDIT_REQUESTED, PhabricatorAuditStatusConstants::AUDIT_REQUIRED));
     }
     return $join;
 }