/** * Отправка сообщения. * * @param type $attr */ public function _ceSend($attr) { $user = new users(); $messages = new messages(); $stopWords = new stop_words(false); $user->getUserByUID(intval($attr->uid)); if (empty($user->login) || $user->login == 'admin') { self::error(3, false); return; } if ($user->is_banned) { self::error(4, false); return; } $text = iconv('UTF-8', 'CP1251', $attr->text); $text = antispam(change_q_x($text, false, true, null, false, false)); $messages->Add($this->_uid, $user->login, addslashes($text), array(), 0, false, null, $id); if (!is_pro() && !is_pro(true, $attr->uid)) { if (!hasPermissions('streamnomod') && !hasPermissions('streamnomod', $attr->uid)) { $stopWords = new stop_words(false); $text = $stopWords->replace($text); } } $text = reformat($text, 14, 0, 0, 1); $time = date('Y-m-d H:i:s'); $data = array('func' => 'income', 'attr' => array('id' => $id, 'uid' => $this->_uid, 'cuid' => $user->uid, 'text' => iconv('CP1251', 'UTF-8', $text), 'files' => array(), 'date' => $time)); $this->_addEvent($data); return array('id' => $id, 'uid' => $user->uid, 'text' => iconv('CP1251', 'UTF-8', $text), 'date' => $time); }
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/articles.php'; $id = __paramInit('int', null, 'id'); if (articles::setDecline($id, $uid)) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/messages.php'; $article = articles::getArticle($id); $adm = new users(); $adm->getUser('admin'); $text = "Здравствуйте, {$article['uname']}. \r\n\r\n"; $text .= "Ваша статья «{$article['title']}» поступила на модерацию в раздел «Статьи и интервью» сайта Free-lance.ru. "; $text .= "К сожалению, ее формат не подходит для публикации в этом разделе. \r\n\r\n"; $text .= "Вы можете опубликовать свою работу в блогах для ознакомления или в своем портфолио по инструкции http://feedback.free-lance.ru/article/details/id/204 . \r\n"; $text .= "Команда Free-lance.ru благодарит вас за участие в жизни нашего портала. \r\n\r\n"; $text .= "С уважением, \r\n"; $text .= 'Алена, редактор Free-lance.ru'; messages::Add($adm->uid, $article['login'], addslashes($text)); $q = array(); parse_str(parse_url($_SERVER['HTTP_REFERER'], PHP_URL_QUERY), $q); if (isset($q['id'])) { unset($q['id']); } if ($q['p']) { $count = $q['page'] == 'unpublished' ? articles::ArticlesCount(false) : articles::ArticlesCount(); if ($count - 1 < (intval($q['p']) - 1) * $msgs_on_page) { $q['p'] = $q['p'] - 1; if ($q['p'] < 2) { unset($q['p']); } } } header('Location: /articles/' . url($GET, $q, true, '?'));
require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/captcha.php"; $captchanum = $_POST['captchanum']; $captcha = new captcha($captchanum); $rnd = $_POST['rndnum']; if (!$captcha->checkNumber(trim($rnd))) { $error_flag = 1; $alert[4] = "Вы ввели неверную комбинацию символов"; } } // если запрошено обновление капчи в PDA $newCaptcha = $_POST['newcaptcha']; if ($newCaptcha) { $alert = array(); } if ($chat_with != $_SESSION['login'] && !$error_flag) { list($alert, $error) = messages::Add(get_uid(), $chat_with, $msg, $files, 0, false, $attachedfiles_session); if (!$error && isNulArray($alert)) { messages::updateSendLog(get_uid(false)); if ($draft_id) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/drafts.php"; drafts::DeleteDraft(intval($draft_id), get_uid(false), 2, true); } //Если сообщение фрилансеру то разрешаем отправку сообщений обратно if (!is_emp($chat_user->role)) { messages::setIsAllowed($uid, $chat_user->uid); } unset($msg); header("Location: " . $_SERVER["REQUEST_URI"]); exit; } }
/** * отправляет сообщение что аккаунт партнера по СБР заблокирован * @param array $partnersLogins массив с логинами получателей уведомления * @param string $login логин заблокированного пользователя */ function yourSbrPartnerIsBanned(array $partnersLogins, $login) { if (!is_array($partnersLogins)) { return; } $message = 'Free-lance.ru: заблокирован пользователь, с которым вы заключили «Безопасную Сделку» Здравствуйте! Сообщаем вам, что пользователь [' . $login . '], с которым вы работаете через сервис «Безопасная Сделка», был заблокирован администрацией сайта. Для завершения текущих сделок с данным пользователем обратитесь в Арбитраж. Подробная инструкция по завершению сотрудничества через арбитражную комиссию находится в соответствующей статье раздела «Помощь». Приятной работы! Команда Free-lance.ru'; foreach ($partnersLogins as $targetLogin) { messages::Add(users::GetUid($err, "admin"), $targetLogin, $message, '', 1); } }
/** * Отсылка уведомления в личку об Утверждение/удаление записи * * @param int $user_id идентификатор модератора * @param int $from_id идентификатор пользователя * @param int $content_id идентификатор сущности из admin_contents * @param int $rec_id идентификатор записи * @param int $rec_type тип записи * @param int $action действие: 1 - утверждено, 2 - удалено * @param string $reason причина * @return bool true - успех, false - провал */ function sendNotification($user_id = 0, $from_id = 0, $content_id = 0, $rec_id = 0, $rec_type = 0, $action = 1, $reason = '') { global $DB; if ($action != 2) { return; } require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/messages.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/admin_parent.php'; $need_send = false; $users = new users(); $users->GetUserByUID($from_id); $reason = str_replace('%USERNAME%', $users->uname . ' ' . $users->usurname, $reason); switch ($content_id) { case self::MODER_MSSAGES: // Личные сообщения $DB9 = new DB('plproxy'); $sQuery = 'SELECT * FROM messages_moder_send_get(?i, ?i);'; $aMsg = $DB9->row($sQuery, $from_id, $rec_id); $msg = $aMsg['msg_text']; $message = "Сообщение заблокировано.\n\n" . ($msg ? "-----\n\n{$msg}\n\n-----\n\n" : "") . "Причина: {$reason}"; $need_send = true; break; case self::MODER_BLOGS: // Блоги: посты и комментарии require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/blogs.php'; $aMsg = blogs::GetMsgInfo($rec_id, $ee, $tt); $msg = $aMsg['msgtext']; if ($rec_type == 1) { $message = "Сообщение в блоге заблокировано.\n\n" . ($msg ? "-----\n\n{$msg}\n\n-----\n\n" : "") . "Причина: {$reason}"; } if ($rec_type == 2) { $message = "Комментарий в блоге заблокирован.\n\n" . ($msg ? "-----\n\n{$msg}\n\n-----\n\n" : "") . "Причина: {$reason}"; } $need_send = true; break; case self::MODER_COMMUNITY: // Сообщества: посты и комментарии $sql = "SELECT * FROM commune_messages WHERE id = ?i"; $aMsg = $DB->row($sql, $rec_id); $msg = $aMsg['msgtext']; if ($rec_type == 1) { $message = "Сообщение в сообществе заблокировано.\n\n" . ($msg ? "-----\n\n{$msg}\n\n-----\n\n" : "") . "Причина: {$reason}"; } if ($rec_type == 2) { $message = "Комментарий в сообществе заблокирован.\n\n" . ($msg ? "-----\n\n{$msg}\n\n-----\n\n" : "") . "Причина: {$reason}"; } $need_send = true; break; case self::MODER_PROJECTS: // Проекты $sql = "SELECT * FROM projects WHERE id= ?i"; $aMsg = $DB->row($sql, $rec_id); $msg = $aMsg['descr']; $message = "Проект заблокирован.\n\n" . ($msg ? "-----\n\n{$msg}\n\n-----\n\n" : "") . "Причина: {$reason}"; $need_send = true; break; case self::MODER_PRJ_OFFERS: // Предложения в проектах $sql = "SELECT * FROM projects_offers WHERE id = ?i"; $aMsg = $DB->row($sql, $rec_id); $msg = $aMsg['descr']; $message = "Предложение в проекте заблокировано.\n\n" . ($msg ? "-----\n\n{$msg}\n\n-----\n\n" : "") . "Причина: {$reason}"; $need_send = true; break; case self::MODER_ART_COM: // Комментарии в статьях $sql = "SELECT * FROM articles_comments WHERE id = ?i"; $aMsg = $DB->row($sql, $rec_id); $msg = $aMsg['msgtext']; $message = "Комментарий в статьях заблокирован.\n\n" . ($msg ? "-----\n\n{$msg}\n\n-----\n\n" : "") . "Причина: {$reason}"; $need_send = true; break; case self::MODER_PROFILE: // Изменения в профилях $message = "Изменение в профиле отредактировано.\n\nПричина: {$reason}"; $need_send = true; break; case self::MODER_PRJ_DIALOG: // Комментарии к предложениям по проектам $sql = "SELECT * FROM projects_offers_dialogue WHERE id = ?i"; $aMsg = $DB->row($sql, $rec_id); $msg = $aMsg['post_text']; $message = "Комментарий к предложению проекта заблокирован.\n\n" . ($msg ? "-----\n\n{$msg}\n\n-----\n\n" : "") . "Причина: {$reason}"; $need_send = true; break; case self::MODER_CONTEST_COM: // Комментарии к предложениям конкурсов $sql = "SELECT * FROM projects_contest_msgs WHERE id = ?i"; $aMsg = $DB->row($sql, $rec_id); $msg = $aMsg['msg']; $message = "Комментарии к предложению конкурса заблокирован.\n\n" . ($msg ? "-----\n\n{$msg}\n\n-----\n\n" : "") . "Причина: {$reason}"; $need_send = true; break; case self::MODER_PORTF_CHOISE: // Уточнения к разделам в портфолио $message = "Уточнения к разделам в портфолио отредактированы.\n\nПричина: {$reason}"; $need_send = true; break; case self::MODER_PORTFOLIO: // Работы в портфолио $message = "Работа в портфолио заблокирована.\n\nПричина: {$reason}"; $need_send = true; break; case self::MODER_SDELAU: // Предложения фрилансеров "Сделаю" $sql = "SELECT * FROM freelance_offers WHERE id = ?i"; $aMsg = $DB->row($sql, $rec_id); $msg = $aMsg['descr']; $message = "Объявление в предложениях фрилансеров заблокировано.\n\n" . ($msg ? "-----\n\n{$msg}\n\n-----\n\n" : "") . "Причина: {$reason}"; $need_send = true; break; } if ($need_send) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; $users = new users(); messages::Add(users::GetUid($err, 'admin'), $users->GetField($from_id, $err, 'login'), $message, '', 1); } }
/** * Отправка ЛС по заказу ТУ * * @param string $login * @param string $message */ public function sendOrderStatus($login, $message) { messages::Add(users::GetUid($err, 'admin'), $login, $message, '', 0, TRUE); }
/** * Уведомление об удалении предложений фрилансеров * * @param mixed $mId ID предложения фрилансера / массив ID предложений фрилансеров */ function freelancerOfferBlockedNotification($mId) { $sId = !is_array($mId) ? array($mId) : $mId; $sQuery = 'SELECT o.title, o.post_date, o.reason, f.uid, f.login, f.uname, f.usurname FROM freelance_offers o INNER JOIN freelancer f ON f.uid = o.user_id WHERE o.id IN (?l)'; $aOffers = $GLOBALS['DB']->rows($sQuery, $sId); if ($aOffers) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/messages.php'; foreach ($aOffers as $aOne) { $sMessage = 'Здравствуйте, ' . $aOne['uname'] . ' ' . $aOne['usurname'] . ' Сожалеем, но из-за нарушения Правил модераторы сайта вынуждены были заблокировать вашу услугу «' . $aOne['title'] . '» от ' . date('d.m.Y', strtotimeEx($aOne['post_date'])) . ' в разделе «Сделаю» Причина блокировки: ' . $aOne['reason'] . ' Просим вас впредь быть внимательнее при публикации услуг и соблюдать Правила сайта. Это сообщение было отправлено автоматически и не требует ответа. Надеемся на понимание, Команда FL.ru '; messages::Add(users::GetUid($err, 'admin'), $aOne['login'], $sMessage, '', 1); } } }
/** * Уведомление об удалении комментария или поста в блогах. * * @param int $moderator_uid - идентификатор автора блога * @param array $userSubscribe - массив идентификаторов сообщений подписаных польователей * */ public function sendBlogPostDeleted($moderator_uid, $userSubscribe) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/messages.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; // Посылаем подписавшимся на темы if ($userSubscribe) { $moderator = new users(); $moderator->GetUserByUID($moderator_uid); $a_login = $moderator->login; $a_uname = $moderator->uname; $a_usurname = $moderator->usurname; foreach ($userSubscribe as $comment) { if (substr($comment['s_subscr'], 2, 1) == '1' && !$notSend[$comment['s_uid']] && $comment['s_email']) { $this->subject = 'В блоге на сайте FL.ru удален комментарий'; $post_type = "комментарий в <a href='{$GLOBALS['host']}/blogs/view.php?tr={$comment['thread_id']}&openlevel={$comment['id']}{$this->_addUrlParams('b', '&')}#o{$comment['id']}'>в блоге</a>, на который вы подписаны"; if ($comment['s_uid'] == $comment['uid']) { $this->subject = 'Ваш комментарий в блоге на сайте FL.ru удален'; $post_type = "ваш комментарий в <a href='{$GLOBALS['host']}/blogs/view.php?tr={$comment['thread_id']}&openlevel={$comment['id']}{$this->_addUrlParams('b', '&')}#o{$comment['id']}'> блоге</a>"; } $message_template = 'subscribe_delete_comment'; if ($comment['reply_to'] == '') { $this->subject = 'На сайте FL.ru удален блог'; $post_type = 'блог, на который вы подписаны'; if ($comment['s_uid'] == $comment['uid']) { $this->subject = 'Ваш пост в блогах на сайте FL.ru удален'; $post_type = 'ваш пост в блогах'; } $message_template = 'subscribe_delete_post'; } $link_title = "<a href='{$GLOBALS['host']}/blogs/view.php?tr={$comment['thread_id']}{$this->_addUrlParams('b', '&')}' target='_blank'>" . ($comment['blog_title'] == '' ? 'Без названия' : $comment['blog_title']) . '</a>'; $this->message = $this->GetHtml($comment['s_uname'], "\n\tПользователь <a href='{$GLOBALS['host']}/users/{$a_login}/{$this->_addUrlParams('b')}'>{$a_uname} {$a_usurname}</a> [<a href='{$GLOBALS['host']}/users/{$a_login}{$this->_addUrlParams('b')}'>{$a_login}</a>]\n\tудалил(-а) {$post_type} на сайте FL.ru.\n\t<br /> --------\n\t<br />" . ($comment['title'] ? $this->ToHtml(input_ref(LenghtFormatEx($comment['title'], 300), 1)) . '<br />---<br />' : '') . $this->ToHtml(input_ref(LenghtFormatEx($comment['msgtext'], 300), 1)) . ' <br /> -------- <br /> ', array('header' => $message_template, 'footer' => 'subscribe'), array('type' => 1, 'title' => $link_title)); $this->recipient = $comment['s_uname'] . ' ' . $comment['s_usurname'] . ' [' . $comment['s_login'] . '] <' . $comment['s_email'] . '>'; $this->SmtpMail('text/html'); $message = 'Здравствуйте, ' . $comment['s_uname'] . ". \n\tПользователь <a href='{$GLOBALS['host']}/users/{$a_login}/{$this->_addUrlParams('b')}'>{$a_uname} {$a_usurname}</a> [<a href='{$GLOBALS['host']}/users/{$a_login}{$this->_addUrlParams('b')}'>{$a_login}</a>]\n удалил(-а) {$post_type} на сайте FL.ru.\n\t--------" . ($comment['title'] ? $this->ToHtml(input_ref(LenghtFormatEx($comment['title'], 300), 1)) . ' --- ' : '') . $this->ToHtml(input_ref(LenghtFormatEx($comment['msgtext'], 300), 1)) . ' -------- '; messages::Add(users::GetUid($err, 'admin'), $comment['s_login'], $message, '', 1); } } } }
/** * Модератор отвергает рассылку, деньги возращаются юзеру. * * @param integer $id ИД Рассылки * @param string $denied_reason Причина отказа * @param string $error Возвращает сообщение об ошибке * @return integer 1 - все сработало как надо, 0 - ошибка */ public function Deny_new($id, $reason, $row) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/messages.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/account.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/users.php"; $this->error = ''; global $DB; /*$sql = 'SELECT * FROM mass_sending WHERE id = ? AND is_accepted IS NULL'; if (!($row = $DB->row($sql, $id))) { $this->error = 'Рассылка выбрана неправильно'; return FALSE; }*/ $account = new account(); $account->GetInfo($row['user_id']); if (!$account->id) { $this->error = 'Ошибка. Не опеределен счет пользователя.'; return FALSE; } $users = new users(); $user = $users->GetName($row['user_id'], $e); $login = $user['login']; $users->GetUser($login); $admin_id = users::GetUid($err, 'admin'); $text = "Здравствуйте!\n\nАдминистрацией нашего ресурса было принято решение отказать Вам в рассылке по каталогу по причине:\n\n\"\n" . stripslashes($reason) . "\n\"\n\nЭто сообщение было выслано автоматически и ответ на него не будет рассматриваться.\n\nНадеемся на понимание, Команда Free-lance.ru. \n\nИсходный текст Вашей рассылки:\n\n---\n" . html_entity_decode($row['msgtext'], ENT_QUOTES) . "\n--- "; // уведомляем автора о разрешении рассылки $smail = new smail(); $smail->subject = "Ваша заявка на рассылку не прошла модерацию"; $smail->recipient = $users->uname . " " . $users->usurname . " [" . $users->login . "] <" . $users->email . ">"; $reason = $smail->ToHtml($reason); $body = "Ваша заявка на рассылку была отклонена модераторами сайта Free-lance.ru.<br/> \n Причина:<br/>\n ---<br/>\n {$reason}<br/>\n ---<br/>\n "; $smail->message = $smail->GetHtml($users->uname, $body, array('header' => 'default', 'footer' => 'simple')); $smail->send('text/html'); messages::Add($admin_id, $login, $text, '', 1); if (!$DB->query("UPDATE mass_sending SET denied_reason = ?, is_accepted=false, decided_time=now() WHERE id=?", $reason, $id)) { $this->error = 'Произошла ошибка при установлении статуса "Отказано".'; return FALSE; } return TRUE; }
/** * Добавление личного сообщения * * @param array $aParams массив входящих данных * @return array $aResult ответ */ protected function x____messages_send($aParams = array()) { $this->_validDevice($aParams); $nUid = get_uid(false); $nTo = intvalPgSql($aParams['to_id']); if (!empty($nTo)) { require_once ABS_PATH . '/classes/users.php'; $oUser = new users(); $oUser->GetUserByUID($nTo); if ($oUser->uid) { if ($oUser->uid != $nUid) { if (empty($oUser->is_banned)) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/ignor.php'; $bIgnor = ignor::CheckIgnored($oUser->uid, $nUid) || in_array($oUser->login, array('admin', 'Anonymous')); if (!$bIgnor) { $sMessage = __paramValue('html', antispam(iconv('utf-8', 'cp1251', $aParams['text'])), null, true); if (!$sMessage || trim($sMessage) == '') { $this->error(EXTERNAL_ERR_EMPTY_MESSAGE); } elseif ($sMessage && strlen($sMessage) > $this->_mCfg['text_limit']) { $this->error(EXTERNAL_ERR_LENGTH_MESSAGE); } require_once ABS_PATH . '/classes/messages.php'; list($alert, $error) = messages::Add($nUid, $oUser->login, $sMessage, array(), 0, false, null, $sId); if (!$error && isNulArray($alert)) { messages::updateSendLog($nUid); } else { $this->error(EXTERNAL_ERR_SERVER_ERROR); } $aResult = array("message" => array("id" => $sId, "from_id" => $nUid, "to_id" => $oUser->uid, "text" => $aParams['text'], "status" => 1, "read" => 0, "create_time" => time(), "update_time" => time())); } else { $this->error(EXTERNAL_ERR_MESSAGE_IGNOR); } } else { $this->error(EXTERNAL_ERR_USER_BANNED); } } else { $this->error(EXTERNAL_ERR_SELF_MESSAGE); } } else { $this->error(EXTERNAL_ERR_USER_NOTFOUND); } } else { $this->error(EXTERNAL_ERR_EMPTY_USER_ID); } return $aResult; }