1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-12-01 11:12:42 +01:00
phorge-phorge/src/applications/metamta/management/PhabricatorMailManagementResendWorkflow.php

76 lines
1.9 KiB
PHP
Raw Normal View History

<?php
final class PhabricatorMailManagementResendWorkflow
extends PhabricatorSearchManagementWorkflow {
protected function didConstruct() {
$this
->setName('resend')
->setSynopsis('Send mail again.')
->setExamples(
"**resend** --id 1 --id 2")
->setArguments(
array(
array(
'name' => 'id',
'param' => 'id',
'help' => 'Send mail with a given ID again.',
'repeat' => true,
),
));
}
public function execute(PhutilArgumentParser $args) {
$console = PhutilConsole::getConsole();
$ids = $args->getArg('id');
if (!$ids) {
throw new PhutilArgumentUsageException(
"Use the '--id' flag to specify one or more messages to resend.");
}
$messages = id(new PhabricatorMetaMTAMail())->loadAllWhere(
'id IN (%Ld)',
$ids);
if ($ids) {
$ids = array_fuse($ids);
$missing = array_diff_key($ids, $messages);
if ($missing) {
throw new PhutilArgumentUsageException(
"Some specified messages do not exist: ".
implode(', ', array_keys($missing)));
}
}
foreach ($messages as $message) {
if ($message->getStatus() == PhabricatorMetaMTAMail::STATUS_QUEUE) {
if ($message->getWorkerTaskID()) {
$console->writeOut(
"Message #%d is already queued with an assigned send task.\n",
$message->getID());
continue;
}
}
$message->setStatus(PhabricatorMetaMTAMail::STATUS_QUEUE);
$message->setRetryCount(0);
$message->setNextRetry(time());
$message->save();
$mailer_task = PhabricatorWorker::scheduleTask(
'PhabricatorMetaMTAWorker',
$message->getID());
$message->setWorkerTaskID($mailer_task->getID());
$message->save();
$console->writeOut(
"Queued message #%d for resend.\n",
$message->getID());
}
}
}