<?php

$table = new PhrictionDocument();
$conn_w = $table->establishConnection('w');

echo pht('Populating Phriction mailkeys.')."\n";

foreach (new LiskMigrationIterator($table) as $doc) {
  $id = $doc->getID();

  $key = $doc->getMailKey();
  if ((strlen($key) == 20) && (strpos($key, "\0") === false)) {
    // To be valid, keys must have length 20 and not contain any null bytes.
    // See T6487.
    echo pht('Document has valid mailkey.')."\n";
    continue;
  } else {
    echo pht('Populating mailkey for document %d...', $id)."\n";
    $mail_key = Filesystem::readRandomCharacters(20);
    queryfx(
      $conn_w,
      'UPDATE %T SET mailKey = %s WHERE id = %d',
      $table->getTableName(),
      $mail_key,
      $id);
  }
}

echo pht('Done.')."\n";