/** * Изменение логина юзера. Перед вызовом необходимо проинициализировать члены класса * old_login, new_login, save_old. * * @param string $error возвращает сообщение об ошибке * * @return 0 * * @see classes/db_access#Add($error, $return_id) */ public function Add(&$error) { global $DB; require_once ABS_PATH . '/classes/users.php'; $user = new users(); $this->user_id = $user->GetUid($error, $this->old_login); if (!$this->user_id) { $error = 'Пользователь не найден!'; return 0; } $new_user = $user->GetUid($error, $this->new_login); if ($new_user) { $error = 'Логин занят!'; return 0; } if ($this->save_old) { require_once ABS_PATH . '/classes/users_old.php'; require_once ABS_PATH . '/classes/account.php'; $account = new account(); $tr_id = $account->start_transaction($this->user_id); $id = 0; $error = $account->Buy($id, $tr_id, self::OP_CODE, $this->user_id, 'Изменеие логина', 'Изменение логина'); if ($error) { return 0; } $this->operation_id = $id; $users_old = new users_old(); $users_old->Add($this->old_login); } if (!$error) { $aData = array('user_id' => '', 'old_login' => '', 'new_login' => '', 'save_old' => '', 'operation_id' => ''); foreach ($aData as $key => $val) { $aData[$key] = $this->{$key}; } $CFile = new CFile(); if (!$CFile->MoveDir($this->new_login, $this->old_login)) { $error = "Директория не создана! {$this->new_login}, {$this->old_login}"; if ($this->operation_id) { $account->Del($this->user_id, $this->operation_id); } } else { $DB->insert('login_change', $aData); $user->login = $this->new_login; $user->Update($this->user_id, $res); } } return 0; }
/** * Добавляет пользователя в список игнорирования. * * @param integer $user_id id пользователя, добавляющего другого в игнор-лист * @param string $target_login логин пользователя, добаляемого в игнор-лист * * @return string пустая строка или сообщение об ошибке в случае неуспеха */ public function Add($user_id, $target_login) { global $usersNotBeIgnored; if (empty($user_id) || empty($target_login) || in_array($target_login, $usersNotBeIgnored)) { return false; } $user = new users(); $user->login = $target_login; $target_id = $user->GetUid($error); $DB = new DB(); $r = $DB->val('SELECT ignor_add(?i, ?i)', $user_id, $target_id); return ''; }
/** * Файлы переписки в ЛС доступны участникам и админу. * * @param type $params * @param CFile $file * * @return type */ protected function _contacts($params, CFile $file) { //нет необходимости так как в общей таблице //$tableName = $file->getTableName(); require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/messages.php'; $allow_download = false; $users = new users(); $from_uid = $users->GetUid($error, $params['login']); if ($from_uid > 0) { $msgObj = new messages(); $allow_download = $msgObj->isFileExist($from_uid, $this->uid, $file->id); } return $allow_download; }
/** * Добавляет/удаляет пользователя в личную папку * * @param string $login логин пользователя, над которым производим действия * * @return integer */ function Change($login) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/users.php"; $DB = new DB(); $ok = FALSE; $this->to_id = users::GetUid($error, $login); $res = $DB->query("SELECT * FROM messages_folders(?i)", $this->from_id); while ($row = pg_fetch_assoc($res)) { if ($row['id'] == $this->folder) { $ok = TRUE; break; } } if ($this->to_id && $this->from_id) { $id = $DB->val("SELECT messages_folders_user_move(?i, ?i, ?i)", $this->from_id, $this->to_id, $this->folder); } return $id; }
/** * отправляет сообщение что аккаунт партнера по СБР заблокирован. * * @param array $partnersLogins массив с логинами получателей уведомления * @param string $login логин заблокированного пользователя */ public function yourSbrPartnerIsBanned(array $partnersLogins, $login) { if (!is_array($partnersLogins)) { return; } $message = 'Free-lance.ru: заблокирован пользователь, с которым вы заключили «Безопасную Сделку» Здравствуйте! Сообщаем вам, что пользователь [' . $login . '], с которым вы работаете через сервис «Безопасная Сделка», был заблокирован администрацией сайта. Для завершения текущих сделок с данным пользователем обратитесь в Арбитраж. Подробная инструкция по завершению сотрудничества через арбитражную комиссию находится в соответствующей статье раздела «Помощь». Приятной работы! Команда Free-lance.ru'; foreach ($partnersLogins as $targetLogin) { self::Add(users::GetUid($err, 'admin'), $targetLogin, $message, '', 1); } }
/** * Обработчик вывода страницы /send/ - "Передать деньги". */ public function sendAction() { if (!hasPermissions('payments')) { include $_SERVER['DOCUMENT_ROOT'] . '/404.php'; exit; } front::og('tpl')->page = 'send'; front::og('tpl')->script = '/scripts/bill2.js'; self::isBlockMoney(); /** * Подключаем AJAX для страницы. */ require_once $_SERVER['DOCUMENT_ROOT'] . '/xajax/bill.common.php'; front::og('tpl')->xajax = $xajax; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/account.php'; $canTransfer = account::checkDepositByNotCard(get_uid(false)); front::og('tpl')->canTransfer = $canTransfer; // Обработка события подтверждения перевода if ($_POST['action'] == 'sendm' && !$_POST['last_action'] && $canTransfer) { $trs_sum = round(floatval($_POST['sum']), 2); $sum = round(floatval(str_replace(',', '.', trim($_POST['sum'])))); // сумма перевода $login = trim(strip_tags($_POST['login'])); $msg = __paramInit('string', null, 'msg', null, 300); $tr_id = $_REQUEST['transaction_id']; front::og('tpl')->tr_id = $tr_id; front::og('tpl')->login = $login; front::og('tpl')->msg = $msg; front::og('tpl')->sum = $sum; $user = new users(); $gid = $user->GetUid($error, $login); if (!$gid) { $error = 1; $alert['login'] = '******'; } if ($sum > 0 && $this->account->sum < $sum) { $error = 1; $alert['sum'] = 'Недостаточно средств'; } if ($sum <= 0) { $error = 1; $alert['sum'] = 'Значение должно быть больше нуля'; } if (!$error) { // Ошибок нет все круто $order_id = $this->account->transfer(get_uid(), $gid, $sum, $tr_id, $msg, true, $trs_sum); if (!$order_id) { header('Location: /bill/fail/'); die; } else { header("Location: /{$this->name_page}/success/"); die; } } else { // Если есть ошибки выводим ту же страницу но с другой капчей $inner = 'send2.php'; $user->GetUser($login); $transaction_id = $tr_id; front::og('tpl')->user = $user; front::og('tpl')->alert = $alert; front::og('tpl')->display('bill/bill_send2.tpl'); return true; } front::og('tpl')->alert = $alert; } if ($_POST['last_action']) { $sum = floatval(trim($_POST['sum'])); $login = trim($_POST['login']); $msg = trim($_POST['msg']); $tr_id = $_REQUEST['transaction_id']; front::og('tpl')->tr_id = $tr_id; front::og('tpl')->login = $login; front::og('tpl')->msg = $msg; front::og('tpl')->sum = $sum; } front::og('tpl')->display('bill/bill_send.tpl'); }
$dialog = $msgs->GetMessages(get_uid(), $chat_with, $num_msgs_from, $curpage, $page_size); //$_SESSION['newmsgs'] = $msgs->GetNewMsgCount($_SESSION['uid'], $err); $user = new users(); $user->GetUser($chat_with); if (!is_pro(true, $user->uid) && !is_emp($user->role) && count($dialog) == 0 && is_emp($_SESSION['role'])) { $is_contact_splash = true; } if ($user->login == '') { header("Location: /404.php"); } // Если пользователь забанен if ($user->is_banned && !hasPermissions('users')) { $error_flag = 1; $alert[3] = "Этот пользователь заблокирован. Вы не можете отправить ему личное сообщение"; } $dlg_user = users::GetUid($err, $user->login); $dlg_user_login = $user->login; if ($post_denied = ignor::CheckIgnored($dlg_user, $_SESSION['uid']) || in_array($user->login, array('admin', 'Anonymous'))) { $error = "Пользователь запретил отправлять ему сообщения"; } if (!$post_denied && is_emp($user->role)) { $is_allow_messages = messages::isAllowed($user->uid, $uid); $post_denied = !$is_allow_messages; } $prjname = $_POST['prjname']; $cnt_role = substr($user->role, 0, 1) == '0' ? "frl" : "emp"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/memBuff.php"; $memBuff = new memBuff(); $memBuff->delete("msgsCnt" . get_uid(false)); # $css_file = ""; }
/** * Проверка депозита и зачисление денег на счет. * * @param integer $op_id Возвращает Код операции * @param integer $err_code Возвращает Код ошибки * @param integer $ammount Возвращает Сумма депозита * @param string $login Логин депозитчика * @param integer $operation_id ИД Операции * @param string $op_date Дата операции * @return string Сообщение об ошибке */ function checkdeposit(&$op_id, &$err_code, &$ammount, $login, $operation_id, $op_date) { if (floatval($ammount) <= 0) { $err_code = 241; return "Неверная сумма!"; } if (!$operation_id) { return "Неверный идентификатор операции!"; } if (!$op_date) { $err_code = 300; return "Неверная дата операции!"; } $date_arr = strptime($op_date, "%Y%m%d%H%M%S"); $date = $date_arr['tm_year'] + 1900 . "-" . ($date_arr['tm_mon'] + 1) . "-" . $date_arr['tm_mday'] . " " . $date_arr['tm_hour'] . ":" . $date_arr['tm_min'] . ":" . $date_arr['tm_sec']; if (strtotime($date) == -1) { $err_code = 300; return "Неверная дата операции!"; } $user = new users(); $uid = $user->GetUid($error, $login); if (!$uid) { $err_code = 5; $error = "Неверный счет на сайте!"; } elseif (!$this->GetInfo($uid)) { $err_code = 79; $error = "Счет абонента не активен."; } $descr = "ОСМП от {$date} сумма - {$ammount}, номер покупки ОСМП {$operation_id}"; $op_id = 0; $op_code = 12; $amm = $ammount; $old_payment = $this->SearchPaymentByDescr("номер покупки ОСМП {$operation_id}"); if ($old_payment) { $op_id = $old_payment['id']; $ammount = $old_payment['trs_sum']; } else { $error = $this->deposit($op_id, $this->id, $amm, $descr, 8, $ammount, $op_code, 0, $date); if ($error) { $error = "Невозможно завершить оплату. Повторите позже"; $err_code = 1; } } return $error; }
/** * Удаление пользователя из избранного по его логину * * @param integer $user_id id пользователя в избранном которого нужно удалить пользователя * @param string $target_login login пользователя, которого нужно удалить * @return string текст ошибки операции или пустая строка */ function teamsDelFavoritesByLogin($user_id, $target_login) { $DB = new DB(); $error = ''; if ($user_id && ($target_id = users::GetUid($error, $target_login))) { $DB->query("SELECT teams_del(?i, ?i)", $user_id, $target_id); require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/pmail.php"; $mail = new pmail(); $mail->delTeamPeople($user_id, $target_id); } else { $error = "Юзер не определен"; } return $error; }
/** * Собирает WHERE часть SQL запроса истории админских действий */ function _setLogWhere() { $this->aSQL['where'] = array(); $sCurrDate = date('Y-m-d'); // если не админ - то показывать только те действия на которые юзер имеет права if (!in_array('all', $this->user_permissions)) { $sSearch = '|' . implode('|', $this->user_permissions) . '|'; $this->aSQL['where'][] = "position('|'||a.rights||'|' in '{$sSearch}' ) > 0"; } if (self::isFilter('in_id')) { $ids = is_array($this->filter['in_id']) ? $this->filter['in_id'] : array($this->filter['in_id']); $this->aSQL['where'][] = $GLOBALS['DB']->parse('l.id IN (?l)', $ids); } if (self::isFilter('date_from')) { $this->aSQL['where'][] = $GLOBALS['DB']->parse('l.act_time >= ?::timestamp without time zone', $this->filter['date_from']); } if (self::isFilter('date_to') && $this->filter['date_to'] < $sCurrDate) { $this->aSQL['where'][] = $GLOBALS['DB']->parse('l.act_time <= ?::timestamp without time zone', date('Y-m-d', strtotime($this->filter['date_to'] . '+1 day'))); } if (self::isFilter('act_id')) { $ids = is_array($this->filter['act_id']) ? $this->filter['act_id'] : array($this->filter['act_id']); $this->aSQL['where'][] = $GLOBALS['DB']->parse('l.act_id IN (?l)', $ids); } if (self::isFilter('not-act_id')) { $ids = is_array($this->filter['not-act_id']) ? $this->filter['not-act_id'] : array($this->filter['not-act_id']); $this->aSQL['where'][] = $GLOBALS['DB']->parse('l.act_id NOT IN (?l)', $ids); } if (self::isFilter('obj_code')) { $this->aSQL['count_join']['admin_actions'] = 1; $this->aSQL['where'][] = $GLOBALS['DB']->parse('a.obj_code = ?i', $this->filter['obj_code']); } if (self::isFilter('object_id')) { $this->aSQL['where'][] = $GLOBALS['DB']->parse('l.object_id = ?i', $this->filter['object_id']); } if (self::isFilter('admin_id')) { $this->aSQL['where'][] = $GLOBALS['DB']->parse('l.admin_id = ?i', $this->filter['admin_id']); } if (self::isFilter('search')) { $sSearch = pg_escape_string($this->filter['search']); $sAdd = $this->mode == 'proj' && preg_match('/^[\\d]+$/', $sSearch) ? " OR l.object_id = '{$sSearch}'" : ''; $sAdd2 = ''; if ($this->mode == 'proj' || $this->mode == 'offer') { $sAdd2 = " OR au.\"login\" ILIKE '%{$sSearch}%' OR au.uname ILIKE '%{$sSearch}%' OR au.usurname ILIKE '%{$sSearch}%'"; } if ($this->mode == 'log') { $user = new users(); $uid = (int) $user->GetUid($err, $sSearch); if ($uid) { $sAdd2 = " OR l.user_id = {$uid}"; } } $this->aSQL['where'][] = "(l.object_name ILIKE '%{$sSearch}%' OR l.admin_comment ILIKE '%{$sSearch}%' {$sAdd} {$sAdd2})"; } if (self::isFilter('category')) { if (self::isFilter('sub_category')) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/professions.php'; //$ids = professions::GetMirroredProfs( $this->filter['sub_category'] ); if ($this->mode == 'proj') { //$this->aSQL['where'][] = $GLOBALS['DB']->parse( 'EXISTS (SELECT 1 from project_to_spec WHERE project_id = l.object_id AND subcategory_id IN (?l))', $ids ); $this->aSQL['where'][] = $GLOBALS['DB']->parse('EXISTS (SELECT 1 from project_to_spec WHERE project_id = l.object_id AND subcategory_id = ?i)', $this->filter['sub_category']); } elseif ($this->mode == 'offer') { //$this->aSQL['where'][] = $GLOBALS['DB']->parse('fo.subcategory_id IN (?l)', $ids ); $this->aSQL['where'][] = $GLOBALS['DB']->parse('fo.subcategory_id = ?i', $this->filter['sub_category']); } } else { if ($this->mode == 'proj') { $this->aSQL['where'][] = $GLOBALS['DB']->parse('EXISTS (SELECT 1 from project_to_spec WHERE project_id = l.object_id AND category_id = ?i)', $this->filter['category']); } elseif ($this->mode == 'offer') { $this->aSQL['where'][] = $GLOBALS['DB']->parse('fo.category_id = ?i', $this->filter['category']); } } } // фильтр по часам (смены работы модераторов) if (self::isFilter('time')) { $time = array(); foreach ($this->filter['time'] as $sTime) { $aTime = $this->getTimePeriod($sTime, $div); if (!$div) { $time[] = $GLOBALS['DB']->parse("date_trunc('hour', l.act_time)::time without time zone >= ?::time without time zone \n AND date_trunc('hour', l.act_time)::time without time zone < ?::time without time zone", $aTime['from'], $aTime['to']); } else { $time[] = $GLOBALS['DB']->parse("(date_trunc('hour', l.act_time)::time without time zone >= ?::time without time zone \n AND date_trunc('hour', l.act_time)::time without time zone < ?::time without time zone\n OR date_trunc('hour', l.act_time)::time without time zone >= ?::time without time zone \n AND date_trunc('hour', l.act_time)::time without time zone < ?::time without time zone)", $aTime[0]['from'], $aTime[0]['to'], $aTime[1]['from'], $aTime[1]['to']); } } $this->aSQL['where'][] = '(' . implode(' OR ', $time) . ')'; } }
/** * Уведомление об удалении комментария или поста в блогах. * * @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); } } } }
/** * Послать сначала создателю рассылки * * @global type $DB * @param integer $mailer_id ИД рассылки */ public function sendForMe($mailer_id) { $message = $this->getMailerById($mailer_id); // Обрабатываем вложения $attached = array(); if ($message['is_attached']) { $attached = $this->getAttach($message['id']); $attached = array_map(create_function('$a', 'return $a["fid"];'), $attached); } require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/smtp.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; $user = new users(); $user->GetUserByUID($message['user_id']); $user = get_object_vars($user); if ($message['type_sending'][0] == 1) { $PLDB = new DB('plproxy'); $adm = new users(); $adm_id = $adm->GetUid($e, "admin"); $PLDB->val("SELECT messages_add(?i, ?i, ?, ?b, ?a, ?b)", $adm_id, $user['uid'], $message['message'], true, $attached, true); } if ($message['type_sending'][1] == 1) { $mail = new smtp(); $mail->prepare = true; $mail->subject = $message['subject']; $mail->message = $this->getMailContent($message['message']); $mail->recipient[] = $this->array2send($user); $mail->send('text/html', $attached); } if ($message['type_sending'][0] == 0 && $message['type_sending'][1] == 0) { $PLDB = new DB('plproxy'); $adm = new users(); $adm_id = $adm->GetUid($e, "admin"); $PLDB->val("SELECT messages_add(?i, ?i, ?, ?b, ?a, ?b)", $adm_id, $user['uid'], $message['message'], true, $attached, true); // ------------------------ // $mail = new smtp(); $mail->prepare = true; $mail->subject = $message['subject']; $mail->message = $this->getMailContent($message['message']); $mail->recipient[] = $this->array2send($user); $mail->send('text/html', $attached); } }
/** * Красный прямоугольник для заблокированных проектов. * * @param string $reason причина блокировки * @param date $date дата блокироки * @param string $moder_login логин модератора (оставить пустым, если показывать не нужно) * @param string $moder_name uname и usurname модератора (оставить пустым, если показывать не нужно) * * @return HTML */ public function BlockedProject($reason, $date, $moder_login = '', $moder_name = '') { $reason = reformat($reason, 24, 0, 0, 1, 24); $html = "\n <div class='br-moderation-options'>\n <a href='http://feedback.fl.ru/' class='lnk-feedback' style='color: #fff;'>Служба поддержки</a>\n <div class='br-mo-status'><strong>Проект заблокирован.</strong> Причина: {$reason}</div>"; if ($moder_login) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; $users = new users(); $admUid = $users->GetUid($error, $moder_login); $link = '/siteadmin/admin_log/?cmd=filter&to_d=' . dateFormat('d', $date) . '&to_m=' . dateFormat('m', $date) . '&to_y=' . dateFormat('Y', $date) . '&adm=' . $admUid . '&act=9'; $html .= '<div class="b-layout__txt b-layout__txt_padtop_5 b-layout__txt_float_right"> <img class="b-layout__pic b-layout__pic_valign_middle" src="/images/comm.gif" alt="" width="15" height="14"> <a class="b-layout__link b-layout__link_fontsize_11" href="' . $link . '">Комментарии по проекту</a> </div>'; } $html .= "<p class='br-mo-info'>" . ($moder_login ? "Заблокировал: <a href='/users/{$moder_login}' style='color: #FF6B3D'>{$moder_name} [{$moder_login}]</a><br />" : '') . 'Дата блокировки: ' . dateFormat('d.m.Y H:i', $date) . '</p> </div> '; return $html; }
/** * Уведомление об удалении предложений фрилансеров * * @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 string $login * @param string $message */ public function sendOrderStatus($login, $message) { messages::Add(users::GetUid($err, 'admin'), $login, $message, '', 0, TRUE); }
admin_log::addLog(admin_log::OBJ_CODE_USER, admin_log::ACT_ID_USR_CH_RATING, $user->uid, $user->uid, $sObjName, $sObjLink, 0, '', 0, $sReason); //----------------------------------- header("Location: /siteadmin/rating/?result=success"); exit; } $error = "ќшибка."; break; case "setpwd": $login = __paramInit('string', NULL, 'login'); $pwd = stripslashes($_POST['pwd']); //__paramInit('string', NULL, 'pwd'); require_once ABS_PATH . "/classes/users.php"; require_once ABS_PATH . "/classes/codes.php"; $codes = new codes(); $user = new users(); $uid = $user->GetUid($error, $login); $user->passwd = $pwd; $err = $user->Update($uid, $res); $codes->DelByUT($uid, 1); // ѕишем в лог смены паролей require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/restorepass_log.php"; restorepass_log::SaveToLog($uid, getRemoteIP(), 4, get_uid(false)); header("Location: /siteadmin/rating/?result=success"); break; case "addserv": $login = __paramInit('string', NULL, 'login'); $days = __paramInit('string', NULL, 'days'); $type = __paramInit('int', NULL, 'type'); $where = __paramInit('int', NULL, 'where'); $fid = users::GetUid($err, $login); if ($fid && $login) {
/** * Создает новую тему * * @param integer $fid ID Пользователя * @param integer $group раздел для темы * @param integer $base "база" для темы * @param string $name название * @param string $msg текст * @param string $attach массив файлов типа CFile * @param string $ip ip, с которого запостили * @param integer $mod имеет ли юзер права на пост тем в этот раздел (0 - да, 1 - нет) * @param integer $small 1 - присоединенный файл является маленькой картинкой, 2 - большой картинкой (есть превью), 0 - другое * @param array $tags массив тегов @deprecated * @param string $yt_link ссылка на видео в YouTube * @param integer $close_comments запрет комментирования * @param integer $is_private приватность записи @see self::is_private * @return string Сообщение об ошибке */ function NewThread($fid, $group, $base, $name, $msg, $attach, $ip, $mod, $small = 0, $tags = "", $yt_link = "", $close_comments = 'f', $is_private = 'f', $ontop = 'f', $poll_question = '', $poll_answers = '', $poll_multiple = false) { global $DB; if ($group == 7) { $max_image_size = array('width' => 400, 'height' => 600, 'less' => 0); } else { $max_image_size = array('width' => 470, 'height' => 1000, 'less' => 0); } $base = 0; // всегда 0, поле устарело. $alert = self::UploadFiles($attach, $max_image_size); if (!$alert) { if ($base == 0) { $sql = "SELECT read_only FROM blogs_groups WHERE id = ?i"; $read_only = $DB->val($sql, $group); } else { $read_only = 0; } if ($read_only && $mod == 1) { return "Вы не можете писать в этот блог"; } $sql = array('id_gr' => $group, 'base' => $base, 'close_comments' => $close_comments, 'is_private' => $is_private, 'fromuser_id' => $fid); if ($close_comments == 't') { $users = new users(); if ($fid == $users->GetUid($uerr, 'admin')) { $sql['id_gr_public'] = $group; } } $year = date("Y"); $trtmp = $DB->insert('blogs_themes', $sql, "id_gr||'-'||thread_id"); list($id_gr, $trid) = explode('-', $trtmp); //$sModVal = is_pro() ? 'NULL' : '0'; $sModVal = '0'; $msg_id = $DB->val("\n INSERT INTO blogs_msgs_{$year} \n (fromuser_id, reply_to, from_ip, post_time, thread_id, msgtext, title, yt_link, ontop, moderator_status)\n VALUES\n (?, NULL, ?, NOW(), ?, ?, ?, ?, ?, {$sModVal})\n RETURNING\n id\n ", $fid, $ip, $trid, $msg, $name, $yt_link, $ontop); /*if ( $msg_id ) { require_once( $_SERVER['DOCUMENT_ROOT'] . '/classes/user_content.php' ); $DB->insert( 'moderation', array('rec_id' => $msg_id, 'rec_type' => user_content::MODER_BLOGS) ); }*/ if ($attach) { foreach ($attach as $att) { $att->updateFileParams(array('src_id' => $msg_id, 'small' => $att->small), false); } } } // опрос if ($poll_question !== '' && is_array($poll_answers) && !empty($poll_answers)) { $DB->insert('blogs_poll', array('thread_id' => $trid, 'question' => $poll_question, 'multiple' => (bool) $poll_multiple)); $data = array(); foreach ($poll_answers as $answer) { $data[] = array('thread_id' => $trid, 'answer' => $answer); } $DB->insert('blogs_poll_answers', $data); } return array($alert, $error_flag, $error, $msg_id, $trid, $id_gr); }
function ChFolder($folder_id, $cur_folder, $login) { session_start(); $objResponse = new xajaxResponse(); $user = new users(); $user->GetUser($login); if (!$user->is_banned) { $folder_id = intval($folder_id); $login = addslashes($login); $cur_folder = intval($cur_folder); $uid = get_uid(false); if ($folder_id && $login && $folder_id > 0) { $fld = new mess_ustf(); $fld->from_id = $uid; $fld->folder = $folder_id; $passive = $fld->Change($login); if ($cur_folder == -3) { $to_id = users::GetUid($error, $login); $restored_error = messages::RestoreFromUsers($uid, array($to_id)); if ($restored_error) { $objResponse->alert($restored_error); } else { $objResponse->assign("ur" . $login, "style.display", "none"); } } } if ($folder_id < 0) { if ($folder_id == -1) { $fld = new teams(); $fld->user_id = $uid; $passive = !$fld->teamsInverseFavorites($login); if ($cur_folder == -3) { $to_id = users::GetUid($error, $login); $restored_error = messages::RestoreFromUsers($uid, array($to_id)); if ($restored_error) { $objResponse->alert($restored_error); } else { $objResponse->assign("ur" . $login, "style.display", "none"); } } } if ($folder_id == -2) { $fld = new ignor(); $fld->user_id = $uid; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/memBuff.php"; $passive = !$fld->Change($login); $objResponse->assign("ur" . $login, "style.display", "none"); $objResponse->script("Notification();"); $memBuff = new memBuff(); $memBuff->delete("msgsCnt" . $uid); if ($cur_folder == -3) { $to_id = users::GetUid($error, $login); $restored_error = messages::RestoreFromUsers($uid, array($to_id)); if ($restored_error) { $objResponse->alert($restored_error); } else { $objResponse->assign("ur" . $login, "style.display", "none"); } } } if ($folder_id == -3) { $passive = !messages::DeleteFromUsers($login); } } if ($passive) { $objResponse->assign("folder" . $folder_id . "u" . $login, "className", "active"); $objResponse->assign("vfolder" . $folder_id . "u" . $login, "className", "active"); $inc = 1; } else { if ($cur_folder == $folder_id) { $objResponse->assign("ur" . $login, "style.display", "none"); } else { $objResponse->assign("folder" . $folder_id . "u" . $login, "className", ""); $objResponse->assign("vfolder" . $folder_id . "u" . $login, "className", "passive"); } $inc = -1; } $objResponse->script("document.getElementById('fldcount" . $folder_id . "').innerHTML = " . $inc . "+Math.round(document.getElementById('fldcount" . $folder_id . "').innerHTML);"); } return $objResponse; }
/** * Модератор отвергает рассылку, деньги возращаются юзеру. * * @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; }
header("Location: /commune/?id={$id}&site=Admin"); exit; } $r = commune::AddAdmin($id, $user_login, $e); if (!$r) { $alert['user_login'] = "******"; } else { if ($r < 0) { if (strtolower($user_login) == strtolower($_SESSION['login'])) { $alert['user_login'] = '******'; } else { $alert['user_login'] = '******'; } } else { $sm = new smail(); if ($user_id = users::GetUid($e, $user_login)) { $sm->CommuneMemberAction($user_id, $action, $comm); } header("Location: /commune/?id={$id}&site=Admin"); exit; } } break; case 'do.Remove.admin': $commune_output = 'admin.php'; $member_id = __paramInit('int', 'm', NULL); $alert = NULL; if (!$member_id) { header("Location: /commune/?id={$id}&site=Admin"); exit; }
<?php $rpath = '../'; $header = '../header.php'; $footer = '../footer.html'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects_offers.php'; session_start(); $uid = get_uid(); $pid = intvalPgSql((int) trim($_GET['pid'])); $wid = intvalPgSql((int) trim($_GET['wid'])); $name = trim($_GET['user']); $user_obj = new users(); $user_obj->GetUser($name); $uid = $user_obj->GetUid($error, $name); $proj = array(); $proj = (array) $user_obj; // Проект. $obj_project = new projects(); $project = $obj_project->GetPrjCust($pid); if (!$project || !$user_obj->uid) { $fpath = '../'; include '../404.php'; exit; } else { // Предложения по данному проекту. $obj_offer = new projects_offers(); $offer = $obj_offer->GetPrjOffer($pid, $user_obj->uid); $width = $height = 0; if (!$offer) {
function GetNote($login) { session_start(); require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/users.php"; $oUser = new users(); $nTargetId = $oUser->GetUid($sError, $login); $objResponse = new xajaxResponse(); $nuid = get_uid(false); $note = notes::GetNoteInt($nuid, $nTargetId, $err); $text = htmlspecialchars_decode($note['n_text']); $text = str_replace("'", "'", $text); $s = "\n \$('note_rating').set('value', '{$note['rating']}');\n f = document.getElement('div.uprj-note.form-templ');\n f.getElements('input,textarea').set('disabled', false);\n "; $objResponse->script($s); $objResponse->assign('f_n_text', 'value', $text); return $objResponse; }
/** * Обработчик событий страницы /about/team/ (Команда) * */ function teamAction() { $DB = new DB('master'); require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/team.php"; $action = $_POST['action']; switch ($action) { case 'updatecategory': if (!get_uid(false)) { header("Location: /fbd.php"); exit; } if (!hasPermissions('about')) { header("Location: /about/team"); exit; } $id = front::$_req['ecf_id']; $name = stripslashes(front::$_req['ecf_name']); $position = front::$_req['ecf_number']; $error = 0; if (empty($name)) { $error = 1; $error_msgs[1] = 'Поле "Название" заполнено некорректно'; } if (!is_numeric($position)) { $error = 1; $error_msgs[2] = 'Поле "Порядок" заполнено некорректно'; } else { $position = (int) $position; if ($position <= 0) { $error = 1; $error_msgs[2] = 'Поле "Порядок" заполнено некорректно'; } } $name = change_q($name); if ($error) { front::og("tpl")->error_msgs_ecf = $error_msgs; front::og("tpl")->ecf_name = $name; front::og("tpl")->ecf_position = $position; front::og("tpl")->ecf_id = $id; } else { team::EditGroup($id, $name, $position); header('Location: /about/team/'); exit; } break; case 'addpeople': if (!get_uid(false)) { header("Location: /fbd.php"); exit; } if (!hasPermissions('about')) { header("Location: /about/team"); exit; } $p_name = stripslashes(front::$_req['pt_name']); $p_login = stripslashes(front::$_req['pt_login']); $p_occupation = stripslashes(front::$_req['pt_occupation']); $p_position = stripslashes(front::$_req['pt_position']); $p_group = stripslashes(front::$_req['pt_group']); $p_info = stripslashes(front::$_req['pt_info']); $p_foto = $_FILES['pt_photo']; $error = 0; if (empty($p_name)) { $error = 1; $error_msgs[1] = 'Поле "Имя, фамилия" заполнено некорректно'; } if (empty($p_occupation)) { $error = 1; $error_msgs[2] = 'Поле "Должность" заполнено некорректно'; } if (!is_numeric($p_position) && $p_position != '') { $error = 1; $error_msgs[3] = 'Поле "Порядок" заполнено некорректно'; } else { $p_position = (int) $p_position; } if (!empty($p_login)) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/users.php"; $u = new users(); if (!$u->GetUid($ee, $p_login)) { $error = 1; $error_msgs[4] = 'Поле "Логин" заполнено некорректно'; } } $p_name = change_q($p_name); $p_login = change_q($p_login); $p_occupation = change_q($p_occupation); $p_info = change_q($p_info); $p_name = addslashes($p_name); $p_occupation = addslashes($p_occupation); $p_info = addslashes($p_info); $p_foto = ''; if (!empty($_FILES['pt_photo']['tmp_name'])) { list($i_width, $i_height, $i_type) = @getimagesize($_FILES['pt_photo']['tmp_name']); if (in_array($i_type, array(IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG)) && $i_width == 150 && $i_height == 200) { $p_userpic = new CFile($_FILES['pt_photo']); if ($p_userpic->name) { $e = team::UpdateFoto($p_userpic); if ($e['error'] == '1') { $error = 1; $error_msgs[5] = 'Файл не удовлетворяет условиям загрузки'; $p_foto = $e['foto']; } else { $p_foto = $e['foto']; $error_msgs[5] = 'Файл не удовлетворяет условиям загрузки'; } } } else { $error = 1; $error_msgs[5] = 'Файл не удовлетворяет условиям загрузки'; } } if ($error) { if ($p_foto != '') { $p_userpic->Delete(0, 'team/' . $p_foto); } front::og("tpl")->error_msgs_apf = $error_msgs; front::og("tpl")->p_name = $p_name; front::og("tpl")->p_login = $p_login; front::og("tpl")->p_occupation = $p_occupation; front::og("tpl")->p_group = $p_group; front::og("tpl")->p_position = $p_position; front::og("tpl")->p_info = $p_info; } else { if ($p_position <= 0) { $max_position = front::og("db")->select("SELECT MAX(position) as position FROM team_people WHERE groupid = ?;", $p_group)->fetchOne(); $p_position = $max_position['position'] + 1; } team::AddUser($p_name, $p_login, $p_occupation, $p_foto, $p_group, $p_position, $p_info); header('Location: /about/team/'); exit; } break; case 'updatepeople': if (!get_uid(false)) { header("Location: /fbd.php"); exit; } if (!hasPermissions('about')) { header("Location: /about/team"); exit; } $p_id = stripslashes(front::$_req['pt_id']); $p_name = stripslashes(front::$_req['pt_name']); $p_login = stripslashes(front::$_req['pt_login']); $p_occupation = stripslashes(front::$_req['pt_occupation']); $p_position = stripslashes(front::$_req['pt_position']); $p_group = stripslashes(front::$_req['pt_group']); $p_info = stripslashes(front::$_req['pt_info']); $p_foto = $_FILES['pt_photo']; $error = 0; if (empty($p_name)) { $error = 1; $error_msgs[1] = 'Поле "Имя, фамилия" заполнено некорректно'; } if (empty($p_occupation)) { $error = 1; $error_msgs[2] = 'Поле "Должность" заполнено некорректно'; } if (!is_numeric($p_position)) { $error = 1; $error_msgs[3] = 'Поле "Порядок" заполнено некорректно'; } else { $p_position = (int) $p_position; if ($p_position <= 0) { $error = 1; $error_msgs[3] = 'Поле "Порядок" заполнено некорректно'; } } if (!empty($p_login)) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/users.php"; $u = new users(); if (!$u->GetUid($ee, $p_login)) { $error = 1; $error_msgs[4] = 'Поле "Логин" заполнено некорректно'; } } $p_name = change_q($p_name); $p_login = change_q($p_login); $p_occupation = change_q($p_occupation); $p_info = change_q($p_info); $p_name = addslashes($p_name); $p_occupation = addslashes($p_occupation); $p_info = addslashes($p_info); $p_foto = ''; if (!empty($_FILES['pt_photo']['tmp_name'])) { list($i_width, $i_height, $i_type) = @getimagesize($_FILES['pt_photo']['tmp_name']); if (in_array($i_type, array(IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG)) && $i_width == 150 && $i_height == 200) { $p_userpic = new CFile($_FILES['pt_photo']); if ($p_userpic->name) { $e = team::UpdateFoto($p_userpic); if ($e['error'] == '1') { $error = 1; $error_msgs[5] = 'Файл не удовлетворяет условиям загрузки'; $p_foto = $e['foto']; } else { $p_foto = $e['foto']; $error_msgs[5] = 'Файл не удовлетворяет условиям загрузки'; } } } else { $error = 1; $error_msgs[5] = 'Файл не удовлетворяет условиям загрузки'; } } if ($error) { if ($p_foto != '') { $p_userpic->Delete(0, 'team/' . $p_foto); } front::og("tpl")->error_msgs_apf = $error_msgs; front::og("tpl")->p_name = $p_name; front::og("tpl")->p_login = $p_login; front::og("tpl")->p_occupation = $p_occupation; front::og("tpl")->p_group = $p_group; front::og("tpl")->p_position = $p_position; front::og("tpl")->p_info = $p_info; front::og("tpl")->p_id = $p_id; front::og("tpl")->p_action = 'updatepeople'; } else { team::EditUser($p_id, $p_name, $p_login, $p_occupation, $p_foto, $p_group, $p_position, $p_info); header('Location: /about/team/'); exit; } break; case 'insertcategory': if (!get_uid(false)) { header("Location: /fbd.php"); exit; } if (!hasPermissions('about')) { header("Location: /about/team"); exit; } $name = stripslashes(front::$_req['acf_name']); $position = front::$_req['acf_number']; $error = 0; if (empty($name)) { $error = 1; $error_msgs[1] = 'Поле "Название" заполнено некорректно'; } if (!is_numeric($position)) { $error = 1; $error_msgs[2] = 'Поле "Порядок" заполнено некорректно'; } else { $position = (int) $position; if ($position <= 0) { $error = 1; $error_msgs[2] = 'Поле "Порядок" заполнено некорректно'; } } $name = change_q($name); if ($error) { front::og("tpl")->error_msgs_acf = $error_msgs; front::og("tpl")->acf_name = $name; front::og("tpl")->acf_position = $position; front::og("tpl")->acf_id = $id; } else { team::CreateGroup($name, $position); header('Location: /about/team/'); exit; } break; case 'deletecategory': if (hasPermissions('about')) { team::DeleteGroup(front::$_req['dcf_id']); } header('Location: /about/team/'); exit; break; case 'deleteteampeople': if (hasPermissions('about')) { team::DeleteUser(front::$_req['dtf_id']); } header('Location: /about/team/'); exit; break; } // Берем команду для вывода front::og("tpl")->groups = team::GetAllGroups(); foreach (front::og("tpl")->groups as $group) { $sql = "SELECT team_people.*, team_groups.id as groups_id,team_groups.title as groups_title, team_groups.position as groups_position FROM team_people LEFT JOIN team_groups ON team_groups.id = team_people.groupid WHERE team_people.groupid=?i ORDER BY team_groups.position, team_people.position, team_people.id ASC"; $team = $DB->rows($sql, $group['id']); front::og("tpl")->team_people[$group['id']] = array(); if ($team) { foreach ($team as $t) { array_push(front::og("tpl")->team_people[$group['id']], $t); } } } front::og("tpl")->text = static_pages::get("about_team"); front::og("tpl")->script = array('team.js'); front::og("tpl")->display("about/about_team.tpl"); }
<?php require_once "../classes/config.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/smail.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/users.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/firstpage.php"; $mail = new smail(); // 1 $f_user_admin = users::GetUid($err, "admin"); $user['uname'] = "вася"; $user['usurname'] = "Пупкин"; $user['login'] = "******"; $user['email'] = "*****@*****.**"; $prof['name'] = "nnnn"; $prof['id'] = 10; $prof['cost'] = 15; $days = 2; $mail->subject = "Недостаточно средств для автоматического продления на Free-lance.ru"; $mail->recipient = "{$user['uname']} {$user['usurname']} [{$user['login']}] <{$user['email']}>"; $html = ""; $prof_name = $prof['name']; if ($prof['id'] == 0) { $prof_name = "Все фрилансеры"; } $html .= "- <a href=\"{$GLOBALS['host']}/firstpage/?prof={$prof['id']}\">{$prof_name}</a> ({$prof['cost']} FM)<br/>"; $dev = 111; $date_dest = strtotime('+' . $days . ' days'); $date = date('d ' . monthtostr(date('m', $date_dest)) . ' Y года', $date_dest); $body = "До активации функции автопродления " . ending($days, "остался", "осталось", "осталось") . " " . number2string($days, 1) . " " . ending($days, "день", "дня", "дней") . ". Через {$days} " . ending($days, "день", "дня", "дней") . ", {$date}, должно быть автоматически продлено размещение в следующих разделах сайта Free-lance.ru:<br/>\n{$html}\nВсего с вашего счета должно быть списано {$val['sum_cost']} FM.<br/>\nСейчас на вашем Личном счету {$val['sum']} FM. Для срабатывания автоматического продления недостаточно средств.<br/><br/>\nНапоминаем вам, что автоматическое продление происходит в случае, когда на вашем личном счету достаточно средств для оплаты продления всех указанных разделов.<br/> \nПожалуйста, пополните счет или измените настройки автоматического продления.<br/>\n<br/>\nСчет можно пополнить на следующей странице: <a href=\"{$GLOBALS['host']}/bill/\">{$GLOBALS['host']}/bill/</a><br/>\nФункцию автопродления можно настроить или отключить здесь: <a href=\"{$GLOBALS['host']}/firstpage/\">{$GLOBALS['host']}/firstpage/</a>"; $mail->message = $mail->GetHtml($user['uname'], $body, 'simple'); echo $mail->message;
/** * Отсылка уведомления в личку об Утверждение/удаление записи * * @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); } }
<?php require_once '../classes/config.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/smail.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/firstpage.php'; $mail = new smail(); // 1 $f_user_admin = users::GetUid($err, 'admin'); $user['uname'] = 'вася'; $user['usurname'] = 'Пупкин'; $user['login'] = '******'; $user['email'] = '*****@*****.**'; $prof['name'] = 'nnnn'; $prof['id'] = 10; $prof['cost'] = 15; $days = 2; $mail->subject = 'Недостаточно средств для автоматического продления на Free-lance.ru'; $mail->recipient = "{$user['uname']} {$user['usurname']} [{$user['login']}] <{$user['email']}>"; $html = ''; $prof_name = $prof['name']; if ($prof['id'] == 0) { $prof_name = 'Все фрилансеры'; } $html .= "- <a href=\"{$GLOBALS['host']}/firstpage/?prof={$prof['id']}\">{$prof_name}</a> ({$prof['cost']} FM)<br/>"; $dev = 111; $date_dest = strtotime('+' . $days . ' days'); $date = date('d ' . monthtostr(date('m', $date_dest)) . ' Y года', $date_dest); $body = 'До активации функции автопродления ' . ending($days, 'остался', 'осталось', 'осталось') . ' ' . number2string($days, 1) . ' ' . ending($days, 'день', 'дня', 'дней') . ". Через {$days} " . ending($days, 'день', 'дня', 'дней') . ", {$date}, должно быть автоматически продлено размещение в следующих разделах сайта Free-lance.ru:<br/>\n{$html}\nВсего с вашего счета должно быть списано {$val['sum_cost']} FM.<br/>\nСейчас на вашем Личном счету {$val['sum']} FM. Для срабатывания автоматического продления недостаточно средств.<br/><br/>\nНапоминаем вам, что автоматическое продление происходит в случае, когда на вашем личном счету достаточно средств для оплаты продления всех указанных разделов.<br/> \nПожалуйста, пополните счет или измените настройки автоматического продления.<br/>\n<br/>\nСчет можно пополнить на следующей странице: <a href=\"{$GLOBALS['host']}/bill/\">{$GLOBALS['host']}/bill/</a><br/>\nФункцию автопродления можно настроить или отключить здесь: <a href=\"{$GLOBALS['host']}/firstpage/\">{$GLOBALS['host']}/firstpage/</a>"; $mail->message = $mail->GetHtml($user['uname'], $body, 'simple'); echo $mail->message;