Ejemplo n.º 1
0
 /**
  * Отправляет уведомления о новых сообщениях в личке при рассылке администрации.
  * Консьюмер plproxy-mail
  *
  * @param   array      $params    Данные от PgQ, TO-адреса получателей; FROM-адрес отправителя
  * @param   string     $msg       Текст сообщения
  */
 function SendAdminMessage($params)
 {
     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/messages.php';
     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php';
     $messObj = new messages();
     $message_id = $params;
     if (!($message = $messObj->GetMessage($message_id))) {
         return "Тело сообщения отсутствует.";
     }
     $this->subject = "Новое сообщение от Команды FL.ru";
     $msg_text = reformat2($message['msg_text'], 100);
     $attaches = array();
     if ($message['attach']) {
         foreach ($message['attach'] as $a) {
             $attaches[] = new CFile($a['path'] . $a['fname']);
         }
         $attaches = $this->CreateAttach($attaches);
     }
     if (!$this->Connect()) {
         return "Невозможно соеденится с SMTP сервером";
     }
     $from = new users();
     $from->GetUserByUID($message['from_id']);
     $parse = $from->login == 'admin';
     $header = $parse ? 'none' : 'default';
     for ($i = 0; $users = $messObj->GetZeroMessageUsers($message['from_id'], $message_id, 1000, $i * 1000); $i++) {
         foreach ($users as $ikey => $user) {
             if ($parse) {
                 $msg_text = reformat2($message['msg_text'], 100);
                 $msg_text = preg_replace("/%USER_NAME%/", $user['uname'], $msg_text);
                 $msg_text = preg_replace("/%USER_SURNAME%/", $user['usurname'], $msg_text);
                 $msg_text = preg_replace("/%USER_LOGIN%/", $user['login'], $msg_text);
             }
             if (!$user['email'] || substr($user['subscr'], 7, 1) == '0') {
                 continue;
             }
             $this->recipient = $user['uname'] . " " . $user['usurname'] . " [" . $user['login'] . "] <" . $user['email'] . ">";
             $this->message = $this->GetHtml($user['uname'], $msg_text, array('header' => 'none', 'footer' => 'none'));
             $this->SmtpMail('text/html', $attaches);
         }
     }
     return '';
 }
Ejemplo n.º 2
0
 /**
  * Отправляет сообщение от администрации группе юзеров, определенных в модуле /siteadmin/admin/. Вызвается из hourly.php.
  *
  * Чтобы сообщение было отправлено нужно его занести в таблицу messages с полем to_id равным 0 и,
  * по необходимости, определить какому виду пользователей нужно отправить сообщение.
  * Кроме того, далее необходимо зарегистрировать данное сообщение в таблице переменных variables, переменной
  * с именем 'admin_message_id' со значением идентификатором отправляемого сообщения.
  * Отправляет уведомление о новом сообщении в личке ("Мои контакты").
  *
  * @return string возможная ошибка
  */
 public function SendMasssending()
 {
     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/spam.php';
     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/messages.php';
     if (!($message_id = spam::GetMasssendingMessageID())) {
         return "Не зарегистрировано ни одного сообщения от администрации (таблица 'variables', имя переменной 'admin_message_id').";
     }
     if (!($message = messages::GetMessage($message_id))) {
         return 'Тело сообщения отсутствует.';
     }
     $this->subject = 'Новое сообщение на FL.ru';
     $msg_text = "\n<a href='{$GLOBALS['host']}/users/{$message['from_login']}{$this->_addUrlParams('b')}'>{$message['from_uname']} {$message['from_usurname']}</a> [<a href='{$GLOBALS['host']}/users/{$message['from_login']}{$this->_addUrlParams('b')}'>{$message['from_login']}</a>]\nнаправил(а) вам новое сообщение на сайте FL.ru.<br />\n<br />\n---------- \n<br />\n" . $this->ToHtml(LenghtFormatEx(strip_tags($message['msg_text']), 300)) . "\n<br />\n<br />\n<br />\n<a href='{$GLOBALS['host']}/contacts/?from={$message['from_login']}{$this->_addUrlParams('b', '&')}'>{$GLOBALS['host']}/contacts/?from={$message['from_login']}</a>\n<br />\n<br />\n------------\n";
     // атачи по идее не нужны в письме в массовых рассылках, пусть читают на сайте :) но если вдруг... то включить это
     $attaches = array();
     /*if ($message['attach']) {
           foreach($message['attach'] as $a) {
               $attaches[] = new CFile($a['path'].$a['fname']);
           }
           $attaches = $this->CreateAttach($attaches);
       }*/
     if (!$this->Connect()) {
         return 'Невозможно соеденится с SMTP сервером';
     }
     for ($i = 0; $users = messages::GetZeroMessageUsers($message['from_id'], $message_id, 1000, $i * 1000, false); ++$i) {
         foreach ($users as $ikey => $user) {
             if ($user['email'] && substr($user['subscr'], 12, 1) == '1') {
                 $this->recipient = $user['uname'] . ' ' . $user['usurname'] . ' [' . $user['login'] . '] <' . $user['email'] . '>';
                 $this->message = $this->GetHtml($user['uname'], $msg_text, array('header' => 'default', 'footer' => 'default'), array('login' => $user['login']));
                 $this->SmtpMail('text/html', $attaches);
             }
         }
     }
     // отправляем сообщение автору рассылки
     $this->subject = 'Ваша заявка на рассылку прошла модерацию';
     $this->recipient = $message['from_uname'] . ' ' . $message['from_usurname'] . ' [' . $message['from_login'] . '] <' . $message['from_email'] . '>';
     $attaches = '';
     if ($message['attach']) {
         foreach ($message['attach'] as $a) {
             $attaches .= ", <a href='" . WDCPREFIX . "/{$a['path']}{$a['fname']}{$this->_addUrlParams('b')}'>{$a['fname']}</a>";
         }
     }
     $msg_text = $this->ToHtml($message['msg_text']);
     $body = "Ваша заявка на рассылку была рассмотрена и одобрена модераторами сайта FL.ru (3). \n         Фрилансерам выбранных вами специализаций будет отправлено сообщение следующего содержания:</br>\n         ---<br/>\n         {$msg_text}<br/>\n         ---<br/>";
     $this->message = $this->GetHtml($message['from_uname'], $body, array('header' => 'default', 'footer' => 'simple'));
     $this->SmtpMail('text/html');
     return '';
 }