Вход Регистрация
Файл: 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']), falsetrue);
        
$_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.", ".$limit1);
        
        if(
$sql_){
            include_once 
ENGINE_DIR.'/classes/mail.php';
            
$mail = new dle_mail($configtrue);
            
            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 ("d&#097;ta:""&#097;bout:""vbscript<b></b>:""&#111;nclick""&#111;nload""&#111;nunload""&#111;nabort""&#111;nerror""&#111;nblur""&#111;nchange""&#111;nfocus""&#111;nreset""&#111;nsubmit""&#111;ndblclick""&#111;nkeydown""&#111;nkeypress""&#111;nkeyup""&#111;nmousedown""&#111;nmouseup""&#111;nmouseover""&#111;nmouseout""&#111;nselect""j&#097;vascript" );

                
$message_send preg_replace($find$replace$_POST['text']);
                
$message_send preg_replace("#<iframe#i""&lt;iframe"$message_send);
                
$message_send preg_replace("#<script#i""&lt;script"$message_send);
                
$message_send str_replace("<?""&lt;?"$message_send);
                
$message_send str_replace("?>""?&gt;"$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">&nbsp;</div><div style="margin-bottom:7px">В своем сообщении вы можете использовать тег <br /><b>{%user-name%}</b>, который означает имя получателя.</div><div class="mgcler"></div>

<div class="fllogall">&nbsp;</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();
}
?>
Онлайн: 1
Реклама