#!/usr/bin/php5 -q
<?php
/***************************************************************************
- * Copyright (C) 2003-2009 Polytechnique.org *
+ * Copyright (C) 2003-2011 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
***************************************************************************/
-require('./connect.db.inc.php');
+require './connect.db.inc.php';
ini_set('max_execution_time', '75');
ini_set('memory_limit', '128M');
$sent_mails = 0;
$handler = time();
+/* Cleanup dead locks */
+XDB::execute('UPDATE email_list_moderate
+ SET handler = NULL
+ WHERE handler < NOW() - 300');
+
while ($sent_mails < $globals->lists->max_mail_per_min
&& time() - $handler < 60) {
// take a lock on a mail
- XDB::execute("UPDATE ml_moderate
+ XDB::execute('UPDATE email_list_moderate
SET handler = {?}
WHERE handler IS NULL
ORDER BY ts
- LIMIT 1", $handler);
+ LIMIT 1', $handler);
if (XDB::affectedRows() == 0) {
break;
}
- $query = XDB::query("SELECT nom, prenom, user_id, password,
- ml, domain, mid, action, message
- FROM auth_user_md5 AS u
- INNER JOIN ml_moderate AS ml ON (u.user_id = ml.uid)
- WHERE ml.handler = {?}", $handler);
- list($nom, $prenom, $uid, $password, $list, $domain, $mid, $action, $reason) = $query->fetchOneRow();
+ $query = XDB::query('SELECT a.full_name, a.uid, a.password,
+ ml.ml, ml.domain, ml.mid, ml.action, ml.message
+ FROM accounts AS a
+ INNER JOIN email_list_moderate AS ml ON (a.uid = ml.uid)
+ WHERE ml.handler = {?}', $handler);
+ list($fullname, $uid, $password, $list, $domain, $mid, $action, $reason) = $query->fetchOneRow();
// build the client
$client = new MMList($uid, $password, $domain);
// send the mail
- $mail = $client->get_pending_mail($list, $mid);
+ $mail = $client->get_pending_mail($list, $mid);
list($det,$mem,$own) = $client->get_members($list);
$count = 0;
switch ($action) {
case 'accept':
$action = 1; /** 1 = ACCEPT **/
$subject = "Message accepté";
- $append = "a été accepté par $prenom $nom.\n";
+ $append = "a été accepté par $fullname.\n";
$type = 'nonspam';
$count += count($mem) + count($own);
break;
case 'refuse':
$action = 2; /** 2 = REJECT **/
$subject = "Message refusé";
- $append = "a été refusé par $prenom $nom avec la raison :\n\n" . $reason;
+ $append = "a été refusé par $fullname avec la raison :\n\n" . $reason;
$type = 'nonspam';
$count += count($own) + 1;
break;
case 'delete':
$action = 3; /** 3 = DISCARD **/
$subject = "Message supprimé";
- $append = "a été supprimé par $prenom $nom.\n\n"
- . "Rappel: il ne faut utiliser cette opération "
+ $append = "a été supprimé par $fullname.\n\n"
+ . "Rappel : il ne faut utiliser cette opération "
. "que dans le cas de spams ou de virus !\n";
$type = 'spam';
$count += count($own);
if ($x_spam_flag == 'Unsure') {
$mailer = new PlMailer();
$mailer->addTo($type . '@' . $globals->mail->domain);
- $mailer->setFrom('"' . $prenom . ' ' . $nom . '" <web@' . $globals->mail->domain . '>');
- $mailer->setTxtBody($type . ' soumis par ' . $prenom . ' ' . $nom . ' via la modération de la liste ' . $list . '@' . $domain);
+ $mailer->setFrom('"' . $fullname . '" <web@' . $globals->mail->domain . '>');
+ $mailer->setTxtBody($type . ' soumis par ' . $fullname . ' via la modération de la liste ' . $list . '@' . $domain);
$mailer->addAttachment($raw_mail, 'message/rfc822', $type . '.mail', false);
$mailer->send();
}
// send feedback to the mailing list owners
if ($client->handle_request($list, $mid, $action, utf8_decode($reason))) {
$sent_mails += $count;
- $texte = "le message suivant :\n\n"
+ $texte = "Le message suivant :\n\n"
. " Auteur: {$mail['sender']}\n"
. " Sujet : « {$mail['subj']} »\n"
. " Date : ".strftime("le %d %b %Y à %H:%M:%S", (int)$mail['stamp'])."\n\n"
}
// release the lock
- XDB::execute("DELETE FROM ml_moderate WHERE handler = {?}",
+ XDB::execute('DELETE FROM email_list_moderate
+ WHERE handler = {?}',
$handler);
sleep(60 * $count / $globals->lists->max_mail_per_min);
}