/** * Отправляет уведомления о новых сообщениях в личке при рассылке администрации. * Консьюмер 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 ''; }
/** * Отправляет сообщение от администрации группе юзеров, определенных в модуле /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 ''; }