function vmn_sendThrottledItems($now, $emailsettings, $throttleinterval, $throttlesize) { $database =& JFactory::getDBO(); if ($throttleinterval < 1 || $throttlesize < 1) { return; } vmn_lockTable(); $database->setQuery("SELECT throttletime FROM #__vemod_news_mailer_scantime LIMIT 1"); $throttletime = $database->loadResult(); if (strtotime($now) - strtotime($throttletime) < $throttleinterval) { vmn_unlockTable(); return; } $database->setQuery("SELECT COUNT(*) FROM #__vemod_news_mailer_log WHERE status >= 10 OR status <= -10 ORDER BY sent LIMIT 1"); $tcount = $database->loadResult(); if ($tcount) { $database->setQuery("UPDATE #__vemod_news_mailer_scantime SET throttletime=" . $database->Quote($now) . " LIMIT 1"); $database->query(); } vmn_unlockTable(); echo chr(0x0); $database->setQuery("SELECT * FROM #__vemod_news_mailer_log WHERE status >= 10 ORDER BY sent LIMIT 1"); $throttleditem = NULL; $throttleditem = $database->loadObject(); if ($throttleditem) { $database->setQuery("UPDATE #__vemod_news_mailer_log SET sent=" . $database->quote($now) . ", status=status+1 WHERE id={$throttleditem->id}"); $database->Query(); $throttlecount = $throttleditem->status - 9; $codedmessage = vmn_codeMessage($throttleditem->message); $valid = vmn_getLoggedUsers($throttleditem->users, $throttlesize, $throttlecount); if (count($valid)) { $statuscount = 0; for ($i = 0; $i < count($valid['email']); $i++) { @set_time_limit(600); $status = JUtility::sendMail($emailsettings['mailfrom'], $emailsettings['fromname'], $valid['email'][$i], $throttleditem->subject, str_replace('[username]', $valid['name'][$i], $codedmessage), 1, NULL, NULL) === true; if ($i % 5 == 0) { echo chr(0x0); } if ($status) { $statuscount++; } } if ($throttleditem->status == 10) { if ($statuscount < count($valid['email']) * 0.9) { $database->setQuery("UPDATE #__vemod_news_mailer_log SET sent=" . $database->quote($now) . ", status=1 WHERE id={$throttleditem->id}"); $database->Query(); return; } } return; } else { $database->setQuery("UPDATE #__vemod_news_mailer_log SET sent=" . $database->quote($now) . ", status=0 WHERE id={$throttleditem->id}"); $database->Query(); } } $database->setQuery("SELECT * FROM #__vemod_news_mailer_log WHERE status <= -10 ORDER BY sent LIMIT 1"); $throttleditem = NULL; $throttleditem = $database->loadObject(); if ($throttleditem) { $database->setQuery("UPDATE #__vemod_news_mailer_log SET sent=" . $database->quote($now) . ", status=status-1 WHERE id={$throttleditem->id}"); $database->Query(); $throttlecount = abs($throttleditem->status) - 9; $message = $throttleditem->message; $smsprefix = ''; if (strpos($message, '<sms></sms>') === 0) { $smsprefix = '<sms></sms>'; $message = str_replace('<sms></sms>', '', $message); } $search = array('<pre>', '</pre>'); $replace = array('', ''); $message = str_replace($search, $replace, $message); $codedmessage = vmn_codeMessage($message); $valid = vmn_getLoggedUsers($throttleditem->users, $throttlesize, $throttlecount); if (count($valid)) { $statuscount = 0; for ($i = 0; $i < count($valid['email']); $i++) { @set_time_limit(600); if (strlen($smsprefix)) { $status = JUtility::sendMail($emailsettings['smsmailfrom'], $emailsettings['smsfromname'], $valid['email'][$i], $throttleditem->subject, str_replace('[username]', $valid['name'][$i], $codedmessage), 0, NULL, NULL) === true; } else { $status = JUtility::sendMail($emailsettings['mailfrom'], $emailsettings['fromname'], $valid['email'][$i], $throttleditem->subject, str_replace('[username]', $valid['name'][$i], $codedmessage), 0, NULL, NULL) === true; } if ($i % 5 == 0) { echo chr(0x0); } if ($status) { $statuscount++; } } if ($throttleditem->status == -10) { if ($statuscount < count($valid['email']) * 0.9) { $database->setQuery("UPDATE #__vemod_news_mailer_log SET sent=" . $database->quote($now) . ", status=2 WHERE id={$throttleditem->id}"); $database->Query(); return; } } } else { $database->setQuery("UPDATE #__vemod_news_mailer_log SET sent=" . $database->quote($now) . ", status=0 WHERE id={$throttleditem->id}"); $database->Query(); } } }
$subject = str_replace($search, $replace, stripslashes($vmsubject)); $subject = html_entity_decode($subject, ENT_QUOTES); $database->setQuery("SELECT mailformat FROM #__vemod_news_mailer_users WHERE id={$my->id}"); $usermailformat = $database->loadResult(); if ($mailformat == 1 || $mailformat == 2 && $usermailformat == 1) { $message = stripslashes($verifymailText); $subscribeto = str_replace("<br>", "\n", $subscribeto); $maillink = $vmlinktext . "\n" . $maillink; } else { $maillink = '<a href="' . $maillink . '" target="_blank">' . $vmlinktext . '</a>'; $message = stripslashes($verifymailHTML); } $search = array('[sitename]', '[livesite]', '[subject]', '[username]', '[subscribeto]', '[verifylink]'); $replace = array($mainframe->getCfg('sitename'), JURI::root(), stripslashes($vmsubject), $my->name, $subscribeto, $maillink); $message = str_replace($search, $replace, $message); $codedmessage = vmn_codeMessage($message); if ($mailformat == 1 || $mailformat == 2 && $usermailformat == 1) { $status = JUtility::sendMail($emailsettings['mailfrom'], $emailsettings['fromname'], $my->email, $subject, $codedmessage); } else { $status = JUtility::sendMail($emailsettings['mailfrom'], $emailsettings['fromname'], $my->email, $subject, $codedmessage, 1); } if ($status === true) { vmn_doPageTop(JTEXT::_('VMN_VERIFICATION_MAIL_MESSAGE')); } else { vmn_doPageTop($status->getMessage()); } } else { vmn_updateSubs($my->id, @$_POST['cid']); vmn_doPageTop(JTEXT::_('VMN_YOUR_SUBSCRIPTIONS_HAS_BEEN_UPDATED')); } } elseif ($emailverify > 0 && $emailverifyuser == $my->id) {