function mod_user_friend($mod, $cfg) { $inDB = cmsDatabase::getInstance(); $inUser = cmsUser::getInstance(); if (!$inUser->id) { return false; } if ($cfg['view_type'] == 'table') { $sql = "SELECT\r\n CASE\r\n WHEN f.from_id = {$inUser->id}\r\n THEN f.to_id\r\n WHEN f.to_id = {$inUser->id}\r\n THEN f.from_id\r\n END AS user_id, u.login, u.nickname, u.is_deleted, p.imageurl\r\n FROM cms_user_friends f\r\n INNER JOIN cms_online o ON o.user_id = CASE WHEN f.from_id = {$inUser->id} THEN f.to_id WHEN f.to_id = {$inUser->id} THEN f.from_id END\r\n LEFT JOIN cms_users u ON u.id = o.user_id\r\n LEFT JOIN cms_user_profiles p ON p.user_id = u.id\r\n WHERE (from_id = {$inUser->id} OR to_id = {$inUser->id}) AND is_accepted =1 LIMIT " . $cfg['limit']; } else { $sql = "SELECT\r\n CASE\r\n WHEN f.from_id = {$inUser->id}\r\n THEN f.to_id\r\n WHEN f.to_id = {$inUser->id}\r\n THEN f.from_id\r\n END AS user_id, u.login, u.nickname\r\n FROM cms_user_friends f\r\n INNER JOIN cms_online o ON o.user_id = CASE WHEN f.from_id = {$inUser->id} THEN f.to_id WHEN f.to_id = {$inUser->id} THEN f.from_id END\r\n LEFT JOIN cms_users u ON u.id = o.user_id\r\n WHERE (from_id = {$inUser->id} OR to_id = {$inUser->id}) AND is_accepted =1 LIMIT " . $cfg['limit']; } $result = $inDB->query($sql); $total = $inDB->num_rows($result); if ($total) { $friends = array(); while ($friend = $inDB->fetch_assoc($result)) { $friend['avatar'] = $cfg['view_type'] == 'table' ? cmsUser::getUserAvatarUrl($friend['user_id'], 'small', $friend['imageurl'], $friend['is_deleted']) : false; $friend['user_link'] = cmsUser::getProfileLink($friend['login'], $friend['nickname']); $friends[$friend['user_id']] = $friend; } } cmsPage::initTemplate('modules', $cfg['tpl'])->assign('friends', $friends)->assign('total', $total)->assign('cfg', $cfg)->display($cfg['tpl']); return true; }
function mod_user_friend($mod, $cfg) { if (!cmsCore::c('user')->id) { return false; } if ($cfg['view_type'] == 'table') { $sql = "SELECT CASE WHEN f.from_id = ". cmsCore::c('user')->id ." THEN f.to_id WHEN f.to_id = ". cmsCore::c('user')->id ." THEN f.from_id END AS user_id, u.login, u.nickname, u.is_deleted, p.imageurl FROM cms_user_friends f INNER JOIN cms_online o ON o.user_id = CASE WHEN f.from_id = ". cmsCore::c('user')->id ." THEN f.to_id WHEN f.to_id = ". cmsCore::c('user')->id ." THEN f.from_id END LEFT JOIN cms_users u ON u.id = o.user_id LEFT JOIN cms_user_profiles p ON p.user_id = u.id WHERE (from_id = ". cmsCore::c('user')->id ." OR to_id = ". cmsCore::c('user')->id .") AND is_accepted =1 LIMIT ". $cfg['limit']; } else { $sql = "SELECT CASE WHEN f.from_id = ". cmsCore::c('user')->id ." THEN f.to_id WHEN f.to_id = ". cmsCore::c('user')->id ." THEN f.from_id END AS user_id, u.login, u.nickname FROM cms_user_friends f INNER JOIN cms_online o ON o.user_id = CASE WHEN f.from_id = ". cmsCore::c('user')->id ." THEN f.to_id WHEN f.to_id = ". cmsCore::c('user')->id ." THEN f.from_id END LEFT JOIN cms_users u ON u.id = o.user_id WHERE (from_id = ". cmsCore::c('user')->id ." OR to_id = ". cmsCore::c('user')->id .") AND is_accepted =1 LIMIT ". $cfg['limit']; } $result = cmsCore::c('db')->query($sql) ; $total = cmsCore::c('db')->num_rows($result); if ($total) { $friends = array(); while ($friend = cmsCore::c('db')->fetch_assoc($result)) { $friend['avatar'] = ($cfg['view_type'] == 'table') ? cmsUser::getUserAvatarUrl($friend['user_id'], 'small', $friend['imageurl'], $friend['is_deleted']) : false; $friend['user_link'] = cmsUser::getProfileLink($friend['login'], $friend['nickname']); $friends[$friend['user_id']] = $friend; } } cmsPage::initTemplate('modules', $cfg['tpl'])-> assign('friends', $friends)-> assign('total', $total)-> assign('cfg', $cfg)-> display(); return true; }
function mod_respect($mod, $cfg) { $cfg = array_merge(array( 'view_aw' => 0, 'limit' => 5, 'order' => 'desc', 'show_awards' => 1 ), $cfg); if ($cfg['order'] == 'rand') { $order_sql = 'RAND()'; } else { $order_sql = 'awards_count DESC'; } if (!$cfg['view_aw']) { $view_sql = ''; } else { $view_sql = " AND a.title = '". $cfg['view_aw'] ."'"; } $sql = "SELECT u.id, u.nickname, u.login, COUNT(a.id) as awards_count, p.imageurl, u.is_deleted FROM cms_users u, cms_user_profiles p, cms_user_awards a WHERE a.user_id = u.id AND p.user_id = u.id AND u.is_deleted = 0 AND u.is_locked = 0 ". $view_sql ." GROUP BY a.user_id ORDER BY ". $order_sql ." LIMIT ". $cfg['limit']; $result = cmsCore::c('db')->query($sql) ; if (!cmsCore::c('db')->num_rows($result)) { return false; } while($user = cmsCore::c('db')->fetch_assoc($result)) { $user['avatar'] = cmsUser::getUserAvatarUrl($user['id'], 'small', $user['imageurl'], $user['is_deleted']); if ($cfg['show_awards']) { $user['awards'] = cmsCore::c('db')->get_table('cms_user_awards', 'user_id='.$user['id'], 'id, title'); } $users[] = $user; } cmsPage::initTemplate('modules', $cfg['tpl'])-> assign('users', $users)-> assign('cfg', $cfg)-> display(); return true; }
function mod_respect($module_id, $cfg) { $inDB = cmsDatabase::getInstance(); if (!isset($cfg['view_aw'])) { $cfg['view_aw'] = 0; } if (!isset($cfg['limit'])) { $cfg['limit'] = 5; } if (!isset($cfg['order'])) { $cfg['order'] = 'desc'; } if (!isset($cfg['show_awards'])) { $cfg['show_awards'] = 1; } if ($cfg['order'] == 'rand') { $order_sql = 'RAND()'; } else { $order_sql = 'awards_count DESC'; } if (!$cfg['view_aw']) { $view_sql = ''; } else { $view_sql = " AND a.title = '{$cfg['view_aw']}'"; } $sql = "SELECT u.id, u.nickname, u.login, COUNT(a.id) as awards_count, p.imageurl, u.is_deleted\n FROM cms_users u, cms_user_profiles p, cms_user_awards a\n WHERE a.user_id = u.id AND p.user_id = u.id AND u.is_deleted = 0 AND u.is_locked = 0 {$view_sql}\n GROUP BY a.user_id\n ORDER BY {$order_sql}\n LIMIT {$cfg['limit']}"; $result = $inDB->query($sql); if (!$inDB->num_rows($result)) { return false; } while ($user = $inDB->fetch_assoc($result)) { $user['avatar'] = cmsUser::getUserAvatarUrl($user['id'], 'small', $user['imageurl'], $user['is_deleted']); if ($cfg['show_awards']) { $user['awards'] = $inDB->get_table('cms_user_awards', 'user_id=' . $user['id'], 'id, title'); } $users[] = $user; } cmsPage::initTemplate('modules', 'mod_respect')->assign('users', $users)->assign('cfg', $cfg)->display('mod_respect.tpl'); return true; }
/** * Возвращает блог по ссылке или по id * @param int or string $id_or_link * @return array $blog */ public function getPost($id_or_link = 0) { if (is_numeric($id_or_link)) { $where = "p.id = '{$id_or_link}'"; } else { $where = "p.seolink = '{$id_or_link}'"; } $sql = "SELECT p.*,\r\n\t\t\t\t\t u.nickname as author_nickname,\r\n\t\t\t\t\t u.login as author_login,\r\n\t\t\t\t\t up.imageurl as author_image,\r\n\t\t\t\t\t u.is_deleted as author_deleted\r\n\t\t\t\tFROM cms_blog_posts p\r\n\t\t\t\tLEFT JOIN cms_users u ON u.id = p.user_id\r\n\t\t\t\tLEFT JOIN cms_user_profiles up ON up.user_id = u.id\r\n\t\t\t\tWHERE {$where} LIMIT 1"; $result = $this->inDB->query($sql); if (!$this->inDB->num_rows($result)) { return false; } global $_LANG; $post = $this->inDB->fetch_assoc($result); $post['feditdate'] = cmsCore::dateFormat($post['edit_date']); $post['fpubdate'] = cmsCore::dateDiffNow($post['pubdate']) . ' ' . $_LANG['BACK'] . ' (' . cmsCore::dateFormat($post['pubdate']) . ')'; //Убираем тег [cut] $post['content_html'] = preg_replace('/\\[(cut=)\\s*(.*?)\\]/ui', '', $post['content_html']); $post['author_avatar'] = cmsUser::getUserAvatarUrl($post['user_id'], 'small', $post['author_image'], $post['author_deleted']); return cmsCore::callEvent('GET_POST', $post); }
/** * Возвращает html стены пользователя * @param int $selected * @param array $exclude * @return html */ public static function getUserWall($target_id, $component = 'users', $my_profile = 0, $is_admin = 0) { $inDB = cmsDatabase::getInstance(); $inUser = self::getInstance(); cmsCore::loadLanguage('components/' . $component); if (!$my_profile && !$is_admin) { $my_profile = $inUser->is_admin; } $records = array(); //получаем общее число записей на стене этого пользователя $total = $inDB->rows_count('cms_user_wall', "user_id = '{$target_id}' AND usertype = '{$component}'"); if ($total) { $sql = "SELECT w.*, g.gender, g.imageurl, u.nickname as author, u.login as author_login, u.is_deleted, w.pubdate\n FROM cms_user_wall w\n\t\t\t\t\tINNER JOIN cms_users u ON u.id = w.author_id\n\t\t\t\t\tINNER JOIN cms_user_profiles g ON g.user_id = u.id\n WHERE w.user_id = '{$target_id}' AND w.usertype = '{$component}'\n ORDER BY w.pubdate DESC\n"; if ($inDB->limit) { $sql .= "LIMIT {$inDB->limit}"; } $result = $inDB->query($sql); $inDB->resetConditions(); while ($record = $inDB->fetch_assoc($result)) { $record['is_today'] = time() - strtotime($record['pubdate']) < 86400; $record['fpubdate'] = $record['is_today'] ? cmsCore::dateDiffNow($record['pubdate']) : cmsCore::dateFormat($record['pubdate']); $record['avatar'] = cmsUser::getUserAvatarUrl($record['author_id'], 'small', $record['imageurl'], $record['is_deleted']); $records[] = $record; } $records = cmsCore::callEvent('GET_WALL_POSTS', $records); } ob_start(); cmsPage::initTemplate('components', 'com_users_wall')->assign('records', $records)->assign('user_id', $inUser->id)->assign('target_id', $target_id)->assign('my_profile', $my_profile)->assign('is_admin', $is_admin)->assign('component', $component)->assign('total', $total)->assign('pagebar', cmsPage::getPagebar($total, $inDB->page, $inDB->perpage, 'javascript:wallPage(%page%)'))->display('com_users_wall.tpl'); return ob_get_clean(); }
private function getNotices(){ global $_LANG; $sql = "SELECT m.*, m.from_id as sender_id {$this->inDB->select} FROM cms_user_msg m WHERE m.from_id < 0 {$this->inDB->where} {$this->inDB->order_by}\n"; if ($this->inDB->limit){ $sql .= "LIMIT {$this->inDB->limit}"; } $result = $this->inDB->query($sql); $this->inDB->resetConditions(); if(!$this->inDB->num_rows($result)){ return false; } while ($msg = $this->inDB->fetch_assoc($result)){ if ($msg['sender_id'] == USER_UPDATER){ $msg['authorlink'] = $_LANG['SERVICE_UPDATE']; } if ($msg['sender_id'] == USER_MASSMAIL){ $msg['authorlink'] = $_LANG['SERVICE_MAILING']; } $msg['fpubdate'] = cmsCore::dateFormat($msg['senddate'], true, true, true); $msg['user_img'] = cmsUser::getUserAvatarUrl($msg['sender_id'], 'small', '', ''); $msgs[] = $msg; } return $msgs; }
public function getPosts() { $inUser = cmsUser::getInstance(); $sql = "SELECT p.id, p.thread_id, p.user_id, p.pubdate, p.editdate, p.edittimes, p.rating, p.attach_count, p.content_html, p.pinned,\r\n u.nickname, u.login, u.is_deleted, u.logdate, u.status,\r\n up.imageurl, up.signature_html, up.city, up.karma, g.access as group_access, g.is_admin {$this->inDB->select}\r\n FROM cms_forum_posts p\r\n {$this->inDB->join}\r\n LEFT JOIN cms_users u ON u.id = p.user_id\r\n LEFT JOIN cms_user_profiles up ON up.user_id = u.id\r\n LEFT JOIN cms_user_groups g ON u.group_id = g.id\r\n WHERE 1=1\r\n {$this->inDB->where}\r\n {$this->inDB->group_by}\r\n {$this->inDB->order_by} \n"; if ($this->inDB->limit) { $sql .= "LIMIT {$this->inDB->limit}"; } $result = $this->inDB->query($sql); $this->inDB->resetConditions(); if (!$this->inDB->num_rows($result)) { return array(); } while ($post = $this->inDB->fetch_assoc($result)) { $post['fpubdate'] = cmsCore::dateFormat($post['pubdate']); $post['wday'] = cmsCore::dateToWday($post['pubdate']); $post['peditdate'] = cmsCore::dateFormat($post['editdate'], true, true); $post['post_count'] = $this->getUserPostsCount($post['user_id']); $post['avatar_url'] = cmsUser::getUserAvatarUrl($post['user_id'], 'small', $post['imageurl'], $post['is_deleted']); $post['flogdate'] = cmsUser::getOnlineStatus($post['user_id'], $post['logdate']); $post['userrank'] = $this->getForumUserRank($post); $post['user_awards'] = cmsUser::getAwardsList($post['user_id']); $post['attached_files'] = $this->config['fa_on'] && $post['attach_count'] ? $this->getPostAttachments($post['id']) : array(); $end_min = $this->checkEditTime($post['pubdate']); $post['is_author'] = $post['user_id'] == cmsUser::getInstance()->id; $post['is_author_can_edit'] = (is_bool($end_min) ? $end_min : $end_min > 0) && $post['is_author']; if ($inUser->id) { $post['is_voted'] = $post['is_author'] ? true : cmsUser::isRateUser('forum_post', $inUser->id, $post['id']); } else { $post['is_voted'] = true; } $posts[] = $post; } $this->resetAbstractArray(); return cmsCore::callEvent('GET_FORUM_POSTS', $posts); }
public function getClubPreMembers($club_id, $role = '', $prem = '') { $club_members = array(); $role_where = $role ? "AND c.role = '{$role}'" : ''; $prem_where = $prem ? "AND premoderlist = '{$prem}'" : ''; $sql = "SELECT c.user_id, c.role, u.nickname, u.login, u.status, u.logdate, p.karma, p.gender, p.imageurl as admin_avatar, u.is_deleted\n\t\t\t\tFROM cms_user_clubs c\n\t\t\t\tLEFT JOIN cms_users u ON u.id = c.user_id\n\t\t\t\tLEFT JOIN cms_user_profiles p ON p.user_id = u.id\n\t\t\t\tWHERE club_id = '{$club_id}' {$role_where} {$prem_where}\n\t\t\t\tORDER BY c.role DESC, u.logdate DESC\n"; if ($this->inDB->limit) { $sql .= "LIMIT {$this->inDB->limit}"; } $rs = $this->inDB->query($sql); $this->inDB->resetConditions(); if (!$this->inDB->num_rows($rs)) { return $club_members; } while ($u = $this->inDB->fetch_assoc($rs)) { $u['admin_avatar'] = cmsUser::getUserAvatarUrl($u['user_id'], 'small', $u['admin_avatar'], $u['is_deleted']); $u['is_online'] = cmsUser::isOnline($u['user_id']); $u['logdate'] = cmsCore::dateFormat($u['logdate'], true, true); $club_members[] = $u; } return $club_members; }
/** * Получаем комментарии по заданным параметрам * @return array */ public function getComments($only_published = true, $is_tree = false, $from_module = false) { $inUser = cmsUser::getInstance(); $comments = array(); global $_LANG; $published = $only_published ? 'c.published = 1' : '1=1'; $sql = "SELECT c.*,\r\n\t\t\t\t\t IFNULL(u.nickname, 0) as nickname,\r\n\t\t\t\t\t IFNULL(u.login, 0) as login,\r\n\t\t\t\t\t IFNULL(u.is_deleted, 0) as is_deleted,\r\n\t\t\t\t\t IFNULL(p.imageurl, 0) as imageurl,\r\n\t\t\t\t\t IFNULL(p.gender, 0) as gender\r\n FROM cms_comments c\r\n\t\t\t\tLEFT JOIN cms_users u ON u.id = c.user_id\r\n\t\t\t\tLEFT JOIN cms_user_profiles p ON p.user_id = u.id\r\n WHERE {$published}\r\n\t\t\t\t\t{$this->inDB->where}\r\n\r\n {$this->inDB->group_by}\r\n\r\n {$this->inDB->order_by}\n"; if ($this->inDB->limit) { $sql .= "LIMIT {$this->inDB->limit}"; } $result = $this->inDB->query($sql); $this->inDB->resetConditions(); if (!$this->inDB->num_rows($result)) { return array(); } while ($comment = $this->inDB->fetch_assoc($result)) { $comment['level'] = 0; $comment['is_editable'] = $this->isEditable($comment['pubdate']); $comment['fpubdate'] = cmsCore::dateFormat($comment['pubdate'], true, true); if ($comment['guestname']) { $comment['author'] = $comment['guestname']; $comment['is_profile'] = false; $comment['ip'] = in_array($this->config['cmm_ip'], array(1, 2)) ? $comment['ip'] : ''; } else { $comment['author']['nickname'] = $comment['nickname']; $comment['author']['login'] = $comment['login']; $comment['is_profile'] = true; $comment['user_image'] = cmsUser::getUserAvatarUrl($comment['user_id'], 'small', $comment['imageurl'], $comment['is_deleted']); $comment['ip'] = $this->config['cmm_ip'] == 2 && $comment['ip'] ? $comment['ip'] : ''; } switch ($comment['gender']) { case 'm': $comment['gender'] = $_LANG['COMMENTS_MALE']; break; case 'f': $comment['gender'] = $_LANG['COMMENTS_FEMALE']; break; default: $comment['gender'] = $_LANG['COMMENTS_GENDER']; } $comment['show'] = !$this->config['min_karma'] || $comment['rating'] >= $this->config['min_karma_show'] || cmsUser::userIsAdmin($comment['user_id']); $comment['is_my'] = $inUser->id == $comment['user_id']; if ($inUser->id) { $comment['is_voted'] = $comment['is_my'] ? true : cmsUser::isRateUser('comment', $inUser->id, $comment['id']); } else { $comment['is_voted'] = true; } $comments[] = $comment; } if ($is_tree) { $comments = $this->buildTree(0, 0, $comments); } return $from_module ? cmsCore::callEvent('GET_COMMENTS_MODULE', $comments) : cmsCore::callEvent('GET_COMMENTS', $comments); }