[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/resources/sql/patches/ -> 20130728.ponderunique.php (source)

   1  <?php
   2  
   3  $map = array();
   4  
   5  echo "Merging duplicate answers by authors...\n";
   6  
   7  $atable = new PonderAnswer();
   8  $conn_w = $atable->establishConnection('w');
   9  $conn_w->openTransaction();
  10  
  11  $answers = new LiskMigrationIterator(new PonderAnswer());
  12  foreach ($answers as $answer) {
  13    $aid = $answer->getID();
  14    $qid = $answer->getQuestionID();
  15    $author_phid = $answer->getAuthorPHID();
  16  
  17    echo "Processing answer ID #{$aid}...\n";
  18  
  19    if (empty($map[$qid][$author_phid])) {
  20      echo "Answer is unique.\n";
  21      $map[$qid][$author_phid] = $answer;
  22      continue;
  23    } else {
  24      echo "Merging answer.\n";
  25      $target = $map[$qid][$author_phid];
  26      queryfx(
  27        $conn_w,
  28        'UPDATE %T SET content = %s WHERE id = %d',
  29        $target->getTableName(),
  30  
  31        $target->getContent().
  32        "\n\n".
  33        "---".
  34        "\n\n".
  35        "> (This content was automatically merged from another answer by the ".
  36        "same author.)".
  37        "\n\n".
  38        $answer->getContent(),
  39  
  40        $target->getID());
  41  
  42      queryfx(
  43        $conn_w,
  44        'DELETE FROM %T WHERE id = %d',
  45        $target->getTableName(),
  46        $answer->getID());
  47  
  48      queryfx(
  49        $conn_w,
  50        'UPDATE %T SET targetPHID = %s WHERE targetPHID = %s',
  51        'ponder_comment',
  52        $target->getPHID(),
  53        $answer->getPHID());
  54    }
  55  }
  56  
  57  $conn_w->saveTransaction();
  58  echo "Done.\n";


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