[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/resources/sql/autopatches/ -> 20141107.ssh.4.keymig.php (source)

   1  <?php
   2  
   3  $table = new PhabricatorAuthSSHKey();
   4  $conn_w = $table->establishConnection('w');
   5  
   6  echo "Updating SSH public key indexes...\n";
   7  
   8  $keys = new LiskMigrationIterator($table);
   9  foreach ($keys as $key) {
  10    $id = $key->getID();
  11  
  12    echo "Updating key {$id}...\n";
  13  
  14    try {
  15      $hash = $key->toPublicKey()->getHash();
  16    } catch (Exception $ex) {
  17      echo "Key has bad format! Removing key.\n";
  18      queryfx(
  19        $conn_w,
  20        'DELETE FROM %T WHERE id = %d',
  21        $table->getTableName(),
  22        $id);
  23      continue;
  24    }
  25  
  26    $collision = queryfx_all(
  27      $conn_w,
  28      'SELECT * FROM %T WHERE keyIndex = %s AND id < %d',
  29      $table->getTableName(),
  30      $hash,
  31      $key->getID());
  32    if ($collision) {
  33      echo "Key is a duplicate! Removing key.\n";
  34      queryfx(
  35        $conn_w,
  36        'DELETE FROM %T WHERE id = %d',
  37        $table->getTableName(),
  38        $id);
  39      continue;
  40    }
  41  
  42    queryfx(
  43      $conn_w,
  44      'UPDATE %T SET keyIndex = %s WHERE id = %d',
  45      $table->getTableName(),
  46      $hash,
  47      $key->getID());
  48  }
  49  
  50  echo "Done.\n";


Generated: Sun Nov 30 09:20:46 2014 Cross-referenced by PHPXref 0.7.1