Пример #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;
 }
<?php

$table = new PhabricatorRepositoryAuditRequest();
$conn_w = $table->establishConnection('w');
echo "Migrating Audit subscribers to subscriptions...\n";
foreach (new LiskMigrationIterator($table) as $request) {
    $id = $request->getID();
    echo "Migrating auditor {$id}...\n";
    if ($request->getAuditStatus() != 'cc') {
        // This isn't a "subscriber", so skip it.
        continue;
    }
    queryfx($conn_w, 'INSERT IGNORE INTO %T (src, type, dst) VALUES (%s, %d, %s)', PhabricatorEdgeConfig::TABLE_NAME_EDGE, $request->getCommitPHID(), PhabricatorEdgeConfig::TYPE_OBJECT_HAS_SUBSCRIBER, $request->getAuditorPHID());
    // Wipe the row.
    $request->delete();
}
echo "Done.\n";