Файл: system/inc/mail.php
Строк: 161
<?php
/*
Appointment: Отправка массовых сообщений
File: mail.php
*/
if(!defined('MOZG'))
die('Hacking attempt!');
$act = $_GET['act'];
switch($act){
//################### Начало рассылки ###################//
case "send":
$limit = intval($_POST['limit']);
$lastid = intval($_POST['lastid']);
$title = textFilter(ajax_utf8($_POST['title']), false, true);
$_POST['text'] = ajax_utf8($_POST['text']);
$sql_ = $db->super_query("SELECT SQL_CALC_FOUND_ROWS user_search_pref, user_email FROM `".PREFIX."_users` ORDER by `user_id` ASC LIMIT ".$lastid.", ".$limit, 1);
if($sql_){
include_once ENGINE_DIR.'/classes/mail.php';
$mail = new dle_mail($config, true);
foreach($sql_ as $row){
$find = array ('/data:/i', '/about:/i', '/vbscript:/i', '/onclick/i', '/onload/i', '/onunload/i', '/onabort/i', '/onerror/i', '/onblur/i', '/onchange/i', '/onfocus/i', '/onreset/i', '/onsubmit/i', '/ondblclick/i', '/onkeydown/i', '/onkeypress/i', '/onkeyup/i', '/onmousedown/i', '/onmouseup/i', '/onmouseover/i', '/onmouseout/i', '/onselect/i', '/javascript/i', '/javascript/i' );
$replace = array ("data:", "about:", "vbscript<b></b>:", "onclick", "onload", "onunload", "onabort", "onerror", "onblur", "onchange", "onfocus", "onreset", "onsubmit", "ondblclick", "onkeydown", "onkeypress", "onkeyup", "onmousedown", "onmouseup", "onmouseover", "onmouseout", "onselect", "javascript" );
$message_send = preg_replace($find, $replace, $_POST['text']);
$message_send = preg_replace("#<iframe#i", "<iframe", $message_send);
$message_send = preg_replace("#<script#i", "<script", $message_send);
$message_send = str_replace("<?", "<?", $message_send);
$message_send = str_replace("?>", "?>", $message_send);
$message_send = $db->safesql($message_send);
$message_send = str_replace("{%user-name%}", $row['user_search_pref'], $_POST['text']);
$mail->send($row['user_email'], $title, $message_send);
echo 'ok';
}
}
die();
break;
default:
$users = $db->super_query("SELECT COUNT(*) AS cnt FROM `".PREFIX."_users`");
if($users['cnt'] < 20)
$max_users = $users['cnt'];
else
$max_users = 20;
echoheader();
echo '<div id="form">';
echohtmlstart('Подготовка к отправке сообщений');
echo <<<HTML
<style type="text/css" media="all">
.inpu{width:305px;}
textarea{width:600px;height:300px;}
</style>
<script type="text/javascript" src="/system/inc/js/jquery.js"></script>
<script type="text/javascript">
function mailSend(){
var limit = $('#limit').val();
var title = $('#title').val();
var text = $('#text').val();
var interval = parseInt($('#interval').val())*1000;
var lastid = $('#lastlimit').val();
if(lastid != 'finish'){
if(title != 0){
if(text != 0){
$('#form').hide();
document.getElementById('limit').disabled = true;
document.getElementById('interval').disabled = true;
document.getElementById('text').disabled = true;
document.getElementById('button').disabled = true;
document.getElementById('title').disabled = true;
$('#sendingbox').show();
$.post('/controlpanel.php?mod=mail&act=send', {limit: limit, title: title, text: text, lastid: lastid}, function(data){
if(data){
setTimeout('mailSend()', interval);
$('#lastlimit').val(parseInt(lastid)+parseInt(limit));
$('#ok_users').text(parseInt(lastid)+parseInt(limit));
if($('#ok_users').text() == $('#user_cnt').text())
$('#status').html('<font color="green">отправка завершена</font>');
} else {
$('#status').html('<font color="green">отправка завершена</font>');
$('#lastlimit').val('finish');
$('#ok_users').text($('#user_cnt').text());
}
});
} else
alert('Введите текст сообщения');
} else
alert('Введите заголовок сообщения');
} else
alert('Перезагрузите страницу, для новой рассылки');
}
</script>
<form method="POST" action="">
<div class="fllogall">Количество писем за один проход:</div><input type="text" id="limit" class="inpu" style="width:50px" value="{$max_users}" /><div class="mgcler"></div>
<div class="fllogall">Интервал между отправкой писем:</div><input type="text" id="interval" class="inpu" style="width:50px" value="1" /> сек.<div class="mgcler"></div>
<div class="fllogall">Заголовок:</div><input type="text" id="title" class="inpu" /><div class="mgcler"></div>
<div class="fllogall">Текст сообщения:</div><textarea class="inpu" id="text"></textarea><div class="mgcler"></div>
<div class="fllogall"> </div><div style="margin-bottom:7px">В своем сообщении вы можете использовать тег <br /><b>{%user-name%}</b>, который означает имя получателя.</div><div class="mgcler"></div>
<div class="fllogall"> </div><div class="button_div fl_l"><button onClick="mailSend(); return false" id="button" class="inp" style="margin-top:5px">Начать отправку</button></div>
<input type="hidden" id="lastlimit" class="inpu" value="0" />
</form>
HTML;
echo '</div><div id="sendingbox" style="display:none">';
echohtmlstart('Отправка сообщений');
echo <<<HTML
<div id="result"></div>
Отправлено сообщений: <span style="color:red;" id="ok_users">0</span> из <span style="color:blue;" id="user_cnt">{$users['cnt']}</span> Статус: <span id="status">отправка...</span><br /><br />
<span style="color:#777">Внимание идет отсылка сообщений пользователям, не закрывайте данное окно до тех пор, пока не будут отосланы все письма</span>
</div>
HTML;
echohtmlend();
}
?>