/** * Обновить заметку * * @param integer $user_id ИД пользователя * @param string $target_login Кому заметка * @param string $text текст заметки * @return string Сообщение об ошибке */ function Update($user_id, $target_login, $text, $rating = 0, $old = "?i") { $DB = new DB(); if (empty($user_id) || empty($target_login) || empty($text)) { return 'Ошибка обновления заметки'; } $res = $DB->val("SELECT notes_update(?i, {$old}, ?, ?i)", $user_id, $target_login, $text, (int) $rating); return ''; }
/** * Переименовать папку * * @return string пустая строка - успех, или сообщение об ошибке */ public function Rename() { $DB = new DB(); if (!($r = $DB->row("SELECT * FROM messages_folders(?i) WHERE id = ?", $this->from_id, $this->id))) { return 'Указанной папки не существует'; } if ($DB->val("SELECT COUNT(*) FROM messages_folders(?i) WHERE fname = ? AND id <> ?", $this->from_id, $this->fname, $this->id)) { return 'Папка с таким именем уже существует'; } $DB->query("SELECT messages_folders_rename(?, ?, ?)", $this->id, $this->from_id, $this->fname); return ''; }
/** * Делает рассылку по sql запросу. * В SELECT части sql запроса обязательно должно быть поле uid. * * @param string $sql SQL запрос возвращающий список респондетов * @param string $message сообщение * @param string $mailFunc функция отправки сообщений на почту (из класса pmail) * @param integer $recOnStep количество пользователей попадающих в одну очередь * * @return integer id сообщения из таблицы messages */ protected function _masssendSql($sql, $message, $mailFunc, $recOnStep = self::MASSSEND_BIND_QUEUE_SIZE) { $msgid = $this->_dbProxy->val('SELECT masssend(?, ?, ?a, ?)', $this->_sender->uid, $message, array(), $mailFunc); $res = $this->_dbMaster->query($sql); $i = 0; $uids = array(); while ($row = pg_fetch_assoc($res)) { $uids[] = $row['uid']; if (++$i % $recOnStep == 0) { $this->_dbProxy->query('SELECT masssend_bind(?, ?, ?a)', $msgid, $this->_sender->uid, $uids); $uids = array(); $i = 0; } } if ($i) { $this->_dbProxy->query('SELECT masssend_bind(?, ?, ?a)', $msgid, $this->_sender->uid, $uids); $uids = array(); } $this->_dbProxy->query('SELECT masssend_commit(?, ?)', $msgid, $this->_sender->uid); return $msgid; }
/** * Через какой промежуток времени можно будет отослать следующее сообщение. * * @param type $date Дата * @param type $msisdn Телефон абонента * * @return type */ public function nextTimeSend($date = false) { if (!$date) { $sql = 'SELECT date_send FROM sms_gate WHERE msisdn = ? ORDER by date_send DESC LIMIT 1'; $date = $this->_db->val($sql, $this->getCell()); if (!$date) { return false; } } $this->next_time_send = strtotime($date . ' + ' . self::TIMEOUT_SEND); return $this->next_time_send; }
function _HCM_linkart($id = null, $text = null, $nove_okno = false) { if (null === $text) { $query = DB::query_row('SELECT art.title,art.title_seo,cat.title_seo AS cat_title_seo FROM `' . _mysql_prefix . '-articles` AS art JOIN `' . _mysql_prefix . '-root` AS cat ON(cat.id=art.home1) WHERE art.' . (is_numeric($id) ? 'id' : 'title_seo') . '=' . DB::val($id)); if (false === $query) { return '{' . _htmlStr($id) . '}'; } $text = $query['title']; } else { $query = array('title_seo' => null, 'cat_title_seo' => null); } return "<a href='" . _linkArticle($id, $query['title_seo'], $query['cat_title_seo']) . "'" . ($nove_okno ? ' target="_blank"' : '') . ">" . $text . "</a>"; }
/** * Добавляет/удаляет пользователя в личную папку * * @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; }
function Masssending_test($user_id, $masssending_id, $text, $posted_time, $skip_mail = false) { $master = new DB('master'); $plproxy = new DB('plproxy'); $error = ''; $files = $master->col("SELECT file.id FROM mass_sending_files m INNER JOIN file ON m.fid = file.id WHERE mass_sending_id = ? ORDER BY m.pos", $masssending_id); $ignors = $plproxy->col("SELECT user_id FROM ignor_me(?)", $user_id); array_push($ignors, $user_id); //print_r($ignors);exit; $sql = $master->parse("\n SELECT \n m.uid \n FROM \n mass_sending_users m \n INNER JOIN \n users u ON m.uid = u.uid AND u.is_banned = B'0' \n WHERE \n mid = ?i AND m.uid NOT IN (?l)\n ", $masssending_id, $ignors); /*$msgid = $plproxy->val("SELECT masssend(?, ?, ?a, ?)", $user_id, $text, $files, ($skip_mail? '': 'SpamFromMasssending')); if ( $msgid ) { $plproxy->query("SELECT masssend_sql(?, ?, ?)", $msgid, $user_id, $sql); }*/ $msgid = $plproxy->val('SELECT masssend(?, ?, ?a, ?, ?, ?, ?)', $user_id, $text, $files, $masssending_id, $posted_time, $skip_mail ? '' : 'SpamFromMasssending', $sql); //print_r($msgid);exit; // TODO: отдельным тикетом //$master->query("DELETE FROM mass_sending_users WHERE mid = ?", $masssending_id); return empty($plproxy->error); }
public function getTopQueiesAdmin($type, $limit = 40, $offset, &$count) { $where = ''; $limit = " LIMIT {$limit} OFFSET {$offset} "; $types = array('users', 'projects'); $index_type = 2; if (in_array($type, array('users', 'projects'))) { $index_type = intval(array_search($type, $types)); $where = "WHERE index_type = {$index_type}"; } elseif ($type == 'more') { $where = 'WHERE index_type = 2'; } $sql = "SELECT s.query, rate as weight, match_cnt as match_cnt, cnt as cnt \n FROM search_kwords_top s\n {$where}\n ORDER BY weight DESC {$limit}"; $res = $this->_db->rows($sql); if (!$res) { $res = array(); } $sql = "SELECT COUNT(*) FROM search_kwords_top {$where}"; $count = $this->_db->val($sql); return $res; }
function _HCM_linkroot($id = null, $text = null, $nove_okno = false) { $is_id = is_numeric($id); if ($is_id) { $id = intval($id); } else { $id = DB::val($id); } $query = DB::query("SELECT title,title_seo FROM `" . _mysql_prefix . "-root` WHERE " . ($is_id ? 'id' : 'title_seo') . "=" . $id); if (isset($nove_okno) and _boolean($nove_okno)) { $target = " target='_blank'"; } else { $target = ""; } if (DB::size($query) != 0) { $query = DB::row($query); if (isset($text) and $text != "") { $query['title'] = $text; } return "<a href='" . _linkRoot($id, $query['title_seo']) . "'" . $target . ">" . $query['title'] . "</a>"; } }
} if ($usernamechange == true) { $extra['username'] = $username; } if ($passwordchange == true) { $extra['password'] = $newpassword[0]; $extra['salt'] = $newpassword[1]; $_SESSION[_sessionprefix . "password"] = $newpassword[0]; } // extend _extend('call', 'mod.settings.save', array('query' => &$extra, 'current_query' => $query)); // zpracovani extra polozek $sql_extra = ''; if (!empty($extra)) { foreach ($extra as $col => $val) { $sql_extra .= ',`' . $col . '`=' . DB::val($val); } } // hlavni dotaz DB::query("UPDATE `" . _mysql_prefix . "-users` SET email='" . $email . "',avatar=" . (isset($avatar) ? '\'' . $avatar . '\'' : 'NULL') . ",web='" . $web . "',skype='" . $skype . "',msn='" . $msn . "',jabber='" . $jabber . "',icq=" . $icq . ",massemail=" . $massemail . ",note='" . $note . "',publicname='" . $publicname . "'" . $sql_extra . " WHERE id=" . _loginid); _extend('call', 'user.edit', array('id' => _loginid, 'username' => $username)); define('_redirect_to', _url . '/index.php?m=settings&saved'); return; } else { $message = _formMessage(2, _eventList($errors, 'errors')); } } /* --- modul --- */ if (isset($_GET['saved'])) { $message = _formMessage(1, $_lang['global.saved']); }
/** * Проверка польователя на нахождениии в игнор-листе. * В случае нахождения удаляет пользователя из списка, иначе добавляет. * * @param integer $login логин пошльзователя, которого проверяем * * @return string пустая строка или сообщение об ошибке в случае неуспеха */ public function Change($login) { $DB = new DB(); $r = $DB->val('SELECT ignor_check(?, ?)', $this->user_id, $login); if ($r) { $this->target_id = $login; $this->Del(); } else { $this->Add($this->user_id, $login); } return $r; }
/** * Обновление статуса рассылки * * @global type $DB * @param booleab $force - Силой обновить статусы */ public function updateStatusSending($force = false) { global $DB; $PLDB = new DB('plproxy'); $sql = "SELECT * FROM mailer_messages WHERE status_sending = 2;"; $mailer = $DB->rows($sql); foreach ($mailer as $message) { if ($message['spamid'] > 0) { $sql = "SELECT varvalue FROM mail.vars WHERE varname = 'mailid:2'"; $varvalue = $PLDB->val($sql); // $sql = "SELECT COUNT(*) FROM mail.recipients_{$message['spamid']} WHERE mailid > {$varvalue}"; $spam_send = $PLDB->val($sql) == 0 ? 1 : 0; } if ($message['msgid'] > 0) { $sql = "SELECT 1 FROM messages_zeros_userdata({$message['user_id']}, {$message['msgid']}) LIMIT 1;"; $msg_send = $PLDB->val($sql); } if ($message['spamid'] > 0 && $message['msgid'] > 0 && $spam_send == 1 && $msg_send == 1) { $this->update(array("status_sending" => $message['type_regular'] <= 1 ? 1 : 0, "status_message" => 1), $message['id']); } else { if ($message['spamid'] > 0 && $spam_send == 1) { $this->update(array("status_sending" => $message['type_regular'] <= 1 ? 1 : 0, "status_message" => 1), $message['id']); } else { if ($message['msgid'] > 0 && $msg_send == 1) { $this->update(array("status_sending" => $message['type_regular'] <= 1 ? 1 : 0, "status_message" => 1), $message['id']); } elseif ($force) { $this->update(array("status_sending" => $message['type_regular'] <= 1 ? 1 : 0, "status_message" => 1), $message['id']); } } } } }
/** * Проверка возможности отправить сообщение ползователю. * * @global type $DB * @staticvar null $exists_allowed * * @param type $to_id * @param type $from_id * * @return bool */ public static function isAllowed($to_id, $from_id = null) { $is_auth = isset($_SESSION['uid']) && $_SESSION['uid'] > 0; if (!$from_id && !$is_auth) { return false; } if (!$from_id) { $from_id = $_SESSION['uid']; } if ($is_auth && (currentUserHasPermissions('users') || is_emp())) { return true; } $is_allowed = self::_isAllowed($to_id, $from_id); if (!$is_allowed) { //Была ли уже проверка доступности //тогда пользователю запрещено писать $key_check_is_allowed = sprintf(self::KEY_CHECK_IS_ALLOWED, $from_id, $to_id); $mem = new memBuff(); if ($mem->get($key_check_is_allowed)) { return false; } //Иначе делаем проверку //Которые уже хотя бы раз общались с заказчиком через личку, //например если заказчик инициировал общение или они ранее общались $proxy_db = new DB(); $is_allowed = $proxy_db->val('SELECT messages_dialog_count(?i, ?i)', $to_id, $from_id) > 0; //Которых заказчик выбрал исполнителем в любом своем проекте if (!$is_allowed) { require_once ABS_PATH . '/classes/projects.php'; $is_allowed = (bool) projects::isExec($from_id, $to_id); } //В список условий я бы еще добавил проведение заказа на сайте - если есть завершенный заказ //(с резервом или без, по ТУ, проекту или прямой) с данным заказчиком, то тоже разрешать //исполнителю писать ему в личку, так как в заказе светится логин заказчика и они уже сотрудничали. if (!$is_allowed) { require_once ABS_PATH . '/tu/models/TServiceOrderModel.php'; $is_allowed = (bool) TServiceOrderModel::hasSuccessfulOrder($from_id, $to_id); } //Если фрилансер был выбран на любое призовое место в конкурсе то //он может писать сообщения заказчику. if (!$is_allowed) { require_once ABS_PATH . '/classes/contest.php'; $is_allowed = (bool) contest::isPrizePlace($from_id, $to_id); } if ($is_allowed) { self::setIsAllowed($to_id, $from_id, true); } $mem->set($key_check_is_allowed, 1, 0, self::KEY_CHECK_TAG_IS_ALLOWED); } return $is_allowed; }
$pMessage = "\nЗдравствуйте!\n\nУ каждого пользователя на нашем сайте есть рейтинг, у кого-то он больше, у кого-то меньше. А зачем же он нужен? Мы ответим: чем выше ваш рейтинг, тем больше шансов найти интересный проект!\n\nРаботодатели, подыскивая исполнителей на свои проекты, ориентируются на рейтинг фрилансера и практически всегда выбирают пользователей с большим рейтингом – ведь это говорит об опыте и профессионализме кандидата. \n\nРейтинг фрилансера складывается из различных параметров. К примеру, показатели будут больше, если вы будете чаще заходить на сайт, заполните http:/{свой профайл}/{$pHost}/users/%USER_LOGIN%/?utm_source=newsletter4&utm_medium=rassilka&utm_campaign=rating<span>,</span> добавите работы в портфолио. Рекомендуем обмениваться с заказчиками рекомендациям и по результатам сотрудничества – чем больше у вас положительных рекомендаций, тем выше рейтинг. Немаловажными факторами являются и наличие у вас аккаунта http:/{PRO}/{$pHost}/payed/?utm_source=newsleter4&utm_medium=rassilka&utm_campaign=ratingPRO<span>,</span> отклики на проекты, участие в жизни нашего портала – появление ваших работ в разделах http:/{«Статьи»}/{$pHost}/articles/?utm_source=newsleter4&utm_medium=rassilka&utm_campaign=rating<span>,</span> победа в конкурсах от работодателей и многое другое. Кроме того, вы можете покупать баллы рейтинга. Узнать обо всем более подробно можно http:/{здесь}/{$pHost}/help/?q=812&utm_source=newsletter4&utm_medium=rassilka&utm_campaign=rating<span>.</span> \n\nhttp:/{Поднять себе рейтинг!}/{$pHost}/users/%USER_LOGIN%/?utm_source=newsletter4&utm_medium=rassilka&utm_campaign=rating\n\nПо всем возникающим вопросам вы можете обращаться в нашу http:/{службу поддержки}/{$pHost}/help/?all&utm_source=newsletter4&utm_medium=rassilka&utm_campaign=rating<span>.</span>\nВы можете отключить уведомления на http:/{странице «Уведомления/Рассылка»}/{$pHost}/users/%USER_LOGIN%/setup/mailer/?utm_source=newsletter4&utm_medium=rassilka&utm_campaign=rating вашего аккаунта.\n\nПриятной работы,\nКоманда Free-lance.ru"; $eSubject = "Как мериться рейтингом на Free-lance.ru"; $eMessage = "<p>Здравствуйте!</p>\n\n<p>\nУ каждого пользователя на нашем сайте есть рейтинг, у кого-то он больше, у кого-то меньше. А зачем же он нужен? Мы ответим: чем выше ваш рейтинг, тем больше шансов найти интересный проект!\n</p>\n\n<p>\nРаботодатели, подыскивая исполнителей на свои проекты, ориентируются на рейтинг фрилансера и практически всегда выбирают пользователей с большим рейтингом – ведь это говорит об опыте и профессионализме кандидата. \n</p>\n\n<p>\nРейтинг фрилансера складывается из различных параметров. К примеру, показатели будут больше, если вы будете чаще заходить на сайт, заполните <a href='{$GLOBALS['host']}/users/%USER_LOGIN%/?utm_source=newsletter4&utm_medium=rassilka&utm_campaign=rating'>свой профайл</a>, добавите работы в портфолио. Рекомендуем обмениваться с заказчиками рекомендациям и по результатам сотрудничества – чем больше у вас положительных рекомендаций, тем выше рейтинг. \nНемаловажными факторами являются и наличие у вас аккаунта <a href='{$GLOBALS['host']}/payed/?utm_source=newsleter4&utm_medium=rassilka&utm_campaign=rating'>PRO</a>, отклики на проекты, участие в жизни нашего портала – появление ваших работ в разделах <a href='{$GLOBALS['host']}/articles/?utm_source=newsleter4&utm_medium=rassilka&utm_campaign=rating'>«Статьи»</a>, победа в конкурсах от работодателей и многое другое. Кроме того, вы можете покупать баллы рейтинга. Узнать обо всем более подробно можно <a href='{$GLOBALS['host']}/help/?q=812&utm_source=newsletter4&utm_medium=rassilka&utm_campaign=rating'>здесь</a>. \n</p>\n\n<p><a href='{$GLOBALS['host']}/users/%USER_LOGIN%/?utm_source=newsletter4&utm_medium=rassilka&utm_campaign=rating'>Перейти на сайт</a> и поднять себе рейтинг!</p>\n\n<p>\nПо всем возникающим вопросам вы можете обращаться в нашу <a href='{$GLOBALS['host']}/help/?all&utm_source=newsletter4&utm_medium=rassilka&utm_campaign=rating'>службу поддержки</a>.<br/>\nВы можете отключить уведомления на <a href='{$GLOBALS['host']}/users/%USER_LOGIN%/setup/mailer/?utm_source=newsletter4&utm_medium=rassilka&utm_campaign=rating'>странице «Уведомления/Рассылка»</a> вашего аккаунта.\n</p>\n\n<p>\nПриятной работы,<br/>\nКоманда <a href='{$GLOBALS['host']}/?utm_source=newsletter4&utm_medium=rassilka&utm_campaign=rating'>Free-lance.ru</a>\n</p>"; // ---------------------------------------------------------------------------------------------------------------- // -- Рассылка ---------------------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------------------------------- $DB = new DB('plproxy'); $master = new DB('master'); $cnt = 0; $sender = $master->row("SELECT * FROM users WHERE login = ?", $sender); if (empty($sender)) { die("Unknown Sender\n"); } echo "Send personal messages\n"; // подготавливаем рассылку $msgid = $DB->val("SELECT masssend(?, ?, '{}', '')", $sender['uid'], $pMessage); if (!$msgid) { die('Failed!'); } // допустим, мы получаем адресатов с какого-то запроса $i = 0; while ($users = $master->col("{$sql} LIMIT 30000 OFFSET ?", $i)) { $DB->query("SELECT masssend_bind(?, {$sender['uid']}, ?a)", $msgid, $users); $i = $i + 30000; } $DB->query("SELECT masssend_commit(?, ?)", $msgid, $sender['uid']); echo "Send email messages\n"; $mail = new smtp(); $mail->subject = $eSubject; // заголовок письма $mail->message = $eMessage;
// ---------------------------------------------------------------------------------------------------------------- // -- Рассылка ---------------------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------------------------------- $master = new DB('master'); $plproxy = new DB('plproxy'); $count = NULL; $sender = $master->row("SELECT * FROM users WHERE login = ?", $sender); if (empty($sender)) { die("Unknown Sender\n"); } echo "Send personal messages\n"; if ($mass) { $count = 0; switch ($recipients) { case 'all': $message_id = $plproxy->val("SELECT messages_masssend_all(?, ?, ?, ?a)", $sender['uid'], $pro, $pMessage, $pFiles); break; case 'freelancers': $message_id = $plproxy->val("SELECT messages_masssend_freelancers(?, ?, ?, ?a)", $sender['uid'], $pro, $pMessage, $pFiles); break; case 'employers': $message_id = $plproxy->val("SELECT messages_masssend_employers(?, ?, ?, ?a)", $sender['uid'], $pro, $pMessage, $pFiles); break; case '': $users = $master->col($sql); if (empty($users)) { die("No users\n"); } $count = count($users); $message_id = $plproxy->val("SELECT messages_masssend(?, ?a, ?, ?a)", $sender['uid'], $users, $pMessage, $pFiles); unset($users);
/** * Sestavit a provest dotaz na cestu * @param array $columns * @param int $nodeId * @param int|null $nodeLevel * @return array */ public function loadPath(array $columns, $nodeId, $nodeLevel = null) { // zjistit uroven uzlu if (null === $nodeLevel) { $nodeLevel = DB::query_row('SELECT ' . $this->levelColumn . ' FROM `' . $this->table . '` WHERE ' . $this->idColumn . '=' . DB::val($nodeId)); if (false === $nodeLevel) { throw new RuntimeException(sprintf('Neexistujici uzel "%s"', $nodeId)); } $nodeLevel = $nodeLevel[$this->levelColumn]; } // pripravit sloupce $columns = array_merge(array($this->idColumn, $this->parentColumn, $this->levelColumn, $this->depthColumn), $columns); $columnCount = sizeof($columns); // sestavit dotaz $sql = 'SELECT '; for ($i = 0; $i <= $nodeLevel; ++$i) { for ($j = 0; $j < $columnCount; ++$j) { if (0 !== $i || 0 !== $j) { $sql .= ','; } $sql .= 'n' . $i . '.' . $columns[$j]; } } $sql .= ' FROM `' . $this->table . '` n0'; for ($i = 1; $i <= $nodeLevel; ++$i) { $sql .= sprintf(_nl . ' JOIN `%s` n%s ON(n%2$s.%s=n%s.%s)', $this->table, $i, $this->idColumn, $i - 1, $this->parentColumn); } $sql .= ' WHERE n0.' . $this->idColumn . '=' . DB::val($nodeId); // nacist uzly $nodes = array(); $nodeIndex = 0; $query = DB::query($sql); $row = DB::rown($query); for ($i = $nodeLevel * $columnCount; isset($row[$i]); $i -= $columnCount) { for ($j = 0; $j < $columnCount; ++$j) { $nodes[$nodeIndex][$columns[$j]] = $row[$i + $j]; } ++$nodeIndex; } DB::free($query); return $nodes; }
/** * Получение ко-ва авторизация пользователя. * * @param integer $uid ID пользователя * * @return integer Кол-во авторизаций */ public function getLoginsCnt($uid) { global $DB; $sql = 'SELECT cnt FROM users_login_cnt WHERE user_id = ?i'; $n = intval($DB->val($sql, $uid)); if ($n < 11) { $STAT = new DB('stat'); $m = intval($STAT->val('SELECT COUNT(user_id) FROM users_visits_daily WHERE user_id = ?i', $uid)); } if ($m > $n) { $n = $m; } return $n; }
function _auth_remove_user($params) { $username = $params['user']; $user = Auth::user(); $channel = $params['channel']; $auth = new DB('mysql:host=localhost;dbname=auth', 'root', '', 'auth'); if (!$auth) { return $this->_cant_connect(); } if ($auth->val("SELECT count(*) FROM user_info WHERE user_name = :username", array('username' => $username)) > 0) { $auth->query("DELETE FROM user_info where user_name = :username;", array('username' => $username)); $auth->query("DELETE FROM user_group where user_name = :username;", array('username' => $username)); Status::create()->data(Utils::cmdout($params) . 'Removed user "' . $username . '" from http_auth.')->user_id($user->id)->channel($channel)->cssclass('httpauth')->insert(); } else { Status::create()->data(Utils::cmdout($params) . 'User "' . $username . '" doesn\'t exist in http_auth.')->user_id($user->id)->channel($channel)->cssclass('httpauth')->insert(); } return true; }
</td> </tr> <tr> <td>- Перевели денег:</td> <td><?php echo zin($transf[$i]['cnt']); ?> </td> </tr> <tr><td colspan=2><strong>Живых</strong></td></tr> <tr> <td>- Фрилансеры:</td> <td> <?php $sql = "SELECT SUM(l_frl) as cnt FROM stat_data WHERE date >=? AND date<=?"; $s_f_live['cnt'] = $DB->val($sql, $fdate, $tdate); ?> <?php echo (int) $s_f_live['cnt']; ?> </td> </tr> <tr> <td>- Работадатели:</td> <td> <?php $sql = "SELECT SUM(l_emp) as cnt FROM stat_data WHERE date >=? AND date<=?"; $s_e_live['cnt'] = $DB->val($sql, $fdate, $tdate); ?> <?php echo (int) $s_e_live['cnt'];
/** * [ADMIN] Backup API - obnovit zalohu (castecnou nebo jen databaze) * @param string $path cesta k souboru * @return array|bool true pri uspechu, jinak array(err_msg, fatal 1/0) */ function _backupRestore($path) { // priprava global $_lang; $fatal = false; $path = realpath($path); // proces obnovy do { /* ----- nacteni a kontroly ----- */ // kontrola souboru if (($err = _backupCheckFile($path, array(_backup_db, _backup_partial))) !== true) { break; } // nacteni souboru $kzip = new KZip($path); if (!empty($kzip->error)) { $err = str_replace('*errstr*', _htmlStr($kzip->error), $_lang['admin.other.backup.restore.upload.err.load']); break; } $type = $kzip->vars['type']; // uprava merge pole if (isset($kzip->vars['merge'])) { $kzip->vars['merge'] = array_flip($kzip->vars['merge']); } // kontrola prava pro zapis if ($type === _backup_partial) { $a_files = '/files/'; $dirs = $kzip->listFiles($a_files, true); $dirs = $dirs[0]; for ($i = 0; isset($dirs[$i]); ++$i) { if (($err = _emptyDir(realpath(dirname($_SERVER['SCRIPT_FILENAME']) . '/' . _indexroot . $dirs[$i]) . '/')) !== true) { $err = str_replace('*path*', _htmlStr($err), $_lang['admin.other.backup.restore.err.access']); break 2; } } } /* ----- provedeni ----- */ // chyby na teto urovni jsou j*z fatalni $fatal = true; // databaze $dbdump = new DBDump(); // tabulky $tbl_import = $dbdump->importTables($kzip->getFile('/database/struct')); if (!$tbl_import[0]) { $err = $tbl_import[1] . ': <code>' . _htmlStr($tbl_import[2]) . '</code>'; break; } // data $dbstream = $kzip->getFileStream('/database/data'); $data_import = $dbdump->importData($dbstream); $dbstream->free(); if (!$data_import[0]) { $err = $data_import[1]; break; } // aktualizovat hlavni URL, vynutit kontrolu instalace if (($url = _getBaseUrl()) !== false) { DB::query('UPDATE `' . _mysql_prefix . '-settings` SET `val`=' . DB::val(rtrim($url, '/')) . ' WHERE `var`=\'url\''); } DB::query('UPDATE `' . _mysql_prefix . '-settings` SET `val`=\'1\' WHERE `var`=\'installcheck\''); // deaktivovat modrewrite, pokud neexistuje .htaccess if (!file_exists(_indexroot . '.htaccess')) { DB::query('UPDATE `' . _mysql_prefix . '-settings` SET `val`=\'0\' WHERE `var`=\'modrewrite\''); } // soubory if ($type === _backup_partial) { for ($i = 0; isset($dirs[$i]); ++$i) { echo "\n\n"; $dirpath = realpath(dirname($_SERVER['SCRIPT_FILENAME']) . '/' . _indexroot . $dirs[$i]) . '/'; if (!isset($kzip->vars['merge'], $kzip->vars['merge'][$dirs[$i]])) { _emptyDir($dirpath, false); } $kzip->extractFiles($dirpath, $a_files . $dirs[$i] . '/', false, true, array($kzip->vars['void'])); } } // hotovo $kzip->free(); return true; } while (false); // chyba if (isset($kzip)) { $kzip->free(); } return array($err, $fatal); }
/** * Format SQL query parameter (callback) * @param array $match * @return string */ public function formatSqlParam(array $match) { if (isset($match['lit']) && '' !== $match['lit']) { if (isset($this->formatSqlParams[$match['lit']])) { $param = $this->formatSqlParams[$match['lit']]; if (is_array($param)) { return implode(',', $param); } return $param; } else { throw new RuntimeException("Parameter '{$match['lit']}' is undefined"); } } else { if (isset($this->formatSqlParams[$match['val']]) || array_key_exists($match['val'], $this->formatSqlParams)) { return DB::val($this->formatSqlParams[$match['val']], true); } else { throw new RuntimeException("Parameter '{$match['val']}' is undefined"); } } }
<?php ini_set('max_execution_time', '0'); ini_set('memory_limit', '512M'); require_once '../classes/stdf.php'; require_once '../classes/memBuff.php'; require_once '../classes/smtp.php'; if (defined('HTTP_PREFIX')) { $pHttp = str_replace('://', '', HTTP_PREFIX); // Введено с учетом того планируется включение HTTPS на серверах (для писем в ЛС) } else { $pHttp = 'http'; } $pHost = str_replace("{$pHttp}://", '', $GLOBALS['host']); $eHost = $GLOBALS['host']; $pMessage = "\nЗдравствуйте!\n\nМы представляем вам очередные изменения и надеемся, что все они – только к лучшему. \n\nКак мы сообщали ранее, отменена платная разблокировка аккаунтов и покупка рейтинга, убраны всплывающие рекламные предложения аккаунта PRO и «Сделки Без Риска». \n\nТеперь у вас есть возможность отписаться от уведомлений, которые приходят на вашу электронную почту. Для этого достаточно перейти по ссылке из нашего письма и ввести проверочный код – отправка сообщений от Free-lance.ru будет автоматически отключена.\n\nС 14 по 21 февраля мы проводим акцию {$pHttp}:/{«Тестовый PRO за 1 FM»}/{$pHost}/promo/testpro/?utm_source=newsletter4&utm_medium=email&utm_campaign=ottepel<i>.</i> Фрилансеры, которые никогда не покупали PRO, смогут воспользоваться нашим специальным предложением и познакомиться с преимуществами профессионального аккаунта.\n\n{$pHttp}:/{Напоминаем}/{$pHost}/blogs/free-lanceru/725656/identifikatsiya-veb-koshelka-cherez-sistemu-contact.html?utm_source=newsletter4&utm_medium=email&utm_campaign=ottepel, что для резидентов РФ с сегодняшнего дня возможна идентификация в Веб-кошельке через систему Contact.\n\nБолее подробную информацию о нововведениях на сайте и планах команды на ближайшее будущее можно узнать в {$pHttp}:/{«Блогах»}/{$pHost}/blogs/free-lanceru/726198/ottepel-prodoljaetsya.html?utm_source=newsletter4&utm_medium=email&utm_campaign=ottepel<i>.</i>\n\nПриятной работы с {$pHttp}:/{Free-lance.ru}/{$pHost}/!\n"; $DB = new DB('plproxy'); $M = new DB('master'); // подготавливаем рассылку $msgid = $DB->val("SELECT masssend(103, '{$pMessage}', '{}', '')"); $i = 0; // Только всем незабаненным (is_banned = B'0') //$testloginlist = " AND login IN ('land_f', 'bolvan1', 'vg_rabot1') "; $testloginlist = ''; $sql = "SELECT uid FROM users WHERE substring(subscr from 8 for 1)::integer = 1 AND is_banned = B'0' {$testloginlist} LIMIT 3000 OFFSET ?"; while ($users = $M->col($sql, $i)) { $DB->query('SELECT masssend_bind(?, 103, ?a)', $msgid, $users); $i = $i + 3000; } $DB->query('SELECT masssend_commit(?, 103)', $msgid); echo 'OK';
?> <?php if ($s_project_only_verify['cnt'] == 0) { echo '0'; } else { echo round($s_project_offers_only_verify['cnt'] / $s_project_only_verify['cnt'], 2); } ?> </td> </tr> <tr> <td width=200><strong>Количество переносов в вакансии:</strong></td> <td> <?php $sql = "SELECT count(1) FROM projects p\n WHERE moved_vacancy::character != '' AND p.moved_vacancy >= ? AND p.moved_vacancy - '1 day'::interval < ?"; $s_project_moved_vacancy = $DB->val($sql, $fdate, $tdate); ?> <?php echo $s_project_moved_vacancy; ?> </td> </tr> <tr> <td width=200>Из них оплачено:</td> <td> <?php $sql = "SELECT count(1) as cnt FROM projects p\n WHERE p.moved_vacancy_pro IS NULL AND p.moved_vacancy::character != '' AND p.state = 0 AND p.moved_vacancy >= ? AND p.moved_vacancy - '1 day'::interval < ?"; $s_project_moved_vacancy_payed = $DB->val($sql, $fdate, $tdate); ?> <?php echo $s_project_moved_vacancy_payed;
public function SendMess($session, $message, $type, $id) { $DB = new DB('master'); if ($sess_ar = Session($session, $error)) { $message = strip_tags(mb_convert_encoding($message, 'windows-1251', 'UTF-8')); $message = preg_replace("|\n|Uis", '<br>', $message); switch ($type) { // ответ на личное сообщение case 1: // get id $sql = 'SELECT from_id from messages WHERE id=?'; $to_id = $DB->val($sql, intval($id)); if ($to_id) { // ignor $sql = 'SELECT target_id from ignor WHERE (user_id=? AND target_id=? )'; $res = $DB->query($sql, $sess_ar['uid'], $to_id); if (@pg_num_rows($res) > 0 || $to_id == 103) { return mb_convert_encoding('Пользователь запретил отправлять ему сообщения', 'UTF-8', 'windows-1251'); } else { $user_id = $sess_ar['uid']; $tar_id = $to_id; $text = $message; $error .= $DB->error; $sql = "UPDATE messages SET from_visible=true WHERE (from_id='{$user_id}' AND to_id = '{$tar_id}');\n\t\t\t\t\t UPDATE messages SET to_visible=true WHERE (to_id='{$user_id}' AND from_id = '{$tar_id}');\n\t\t\t INSERT INTO messages (from_id, to_id, msg_text, attach) VALUES ('{$user_id}', '{$tar_id}', '{$text}', '')"; $res = $DB->query($sql); $error .= $DB->error; } } else { return mb_convert_encoding('Ошибка', 'UTF-8', 'windows-1251'); } break; // ответ на проект в блоги // ответ на проект в блоги case 2: $sql = 'SELECT blogs_msgs.id,blogs_themes.thread_id from blogs_themes LEFT JOIN blogs_msgs ON blogs_msgs.thread_id=blogs_themes.thread_id AND blogs_msgs.reply_to is NULL WHERE id_gr=?'; $res = $DB->query($sql, intval($id)); list($id, $thread_id) = @pg_fetch_row($res); $ip = $_SERVER['REMOTE_ADDR']; $fid = $sess_ar['uid']; $msg = $message; if ($thread_id) { $sql = "INSERT INTO blogs_msgs (fromuser_id, reply_to, from_ip, post_time, thread_id, msgtext, title, attach, small) VALUES ('{$fid}', '{$id}', '{$ip}', NOW(), '{$thread_id}', '{$msg}', '', NULL, 0);"; $res = $DB->query($sql); } else { return mb_convert_encoding('Ошибка', 'UTF-8', 'windows-1251'); } break; // ответ на проект в личку // ответ на проект в личку case 3: $sql = 'SELECT user_id from projects WHERE id=?'; $to_id = $DB->val($sql, intval($id)); if ($to_id) { // ignor $sql = 'SELECT target_id from ignor WHERE (user_id=? AND target_id=? )'; $res = $DB->query($sql, $sess_ar['uid'], $to_id); if (@pg_num_rows($res) > 0 || $to_id == 103) { return mb_convert_encoding('Пользователь запретил отправлять ему сообщения', 'UTF-8', 'windows-1251'); } else { $user_id = $sess_ar['uid']; $tar_id = $to_id; $text = $message; $error .= $DB->error; $sql = "UPDATE messages SET from_visible=true WHERE (from_id='{$user_id}' AND to_id = '{$tar_id}');\n\t\t\t\t\t UPDATE messages SET to_visible=true WHERE (to_id='{$user_id}' AND from_id = '{$tar_id}');\n\t\t\t INSERT INTO messages (from_id, to_id, msg_text, attach) VALUES ('{$user_id}', '{$tar_id}', '{$text}', '')"; $res = $DB->query($sql); $error .= $DB->error; } } else { return mb_convert_encoding('Ошибка', 'UTF-8', 'windows-1251'); } break; // ответ в блоги // ответ в блоги case 4: $sql = 'SELECT user_id from projects WHERE id=?'; $to_id = $DB->val($sql, intval($id)); if ($to_id) { // ignor $sql = 'SELECT target_id from ignor WHERE (user_id=? AND target_id=? )'; $res = $DB->query($sql, $sess_ar['uid'], $to_id); if (@pg_num_rows($res) > 0 || $to_id == 103) { return mb_convert_encoding('Пользователь запретил отправлять ему сообщения', 'UTF-8', 'windows-1251'); } else { $user_id = $sess_ar['uid']; $tar_id = $to_id; $text = $message; $error .= $DB->error; $sql = "UPDATE messages SET from_visible=true WHERE (from_id='{$user_id}' AND to_id = '{$tar_id}');\n\t\t\t\t\t UPDATE messages SET to_visible=true WHERE (to_id='{$user_id}' AND from_id = '{$tar_id}');\n\t\t\t INSERT INTO messages (from_id, to_id, msg_text, attach) VALUES ('{$user_id}', '{$tar_id}', '{$text}', '')"; $res = $DB->query($sql); $error .= $DB->error; } } else { return mb_convert_encoding('Ошибка', 'UTF-8', 'windows-1251'); } break; } return ''; } else { return mb_convert_encoding('Ошибка: ' . $error, 'UTF-8', 'windows-1251'); } }
function GetTags(&$count, $limit, $offset = 0) { $DB = new DB('master'); $sql = "SELECT COUNT(*) FROM (SELECT DISTINCT tag_id FROM corp_tags) as t"; $count = $DB->val($sql); $sql = "SELECT t.name, COUNT(*) as count, t.id \n FROM corp_tags c \n INNER JOIN tags t ON c.tag_id = t.id \n INNER JOIN corporative_blog b ON b.id = c.corp_id AND b.date_deleted IS NULL\n GROUP BY t.name, t.id ORDER BY count DESC, name "; /*$sql = "SELECT tags.name, COUNT(*) as count, tags.id FROM corp_tags LEFT JOIN tags ON corp_tags.tag_id=tags.id GROUP BY tags.name, tags.id ORDER BY count DESC, name "; //LIMIT $limit OFFSET $offset"; */ return $DB->rows($sql); }
/** * Проверяет, находится ли один пользователь в избранных у другого * * @param integer $user_id id пользователя в избранном которого нужно проверить * @param integer $target_id id пользователя, которого проверяем * @return integer 1 - если есть в избранном, 0 - если нет */ function teamsIsInFavorites($user_id, $target_id) { $DB = new DB(); return $DB->val("SELECT teams_check(?i, ?i)", $user_id, $target_id); }
/** * Vypis boxu daneho sloupce * @param string $column nazev sloupce * @param bool $return vratit misto vypisu 1/0 * @return string|null */ function _templateBoxes($column = 1, $return = false) { $output = "\n"; if (!_notpublicsite or _loginindicator) { // nacist boxy if (isset(SL::$registry['template_columns'][$column])) { $boxes = SL::$registry['template_columns'][$column]; } else { $boxes = array(); $query = DB::query('SELECT title,content,class FROM `' . _mysql_prefix . '-boxes` WHERE visible=1 AND `column`=' . DB::val($column) . (_loginindicator ? '' : ' AND `public`=1') . ' ORDER BY ord'); while ($item = DB::row($query)) { $boxes[] = $item; } DB::free($query); } // extend $extendOutput = _extend('buffer', 'tpl.boxes', array('boxes' => $boxes, 'column' => $column)); if ('' !== $extendOutput) { return $extendOutput; } // obsah if (_template_boxes_parent != "") { $output .= "<" . _template_boxes_parent . ">\n"; } foreach ($boxes as $item) { // kod titulku if ($item['title'] != "") { $title = "<" . _template_boxes_title . " class='box-title'>" . $item['title'] . "</" . _template_boxes_title . ">\n"; } else { $title = ""; } // titulek venku if (_template_boxes_title_inside == 0 and $title != "") { $output .= $title; } // starttag polozky if (_template_boxes_item != "") { $output .= "<" . _template_boxes_item . " class='box-item" . (isset($item['class']) ? ' ' . $item['class'] : '') . "'>\n"; } // titulek vevnitr if (_template_boxes_title_inside == 1 and $title != "") { $output .= $title; } // obsah $output .= _parseHCM($item['content']); // endtag polozky if (_template_boxes_item != "") { $output .= "\n</" . _template_boxes_item . ">"; } // spodek boxu if (_template_boxes_bottom == 1) { $output .= "<" . _template_boxes_item . " class='box-bottom'></" . _template_boxes_item . ">\n\n"; } else { $output .= "\n\n"; } } if (_template_boxes_parent != "") { $output .= "</" . _template_boxes_parent . ">\n"; } } // vypis vysledku if ($return) { return $output; } echo $output; }
/** * Полностью родгатавливает тело сообщения и ставит его в очередь на отправку * См. также @see self::send(), self::masssend(0 * * @return boolean успех */ protected function _send() { // работа с получателем, отправителем и темой $sender = $this->_encodeEmail($this->sender); $recipient = $this->recipient == '' ? '%%%recipient%%%' : $this->_encodeEmail($this->recipient); $subject = $this->_encode(htmlspecialchars_decode($this->subject, ENT_QUOTES)); // обработка текста письма $message = $this->message; $message = str_replace(array("\\'", '\\"', "\\\\"), array("'", '"', "\\"), $message); $message = preg_replace("'[\r\n]+\\.[ \r\n]+'", ".\r\n", $message); // разбиваем сообщения на строки примерно в 80 символов // иначе почтовик может вставлять пробелы прямо внутри слов $len = strlen($message); $prev = ''; $res = ''; for ($i = 0, $j = 0; $i < $len; $i++, $j++) { if ($j > 80 && $message[$i] == ' ') { $res .= "\r\n"; $j = 0; } else { if ($message[$i] == "\n") { if ($prev != "\r") { $res .= "\r\n"; } else { $res .= "\n"; } $j = 0; } else { $res .= $message[$i]; } } $prev = $message[$i]; } $message = $res; // определяем есть ли вложенные изобращения и прикрепленные файлы $mixed = false; $related = false; for ($i = 0; $i < count($this->_attaches); $i++) { if ($this->_attaches[$i]['cid'] == '' || $this->contentType == 'text/plain') { $mixed = true; } else { $related = true; } } // определяем базовый тип контента $baseContentType = $this->contentType; if ($related) { switch ($this->contentType) { // если есть вложенные изображения в text/plain -> пересылаем как вложения case 'text/plain': $baseContentType = 'multipart/mixed'; break; // для html формата используем related (связный) формат // для html формата используем related (связный) формат case 'text/html': $baseContentType = 'multipart/related'; break; default: $baseContentType = $this->contentType; break; } } if ($mixed) { $baseContentType = 'multipart/mixed'; } // состовное или простое письмо if (preg_match('/^multipart\\//', $baseContentType)) { $multipart = true; } else { $multipart = false; } $alternate = false; // строим тело сообщения $body = "MIME-Version: 1.0\r\n"; $body .= "To: {$recipient}\r\n"; $body .= "From: {$sender}\r\n"; $body .= "Subject: {$subject}\r\n"; // Рассылается она долго, а получается прописывается дата на момент рассылки. если закоментить то postfix автоматом будет время рассылки в каждое письмо проставлять // $body .= "Date: " . date("r") . "\r\n"; if ($multipart) { $boundaries = array(); $boundary = '------------' . md5(uniqid(time())); array_push($boundaries, $boundary); $body .= "Content-Type: {$baseContentType};\n boundary=\"{$boundary}\"\r\n\r\n"; $body .= "This is a multi-part message in MIME format.\r\n"; if ($related && $mixed) { $body .= "--{$boundary}\r\n"; $boundary = '------------' . md5(uniqid(time())); array_push($boundaries, $boundary); $body .= "Content-Type: multipart/related;\n boundary=\"{$boundary}\"\r\n\r\n"; $boundary = array_pop($boundaries); } if ($this->contentType == 'text/plain' || $alternate) { $body .= "--{$boundary}\r\n"; $body .= "Content-Type: text/plain; charset={$this->charset}; format=flowed\r\n"; $body .= "Content-Transfer-Encoding: 8bit\r\n\r\n"; $body .= $message; $body .= "\r\n\r\n"; } if ($this->contentType == 'text/html' || $alternate) { $body .= "--{$boundary}\r\n"; $body .= "Content-Type: text/html; charset={$this->charset}\r\n"; $body .= "Content-Transfer-Encoding: 8bit\r\n\r\n"; $body .= $message; $body .= "\r\n\r\n"; } if ($related) { foreach ($this->_attaches as $attach) { if ($attach['cid'] == '') { continue; } $file =& $attach['file']; $cid = $attach['cid']; if ($file instanceof CFile) { if (!empty($file->size)) { $fc = @file_get_contents(WDCPREFIX_LOCAL . "/{$file->path}{$file->name}"); if (!empty($fc)) { $type = $file->getContentType(); $name = $this->_encode(htmlspecialchars_decode($file->original_name, ENT_QUOTES)); } } } else { if (is_string($file) && $file != '') { $fc = @file_get_contents($file); if (!empty($fc)) { $name = basename($file); $out = exec("file -i '{$file}'"); $type = preg_replace('/^[^:]+:\\s*([^\\s;]+).*$/', '$1', $out); } } } if (!empty($fc)) { $body .= "--{$boundary}\r\n"; $body .= "Content-Type: {$type};\n name=\"{$name}\"\r\n"; $body .= "Content-Transfer-Encoding: base64\r\n"; $body .= "Content-ID: <{$cid}>\r\n"; $body .= "Content-Disposition: inline;\n filename=\"{$name}\"\r\n\r\n"; $body .= chunk_split(base64_encode($fc)); } } if ($mixed) { $body .= "--{$boundary}--\r\n\r\n"; $boundary = array_pop($boundaries); } } if ($mixed) { foreach ($this->_attaches as $attach) { if ($attach['cid'] != '' && $this->contentType != 'text/plain') { continue; } $file =& $attach['file']; if ($file instanceof CFile) { if (!empty($file->size)) { $fc = @file_get_contents(WDCPREFIX_LOCAL . "/{$file->path}{$file->name}"); if (!empty($fc)) { $type = $file->getContentType(); $name = $this->_encode(htmlspecialchars_decode($file->original_name, ENT_QUOTES)); } } } else { if (is_string($file) && $file != '') { $fc = @file_get_contents($file); if (!empty($fc)) { $name = basename($file); $out = exec("file -i '{$file}'"); $type = preg_replace('/^[^:]+:\\s*([^\\s;]+).*$/', '$1', $out); } } } if (!empty($fc)) { $body .= "--{$boundary}\r\n"; $body .= "Content-Type: {$type};\n name=\"{$name}\"\r\n"; $body .= "Content-Transfer-Encoding: base64\r\n"; $body .= "Content-Disposition: attachment;\n filename=\"{$name}\"\r\n\r\n"; $body .= chunk_split(base64_encode($fc)); } } } $body .= "--{$boundary}--\r\n"; } else { if ($this->contentType == 'text/html') { $body .= "Content-Type: text/html; charset={$this->charset}\r\n"; } else { $body .= "Content-Type: text/plain; charset={$this->charset}; format=flowed\r\n"; } $body .= "Content-Transfer-Encoding: 8bit\r\n\r\n"; $body .= $message; $body .= "\r\n\r\n"; } // постановка сообщения в очередь $db = new DB('spam'); if ($this->recipient == '') { $spamid = $db->val("SELECT mail.send(?, ?, ?, ?, ?, ?a)", $this->sender, NULL, 'SMTP2', $this->subject, $body, array()); } else { $spamid = $db->val("SELECT mail.send(?, ?, ?, ?, ?, ?a)", $this->sender, $this->recipient, 'SMTP2', $this->subject, $body, array()); } unset($body); return $spamid; }
/** * Возвращает список жалоб о спаме, удовлетворяющих условиям выборки * * Внутренняя функция * * @param int $count возвращает количество записей удовлтворяющих условиям выборки * @param int $page номер текущей страницы * @param string order тип сортировки * @param int $direction порядок сортировки: 0 - по убыванию, не 0 - по возрастанию * @param bool $unlimited опционально. установить в true если нужно получить все записи (без постраничного вывода) * @return array */ function _getSpam(&$count, $page = 1, $order = 'general', $direction = 0, $unlimited = false) { $DB = new DB(); // plproxy $aFilter = array(); $this->aSQL = array(); $offset = $this->items_pp * ($page - 1); // строим запрос $this->_setSpamOrderBy($order, $direction); if (is_array($this->filter) && count($this->filter)) { foreach ($this->filter as $sKey => $sVal) { $aFilter[] = array($sKey, $sVal); } } $sQuery = 'SELECT * FROM messages_spam_get_list(?a) ' . ' ORDER BY ' . implode(', ', $this->aSQL['order_by']) . (!$unlimited ? ' LIMIT ' . $this->items_pp . ' OFFSET ' . $offset : ''); $aSpam = $DB->rows($sQuery, $aFilter); if ($DB->error || !$aSpam) { return array(); } require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/messages.php'; // прикрепленные файлы messages::getMessagesAttaches($aSpam, 'msg_id'); $sQuery = 'SELECT messages_spam_get_count(?a)'; $count = $DB->val($sQuery, $aFilter); return $aSpam; }
$uid = get_uid(); if (!(hasPermissions('adm') && hasPermissions('adminspam'))) { header("Location: /404.php"); exit; } if ($_GET['cache'] == 'clear') { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/memBuff.php"; $memBuff = new memBuff(); $memBuff->touchTag("msgsCnt"); } $FROM = 'admin'; // логин, от кого отправл¤ть рассылку $DB = new DB('master'); // отправл¤ем от админа $sql = "SELECT uid FROM users WHERE login = ?"; $row = $DB->val($sql, $FROM); if ($row) { $send_uid = $row; } else { $send_uid = $uid; $FROM = $_SESSION['login']; } $messages = new messages($send_uid); $content = "../content.php"; $css_file = array('moderation.css', 'nav.css'); $js_file = array('highlight.min.js', 'highlight.init.js', 'mAttach.js'); $js_file_utf8[] = '/scripts/ckedit/ckeditor.js'; $inner_page = "inner_index.php"; $action = trim($_GET['action']); if (!$action) { $action = trim($_POST['action']);