<?php

echo pht(
  "Populating Legalpad Documents with titles, %s, and %s...\n",
  'recentContributorPHIDs',
  'contributorCounts');
$table = new LegalpadDocument();
$table->openTransaction();

foreach (new LiskMigrationIterator($table) as $document) {
  $updated = false;
  $id = $document->getID();

  echo pht('Document %d: ', $id);
  if (!$document->getTitle()) {
    $document_body = id(new LegalpadDocumentBody())
      ->loadOneWhere('phid = %s', $document->getDocumentBodyPHID());
    $title = $document_body->getTitle();
    $document->setTitle($title);
    $updated = true;
    echo pht('Added title: %s', $title)."\n";
  } else {
    echo "-\n";
  }

  if (!$document->getContributorCount() ||
      !$document->getRecentContributorPHIDs()) {
    $updated = true;
    $type = PhabricatorObjectHasContributorEdgeType::EDGECONST;
    $contributors = PhabricatorEdgeQuery::loadDestinationPHIDs(
      $document->getPHID(),
      $type);
    $document->setRecentContributorPHIDs(array_slice($contributors, 0, 3));
    echo pht('Added recent contributor PHIDs.')."\n";
    $document->setContributorCount(count($contributors));
    echo pht('Added contributor count.')."\n";
  }

  if (!$updated) {
    echo "-\n";
    continue;
  }

  $document->save();
}

$table->saveTransaction();
echo pht('Done.')."\n";