2013-04-05 01:57:38 +02:00
|
|
|
<?php
|
|
|
|
|
2015-05-22 09:27:56 +02:00
|
|
|
echo pht(
|
|
|
|
"Migrating data from conpherence transactions to conpherence 'cache'...\n");
|
2013-04-05 01:57:38 +02:00
|
|
|
|
|
|
|
$table = new ConpherenceThread();
|
|
|
|
$table->openTransaction();
|
|
|
|
$conn_w = $table->establishConnection('w');
|
|
|
|
|
|
|
|
$participant_table = new ConpherenceParticipant();
|
|
|
|
|
|
|
|
$conpherences = new LiskMigrationIterator($table);
|
|
|
|
foreach ($conpherences as $conpherence) {
|
2015-05-22 09:27:56 +02:00
|
|
|
echo pht('Migrating conpherence #%d', $conpherence->getID())."\n";
|
2013-04-05 01:57:38 +02:00
|
|
|
|
|
|
|
$participants = id(new ConpherenceParticipant())
|
|
|
|
->loadAllWhere('conpherencePHID = %s', $conpherence->getPHID());
|
|
|
|
|
|
|
|
$transactions = id(new ConpherenceTransaction())
|
|
|
|
->loadAllWhere('objectPHID = %s', $conpherence->getPHID());
|
|
|
|
|
|
|
|
$participation_hash = mgroup($participants, 'getBehindTransactionPHID');
|
|
|
|
|
|
|
|
$message_count = 0;
|
|
|
|
$participants_to_cache = array();
|
|
|
|
foreach ($transactions as $transaction) {
|
|
|
|
$participants_to_cache[] = $transaction->getAuthorPHID();
|
|
|
|
if ($transaction->getTransactionType() ==
|
|
|
|
PhabricatorTransactions::TYPE_COMMENT) {
|
|
|
|
$message_count++;
|
|
|
|
}
|
|
|
|
$participants_to_update = idx(
|
|
|
|
$participation_hash,
|
|
|
|
$transaction->getPHID(),
|
|
|
|
array());
|
|
|
|
if ($participants_to_update) {
|
|
|
|
queryfx(
|
|
|
|
$conn_w,
|
|
|
|
'UPDATE %T SET seenMessageCount = %d '.
|
|
|
|
'WHERE conpherencePHID = %s AND participantPHID IN (%Ls)',
|
|
|
|
$participant_table->getTableName(),
|
|
|
|
$message_count,
|
|
|
|
$conpherence->getPHID(),
|
|
|
|
mpull($participants_to_update, 'getParticipantPHID'));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
$participants_to_cache = array_slice(
|
|
|
|
array_unique(array_reverse($participants_to_cache)),
|
|
|
|
0,
|
|
|
|
10);
|
|
|
|
queryfx(
|
|
|
|
$conn_w,
|
|
|
|
'UPDATE %T '.
|
|
|
|
'SET recentParticipantPHIDs = %s, '.
|
|
|
|
'messageCount = %d '.
|
|
|
|
'WHERE phid = %s',
|
|
|
|
$table->getTableName(),
|
|
|
|
json_encode($participants_to_cache),
|
|
|
|
$message_count,
|
|
|
|
$conpherence->getPHID());
|
|
|
|
}
|
|
|
|
|
|
|
|
$table->saveTransaction();
|
2015-05-22 09:27:56 +02:00
|
|
|
echo "\n".pht('Done.')."\n";
|