<?php

echo "Migrating macro authors...\n";
foreach (new LiskMigrationIterator(new PhabricatorFileImageMacro()) as $macro) {
  echo "Macro #".$macro->getID()."\n";

  if ($macro->getAuthorPHID()) {
    // Already have an author; skip it.
    continue;
  }

  if (!$macro->getFilePHID()) {
    // No valid file; skip it.
    continue;
  }

  $file = id(new PhabricatorFile())->loadOneWhere(
    'phid = %s',
    $macro->getFilePHID());

  if (!$file) {
    // Couldn't load the file; skip it.
    continue;
  }

  if (!$file->getAuthorPHID()) {
    // File has no author; skip it.
    continue;
  }

  queryfx(
    $macro->establishConnection('w'),
    'UPDATE %T SET authorPHID = %s WHERE id = %d',
    $macro->getTableName(),
    $file->getAuthorPHID(),
    $macro->getID());
}

echo "Done.\n";