#! /usr/bin/php getMailingsPrefs('site') ; break; case 'COMMNTY': $process = $user->getMailingsPrefs('va') ; break; case 'DVLPR': $process = count ($user->getGroups()) ; break; case 'ADMIN': foreach ($user->getGroups(false) as $g) { if (forge_check_perm_for_user ($user,'project_admin',$g->getID())) { $process = true ; break ; } } break; case 'SFDLVPR': $process = forge_check_global_perm_for_user ($user,'forge_admin') ; break; } if ($process) { $filtered_users[] = $user ; } } $err .= "Mailing ".count($filtered_users)." users.\n"; // If no more users left, we've finished with this mailing if (count ($filtered_users)==0) { db_query_params ('UPDATE massmail_queue SET failed_date=0,finished_date=$1 WHERE id=$2', array(time(), $mail_id)); m_exit(); } // Actual mailing loop $compt = 0; foreach ($filtered_users as $user) { $compt++; if ($type=='SITE' || $type=='COMMNTY') { $tail = "\r\n==================================================================\r\n" ; $tail .= sprintf (_('You receive this message because you subscribed to %1$s site mailing(s). You may opt out from some of them selectively by logging in to %1$s and visiting your Account Maintenance page (%2$s), or disable them altogether by visiting following link: <%3$s> '), forge_get_config ('forge_name'), util_make_url('/account/'), util_make_url('/account/unsubscribe.php?ch=_'.$user->getConfirmHash())) ; } else { $tail = "" ; } util_send_message($user->getEmail(),$subj, $body."\r\n".$tail,'noreply@'.forge_get_config('web_host')); $last_userid = $user->getID(); sleep($SLEEP); } db_query_params ('UPDATE massmail_queue SET failed_date=0, last_userid=$1, finished_date=$2 WHERE id=$3', array($last_userid, time (), $mail_id)); if (db_error()) { $err .= $sql.db_error(); } $mess = "massmail $compt mails sent"; m_exit($mess); function m_exit($mess = '') { global $err; if (!cron_remove_lock(__FILE__)) { $err .= "Could not remove lock\n"; } if (!cron_entry(6,$mess.$err)) { // rely on crond to report the error echo "cron_entry error: ".db_error()."\n"; } exit; } // Local Variables: // mode: php // c-file-style: "bsd" // End: ?>