1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-18 12:52:42 +01:00
phorge-phorge/resources/sql/patches/20130403.conpherencecachemig.php

66 lines
1.9 KiB
PHP
Raw Normal View History

<?php
echo pht(
"Migrating data from conpherence transactions to conpherence 'cache'...\n");
$table = new ConpherenceThread();
$table->openTransaction();
$conn_w = $table->establishConnection('w');
$participant_table = new ConpherenceParticipant();
$conpherences = new LiskMigrationIterator($table);
foreach ($conpherences as $conpherence) {
echo pht('Migrating conpherence #%d', $conpherence->getID())."\n";
$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();
echo "\n".pht('Done.')."\n";