Вход Регистрация
Файл: 3020.ru/file_3020/plugins/user.mail.php
Строк: 267
<?
if (isset($ID)) {
  
$ank $sql -> fetch("SELECT * FROM `users` WHERE `id` = '$ID' LIMIT 1");
  
$contact $sql -> fetch("SELECT * FROM `contacts` WHERE `id_contact` = '$ID' AND `id_user` = '".$user['id']."' LIMIT 1");
}

if (
$level == || !isset($ank['id']) || $ank['id'] == $user['id']){
  
header('Location: /index.php');
  exit;
}

$sban $sql -> fetch("SELECT * FROM `ban` WHERE `id_ban` = '".$user['id']."' AND `time` > '$time' ORDER BY `time` DESC LIMIT 1");

if (isset(
$sban['id'])) {
  if (
$sban['view'] == && $sban['id_user'] == $ank['id']) {
    
$spost $sql -> fetch("SELECT * FROM `mail` WHERE `id_user` = '".$user['id']."' OR `id_contact` = '".$user['id']."' ORDER BY `time` DESC LIMIT 1");
    
    if (
$spost['id_user'] == $user['id']) {
      
$err[] = 'Теперь дождитесь ответа ' login($ank['id'], 0);
    }
  } else {
    
header('Location: /?func=user.ban');
    exit;
  }  
}


$status $sql -> fetch("SELECT 
      SUM(IF(`id_contact` = '"
.$user['id']."' AND `id_user` = '$ID' AND `type` = '0', 1, 0)) AS 'ignore',
      SUM(IF(`id_contact` = '
$ID' AND `id_user` = '".$user['id']."', 1, 0)) AS 'user',
      SUM(IF(`id_contact` = '"
.$user['id']."' AND `id_user` = '$ID', 1, 0)) AS 'contact'
      FROM `contacts`"
);
      
      
$status = array('user' => (int) $status['user'], 'contact' => (int) $status['contact'], 'ignore' => (int) $status['ignore']);
      
if (
$status['ignore'] == && $level <= $ank['level']) {
  
$err[] = login($ID0) . ' запретил Вам писать ему';
}
      
if (isset(
$_GET['type']) && $contact['id_user']) {
  if (
$_GET['type'] >= && $_GET['type'] <= 2) {
    
$type = (int) $_GET['type'];
    
$contact['type'] = $type;
    
    
$sql -> update("UPDATE `contacts` SET `type` = '$type' WHERE `id_user` = '".$user['id']."' AND `id_contact` = '$ID'");

    if (
$type == 0) {
      
$messages[] = 'Контакт успешно добавлен в список игнорируемых';
    } elseif (
$type == 1) {
      
$messages[] = 'Контакт успешно добавлен в общий список';
    } elseif (
$type == 2) {
      
$messages[] = 'Контакт успешно добавлен в список избранных';
    }
  }
}

if (isset(
$_GET['delete'])) {
  
$delete = (int) $_GET['delete'];
  
$delete $sql -> fetch("SELECT * FROM `mail` WHERE `id` = '$delete' AND (`id_user` = '".$user['id']."' OR `id_contact` = '".$user['id']."') LIMIT 1");
  
  if (
$delete['id']) {
    if (
$delete['unlink'] == $ank['id']) {
      
$sql -> delete("DELETE FROM `mail` WHERE `id` = '".$delete['id']."' AND (`id_user` = '".$user['id']."' OR `id_contact` = '".$user['id']."') LIMIT 1");
      
      if (
$delete['file'] != '0') {
        
$file unserialize($delete['file']);
        @
unlink(SRC 'screen/mail/' $file['cache'] . '.png');
        
unlink(FILES 'mail/' $file['cache'] . '.dat');
      }
    } else {
      
$sql -> update("UPDATE `mail` SET `unlink` = '".$user['id']."' WHERE `id` = '".$delete['id']."' AND (`id_user` = '".$user['id']."' OR `id_contact` = '".$user['id']."') LIMIT 1");
    }
    
$messages[] = 'Сообщение успешно удалено';    
  }
}

if (isset(
$_GET['truncate']))
{
  
$array $sql -> select("SELECT * FROM `mail` WHERE `unlink` = '$ank[id]' AND (`id_user` = '".$user['id']."' AND `id_contact` = '$ank[id]' OR `id_user` = '$ank[id]' AND `id_contact` = '$user[id]' AND `unlink` = '$ank[id]')");
  
  foreach (
$array AS $post) {
    if (
$post['file']) {
      
$file unserialize($post['file']);
      @
unlink(SRC 'screen/mail/' $file['cache'] . '.png');
      
unlink(FILES 'mail/' $file['cache'] . '.dat');
    } else {
      
$file false;
    }
    
$sql -> delete("DELETE FROM `mail` WHERE `id` = '$post[id]' AND (`id_user` = '$user[id]' OR `id_contact` = '$user[id]') LIMIT 1");
  }
  
$sql -> update("UPDATE `mail` SET `unlink` = '$user[id]' WHERE (`id_user` = '$user[id]' AND `id_contact` = '$ank[id]') OR (`id_user` = '$ank[id]' AND `id_contact` = '$user[id]')");
  
  
$_SESSION['message'] = 'Переписка успешно очищена';
  
header('Location: ?func=' $func '&id=' $ank['id']);
  exit;
}
    
if (isset(
$_GET['download'])) {
  
$id_file = (int) $_GET['download'];
  
$_file $sql -> fetch("SELECT * FROM `mail` WHERE `id` = '$id_file' AND `file` != '0' LIMIT 1");
  if (
$_file['id']) {
    
$file unserialize($_file['file']);
    if (
is_file(FILES 'mail/' $file['cache'] . '.dat')) {
      
DownloadFile(FILES 'mail/' $file['cache'] . '.dat'$file['name'] . '.' $file['ras'], $file['type']);
      exit;
    }
  }
}

$sql -> update("UPDATE `mail` SET `read` = '1' WHERE `id_user` = '$ank[id]' AND `id_contact` = '$user[id]' AND `read` = '0'");

if (isset(
$_POST['msg'])) {
  
$msg $sql->esc($_POST['msg']);
  
$files 0;
  
  if (
strlen2($msg) > 3072) {
    
$err[] = 'Сообщение слишком длинное';
  } elseif (
strlen2($msg) < 2) {
    
$err[] = 'Сообщение слишком короткое';
  }
  
  
if(
$sql -> selectCount("SELECT COUNT(*) FROM `mail` WHERE `id_user` = '".$user['id']."' AND `msg` = '".$msg."' AND `time` > '".($time 10)."' LIMIT 1") != 0)
{
$err='Сообщение повторяет предедущее !';
}

/// Если нет покупок то проверяем заполнен ли вмид и если нет не даём писать
$pokupka $sql -> selectCount("SELECT COUNT(*) FROM `shop_pays` WHERE `id_user` = '".$user['id']."' AND `pays` = '1'");
if (
$pokupka == 0) {
//if ($user['wmid']==0)$err[] = 'Не заполнены реквизиты в анкете !'; /// by_Mstivoj
}

  if (isset(
$_FILES['file']) && $_FILES['file']['name'])
  { 
      if (!
preg_match("#^([A-z/- ])+$#ui"$_FILES['file']['type'])) {
          
$err[] = 'Не допустимое значение типа файла';
      }
    
    
$file esc(stripcslashes(htmlspecialchars($_FILES['file']['name'])));
    
$size = (int) $_FILES['file']['size'];
    
$type $sql->esc($_FILES['file']['type']);
    
$file preg_replace('(#|?)'NULL$file);    
    
$name preg_replace('#.[^.]*$#'NULL$file);
    
$cache md5($time);
    
$ras strtolower(preg_replace('#^.*.#'NULL$file));
    
    
$files = array('name' => $name'ras' => $ras'size' => $size'type' => $type'cache' => $cache);    
    
    if (
$files != 0) {
          if (!
copy($_FILES['file']['tmp_name'], FILES.'mail/' $cache '.dat'))    {          
        
$files 0;    
              
$err[] = 'Ошибка при выгрузке файла'
          } else {
            if (
$ras == 'gif' || $ras == 'png' || $ras == 'jpg' || $ras == 'jpeg') {
                if (isset(
$_FILES['file']) && $imgc = @imagecreatefromstring(file_get_contents($_FILES['file']['tmp_name'])))    {
                    
$img_x imagesx($imgc);
                    
$img_y imagesy($imgc);
                    
                  if (
$img_x == $img_y) {
                      
$dstW 220;
                      
$dstH 220;
                  }    elseif (
$img_x $img_y) {        
                      
$prop $img_x $img_y;
                      
$dstW 220;
                      
$dstH ceil($dstW $prop);
                  } else {
                      
$prop $img_y $img_x;
                      
$dstH 220;
                      
$dstW ceil($dstH $prop);
                  }
                  
$screen imagecreatetruecolor($dstW$dstH);
                  
imagecopyresampled($screen$imgc0000$dstW$dstH$img_x$img_y);
                  
imagedestroy($imgc);
                  
imagegif($screenSRC.'screen/mail/' $cache '.png');
                  
imagedestroy($screen);
                }
            }
        
$files serialize($files);
        @
chmod(FILES.'mail/' $cache '.dat'0666);
      }
    }
  }
        
  
  if (!isset(
$err)) {
    
$sql -> insert("INSERT INTO `mail` (`id_user`, `id_contact`, `time`, `msg`, `file`) VALUES ('" $user['id'] . "', '" $ank['id'] . "', '$time', '$msg', '$files')");
    
$id_file $sql->insert_id();

    if (
$status['contact'] == 0) {
      
$sql -> insert("INSERT INTO `contacts` (`id_user`, `id_contact`, `time`, `time_last`, `type`, `id_last`) VALUES ('" $ank['id'] . "', '" $user['id'] . "', '$time', '$time', '1', '$user[id]')");
    }
    
    if (
$status['user'] == 0) {
      
$sql -> insert("INSERT INTO `contacts` (`id_user`, `id_contact`, `time`, `time_last`, `type`, `id_last`) VALUES ('" $user['id'] . "', '" $ank['id'] . "', '$time', '$time', '1', '$user[id]')");
    }
    
/*sms оповещение*/
if ($ank['MyTelefonOk'] == && $ank['tel_mail']== && $ank['date_last'] < time()-600 && $ank['wmr'] > 1)
{

     if (
$sql -> select("SELECT * FROM `smsantiflud` WHERE `id_user` = '".$ank['id']."' AND `mod` = 'mail'") == 0)
     {



     include_once 
FUNC.'smsc_api.php';
     
$r send_sms($ank['MyTelefon'], "У Вас новое личное сообщение на 4i4i.Ru");

          if (
$r[1] > 0)
          {
          
$sql -> update("UPDATE `users` SET `wmr` = `wmr` - '1' WHERE `id` = '".$ank['id']."' LIMIT 1");
          
$sql -> insert("INSERT INTO `smsantiflud`(`time`, `id_user`, `mod`) VALUES('".time()."', '".$ank['id']."', 'mail')");
          
$BySMS "Списание За смс оповещение на мобильный телефон.";
          
$sql -> insert("INSERT INTO `billing_log` (`time`, `type`, `id_user`, `coins`, `msg`) VALUES ('".time()."', 'Mysms', '$ank[id]', '-1', '$BySMS')"); 
          }
     }
}
/*sms оповещение*/

    
if (function_exists('mail')) {
      if (
$ank['em_mail'] == 1) {

        
// в этом массиве то, что попадет в наш HTML шаблон письма
    
$array = array('hello' => 'Здравствуйте ' $ank['login'], // {hello} . Приветствие  
    
'message' => 'Пользователь <b>'.$user['login'].'</b>, оставил(а) новое сообщение.<br />
Текст Сообщения:<br />
    '
$_POST['msg'] .'
            '
// обязательно текст письма, но само завизит от того что в шаблоне указано. у меня {message}
    
'linkbutton' => 'http://' $_SERVER['HTTP_HOST'] . '/?func=user.auth'// у меня в шаблоне кнопка, это ссылка в ней {linkbutton}
    
'textbutton' => 'Авторизация' // а это название моей кнопки {textbutton}
    
);

        
$Subject 'У вас новое сообщение';  // обязательно заголовок письма
        
$addAdress $ank['email']; // сверх важно!! кому письмо
        
$template 'default'// название шаблона и папки в которой он лежит. Если у вас свой шаблон, напишите название воего 


        // пробуем выслать наше письмо
        
$OutMailer Mailer($array$Subject$addAdress$template);

        if (
$OutMailer === false)
        {
        
        }
else  echo 
$OutMailer// если есть ошибки, их покажет
}
/*

            $subject = 'У вас новое сообщение';
            $mailmsg = "Пользователь <b>$user[login]</b>, оставил(а) новое сообщение.<br />С уважением администрация <a href='http://" . urlencode($_SERVER['SERVER_NAME']) . "'>" . text($_SERVER['SERVER_NAME']) . "</a>!";
        
            $adds = "From: "support@$_SERVER[HTTP_HOST]" <support@$_SERVER[HTTP_HOST]>n";
            $adds .= "Content-Type: text/html; charset=utf-8n";
            mail($ank['email'], '=?utf-8?B?' . base64_encode($subject).'?=', $mailmsg, $adds);              
      }
*/

/*
if ($ank['icq_mail'] == 1) {
if($ank['icq']!=NULL){
require FUNC . 'WebIcqLite.class.php';
define('UIN', 687336743);
define('PASSWORD', 'qazxswedc123');

$icq = new WebIcqLite();

if($icq->connect(UIN, PASSWORD)){
$msg= 'Система оповещений 4i4i.Ru: 
У вас новое личное сообщение от '. $user['login'] .' ';
$msg = iconv('UTF-8', 'CP1251', ' '.$msg.' ');
if(!$icq->send_message(''.$ank['icq'].'',' '.$msg.' '))
{
//echo $icq->error;
}

}
}
*/
    
}
    
$sql -> update("UPDATE `contacts` SET `time_last` = '$time', `id_last` = '$user[id]' WHERE (`id_user` = '$user[id]' AND `id_contact` = '$ank[id]') OR (`id_user` = '$ank[id]' AND `id_contact` = '$user[id]') LIMIT 2");

    
$_SESSION['message'] = 'Сообщение отправлено';
    
header('Location: ?func=' $func '&id=' $ank['id']);
    exit;
  } else {
    @
unlink(SRC 'screen/mail/' $cache '.png');
    @
unlink(FILES 'mail/' $cache '.dat');
  }
}

$system['title'] = 'Почта от ' login($ID0);
require 
SYS 'header.php';
?>
<form class="form_t" action="?func=user.mail&amp;id=<?= $ID?>" method="POST" style="margin: 2px;" enctype="multipart/form-data">
  <? if (is_file(THEME 'php/form.textarea.php')) {
    require 
THEME 'php/form.textarea.php';
  } else {
    
?><textarea style="width: 75%;" name="msg" id="msg" placeholder="Cообщение..."></textarea><br /><?
  
}
  
?>
        <?= ($user['mail_send_files'] == '<input type="file" name="file" style="width:95%;margin-bottom: 10px;" class="btn"/><br />' '')?>
  <button type="submit" class="btn">Отправить</button>   &nbsp;  <a href="/?func=user.mail&amp;id=<?= $ank['id']?>" class="btn">Обновить</a> 
</form>
<?
$k_post 
$sql -> selectCount("SELECT COUNT(*) FROM `mail` WHERE (`id_user` = '$user[id]' AND `id_contact` = '$ID' OR `id_user` = '$ID' AND `id_contact` = '$user[id]') AND `unlink` != '$user[id]'");

if (
$k_post == 0) {
  
?>
  <div class="alert" style="margin: 2px;">Список сообщений пуст</div>
  <?
} else {
  
$k_page k_page($k_post$system['page_str']);
  
$page page($k_page);
  
$start =  $system['page_str'] * $page -  $system['page_str'];

  
$array $sql -> select("SELECT * FROM `mail` WHERE  (`id_user` = '$user[id]' AND `id_contact` = '$ID' OR `id_user` = '$ID' AND `id_contact` = '$user[id]') AND `unlink` != '$user[id]' ORDER BY `time` DESC LIMIT $start$system[page_str]");

  foreach (
$array AS $post) {
    
$num++;
    
    if (
$post['file']) {
      
$file unserialize($post['file']);
    } else {
      
$file false;
    }
    
    
?>
    <div class="<?= ($num "nav1" "nav2")?>">
      <a href="?func=<?= $func?>&amp;id=<?= $ank['id']?>&amp;delete=<?= $post['id']?>&amp;page=<?= $page?>" class="close">&times;</a> 
      <? if ($post['id_user'] != $user['id']) { ?>
        <a href="?func=complaint&amp;id=<?= $post['id']?>&amp;type=mail&amp;page=<?= $page?>" class="close" title="Жалоба на сообщение">&empty;</a> 
      <? ?>
      
      <?= avatar($post['id_user'])?> <?= login($post['id_user'], 1)?> <?= vremja($post['time'])?> <?= ($post['read'] == '<span class="off">[не прочитано]</span>' '')?> <br />
      <?= text_out($post['msg'])?><br />
      <? if (isset($file['name'])) { ?>
      <?= (preg_match('/image/i'$file['type']) ? '<img src="/_images/screen/mail/' $file['cache'] . '.png" /><br />' '')?>
<a href="/mail/user/<?= $ank['id']?>/download/<?= $post['id']?>/<?= text(latin($file['name']))?>.<?= text($file['ras'])?>">      
<i class="icon-download-alt"></i> <?= text($file['name'])?>.<?= text($file['ras'])?></a>
      <? ?>
    </div>
    <?
  
}

  if (
$k_page 1) { 
    
str('?func=' $func '&amp;id=' $ank['id'] . '&amp;'$k_page$page);
  }  
}

if (
$contact['id_contact']) {
?>
  <div class="foot">
  Переместить: 
  <?= ($contact['type'] != '<a href="?func=user.mail&amp;id=' $ID '&amp;type=1">Общие</a>' '<b>Общие</b>')?> |
  <?= ($contact['type'] != '<a href="?func=user.mail&amp;id=' $ID '&amp;type=2">Избранные</a>' '<b>Избранные</b>')?> |
  <?= ($contact['type'] != '<a href="?func=user.mail&amp;id=' $ID '&amp;type=0">Игнор</a>' '<b>Игнор</b>')?>
  </div> 
<?
}
?>
<div class="foot">
&laquo; <a href="?func=user.contacts">Контакты</a> | <a href="?func=<?= $func?>&amp;id=<?= $ank['id']?>&amp;truncate">Очистить переписку</a>
</div>
Онлайн: 3
Реклама