<?php echo pht('Cleaning up old Herald rule applied rows...') . "\n"; $table = new HeraldRule(); $table->openTransaction(); $table->beginReadLocking(); $rules = $table->loadAll(); foreach ($rules as $key => $rule) { $first_policy = HeraldRepetitionPolicyConfig::toInt(HeraldRepetitionPolicyConfig::FIRST); if ($rule->getRepetitionPolicy() != $first_policy) { unset($rules[$key]); } } $conn_w = $table->establishConnection('w'); $clause = ''; if ($rules) { $clause = qsprintf($conn_w, 'WHERE ruleID NOT IN (%Ld)', mpull($rules, 'getID')); } echo pht('This may take a moment') . "\n"; do { queryfx($conn_w, 'DELETE FROM %T %Q LIMIT 1000', HeraldRule::TABLE_RULE_APPLIED, $clause); echo '.'; } while ($conn_w->getAffectedRows()); $table->endReadLocking(); $table->saveTransaction(); echo "\n" . pht('Done.') . "\n";