/** * Сбор дополнительных данных для личных сообщений * * @param array $aReturn массив личных сообщений */ private function _getContentMessagesEx(&$aReturn) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/messages.php'; // прикрепленные файлы messages::getMessagesAttaches($aReturn); // прикручиваем юзеров к сообщениям - на нодах есть не все поля $aUsers = array(); foreach ($aReturn as $aOne) { $aUsers[$aOne['from_id']] = array(); $aUsers[$aOne['to_id']] = array(); if (!empty($aOne['deluser_id'])) { $aUsers[$aOne['deluser_id']] = array(); } } $aRes = $GLOBALS['DB']->rows('SELECT uid, login, uname, usurname, role, is_pro, is_pro_test, is_team, is_chuck, warn, is_banned, ban_where FROM users WHERE uid IN (?l)', array_unique(array_keys($aUsers))); if ($aRes) { foreach ($aRes as $aOne) { $aUsers[$aOne['uid']] = $aOne; } foreach ($aReturn as $key => $aOne) { $aReturn[$key]['f_user'] = $aUsers[$aOne['from_id']]; $aReturn[$key]['t_user'] = $aUsers[$aOne['to_id']]; if (!empty($aOne['deluser_id'])) { $aReturn[$key]['adm_login'] = $aUsers[$aOne['deluser_id']]['login']; $aReturn[$key]['adm_uname'] = $aUsers[$aOne['deluser_id']]['uname']; $aReturn[$key]['adm_usurname'] = $aUsers[$aOne['deluser_id']]['usurname']; } } } //--------------------------------------- }
/** * Возвращает список жалоб о спаме, удовлетворяющих условиям выборки * * Внутренняя функция * * @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; }
/** * Получение списка личных сообщений. * Возвращает все сообщения пользователя (входящие и исходящие), которые были добавлены, изменены или помечены удаленными после определенной даты. * (!) Массовые рассылки только входящие. * * @param array $aParams массив входящих данных * @return array $aResult ответ */ protected function x____messages_list($aParams = array()) { $this->_validDevice($aParams); require_once ABS_PATH . '/classes/messages.php'; $aResult = array('list' => array()); $nTime = intvalPgSql($aParams['last_update']); $aMessages = messages::getMessagesAllSinceDate(get_uid(false), date('Y-m-d H:i:s', $nTime)); if (is_array($aMessages) && $aMessages) { messages::getMessagesAttaches($aMessages); foreach ($aMessages as $aOne) { if (strtotime($aOne['read_time']) && $aOne['read_time'] != '1970-01-01 00:00:00' && $aOne['read_time'] > $nTime || $aOne['read_time'] == '1970-01-01 00:00:00' && strtotime($aOne['post_time']) > $nTime) { $aResult['list'][] = $this->_getMessageData($aOne); } } } return $aResult; }