public function home() { global $core; $v = $this->__(array('a', 'p' => 0)); if (f($v['a'])) { $sql = 'SELECT area_id FROM _reference_area WHERE area_alias = ?'; if (!_field(sql_filter($sql, $v['a']), 'area_id', 0)) { _fatal(); } $sql = 'SELECT COUNT(r.ref_id) AS total FROM _reference r, _reference_area a WHERE a.area_alias = ? AND r.ref_area = a.area_id ORDER BY r.ref_time DESC'; $ref_total = _field(sql_filter($sql, $v['a']), 'total', 0); $sql = 'SELECT * FROM _reference r, _reference_area a WHERE a.area_alias = ? AND r.ref_area = a.area_id ORDER BY r.ref_time DESC LIMIT ??, ??'; $ref = _rowset(sql_filter($sql, $v['a'], $v['p'], $core->v('ref_pages'))); } else { $sql = 'SELECT COUNT(ref_id) AS total FROM _reference ORDER BY ref_time DESC'; $ref_total = _field($sql, 'total', 0); $sql = 'SELECT * FROM _reference r, _reference_area a WHERE r.ref_area = a.area_id ORDER BY r.ref_time DESC LIMIT ??, ??'; $ref = _rowset(sql_filter($sql, $v['p'], $core->v('ref_pages'))); } if ($v['p'] && $ref_total) { redirect(_link()); } else { _style('noref'); } foreach ($ref as $i => $row) { if (!$i) { _style('ref'); } if ($this->has_plugin($row['ref_content'])) { $this->parse_plugin($row); continue; } _style('ref.row', _vs(array('id' => $row['ref_id'], 'link' => _link($row['ref_alias']), 'subject' => $row['ref_subject'], 'content' => _message($row['ref_content']), 'time' => _format_date($row['ref_time'])), 'ref')); } return; }
public function home() { global $user; $v = $this->__(array('ssid', 'code', 'view', 'e', 'f', 'a' => 0, 'offset' => 0)); $total = 0; $per_page = 15; $sql = $sql_total = $sql_where = ''; if ($v['view'] == 'search') { if (!f($v['ssid'])) { _fatal(); } $cached = sql_cache('', $v['ssid']); $sql_total = $cached['query']; $sql = $sql_total . ' LIMIT {v_limit_start}, {v_limit_end}'; $v['a_view'] = array('mode_alias' => 'search', 'mode_name' => 'Buscar', 'mode_sql' => $sql, 'mode_sql_total' => $sql_total); } else { $modes = $this->init_mode(); $v['view'] = isset($modes[$v['view']]) ? $v['view'] : 'all'; $v['a_view'] = $modes[$v['view']]; if ($v['a_view']['mode_alias'] == 'all' && $user->v('user_type') != U_FOUNDER) { $sql = 'SELECT * FROM _groups_members WHERE member_uid = ?'; if (!($row = _fieldrow(sql_filter($sql, $user->v('user_id'))))) { redirect(_link($this->m(), array('view' => 'own'))); } } } $filter_uid = $user->v('user_id'); if (f($v['f'])) { $sql = 'SELECT user_id FROM _members WHERE user_username = ?'; $filter_uid = _field(sql_filter($sql, $v['f']), 'user_id', $filter_uid); } $status_alias = $this->init_status_list('status_alias', 'status_id'); if ($v['e'] == 'table') { $v['a_view']['mode_sql'] = str_replace('LIMIT {v_limit_start}, {v_limit_end}', '', $v['a_view']['mode_sql']); } $v_sql = array('userid' => $filter_uid, 'group' => $user->auth_groups(), 'limit_start' => $v['offset'], 'limit_end' => $per_page, 'closed' => $status_alias['closed']); $tickets_sql = _template_query($v['a_view']['mode_sql'], $v_sql); $tickets_sql_total = _template_query($v['a_view']['mode_sql_total'], $v_sql); if (!f($tickets_sql) || !f($tickets_sql_total)) { _fatal(); } if ($row = _fieldrow($tickets_sql_total)) { $total = isset($row['total']) ? $row['total'] : _numrows($row); } if ($tickets = _rowset($tickets_sql)) { $groups = $user->_groups(); $status_list = $this->init_status_list(); if ($v['e'] == 'table') { $sql_tickets = preg_replace('#^SELECT (.*?)[\\n]#is', 'SELECT ticket_id' . "\n", $tickets_sql); // // Assignees $sql = 'SELECT a.assign_ticket, m.user_firstname, m.user_lastname FROM _tickets_assign a, _members m WHERE a.assign_ticket IN (' . $sql_tickets . ') AND a.user_id = m.user_id ORDER BY a.assign_ticket'; $tech_assoc = _rowset($sql, 'assign_ticket', false, true); //_pre($tech_assoc, true); // // Notes $sql = 'SELECT m.user_id, m.user_firstname, m.user_lastname, n.ticket_id, n.note_text, n.note_time, n.note_cc FROM _members m, _tickets_notes n WHERE n.ticket_id IN (' . $sql_tickets . ') AND n.user_id = m.user_id ORDER BY n.ticket_id, n.note_time'; $notes_assoc = _rowset($sql, 'ticket_id', false, true); @set_time_limit(0); // // Include the PHPExcel classes require_once XFS . 'core/excel/PHPExcel.php'; require_once XFS . 'core/excel/PHPExcel/Writer/Excel5.php'; require_once XFS . 'core/css.php'; $phpcss = new phpcss(); $phpcss->parse('./style/css/default.css'); // Start to build the spreadsheet $excel = new PHPExcel(); $excel->setActiveSheetIndex(0); $excel->getActiveSheet()->getHeaderFooter()->setOddFooter("&RPage &P of &N"); // $excel->getActiveSheet()->setCellValue('A1', 'Titulo'); $excel->getActiveSheet()->setCellValue('B1', 'Asignado'); $excel->getActiveSheet()->setCellValue('C1', 'Categoria'); $excel->getActiveSheet()->setCellValue('D1', 'Solicitante'); $excel->getActiveSheet()->setCellValue('E1', 'Fecha/hora'); $excel->getActiveSheet()->setCellValue('F1', 'Texto'); $excel->getActiveSheet()->setCellValue('G1', 'Estado'); $excel->getActiveSheet()->getStyle("A1:G1")->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $excel->getActiveSheet()->getStyle("A1:G1")->getFont()->setBold(true); $excel->getActiveSheet()->getStyle("A1:G1")->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB('EBEBC6'); $excel->getActiveSheet()->getColumnDimension('A')->setWidth(20); $excel->getActiveSheet()->getColumnDimension('B')->setWidth(15); $excel->getActiveSheet()->getColumnDimension('C')->setWidth(10); $excel->getActiveSheet()->getColumnDimension('D')->setWidth(15); $excel->getActiveSheet()->getColumnDimension('E')->setWidth(15); $excel->getActiveSheet()->getColumnDimension('F')->setWidth(30); $excel->getActiveSheet()->getColumnDimension('G')->setWidth(10); $i = 2; foreach ($tickets as $row) { $row_color = $phpcss->property_get('.ticket_status_' . $status_list[$row['ticket_status']]['status_alias'], 'background'); $row_color = preg_replace('#^\\#([A-Za-z0-9]+).*?$#is', '\\1', $row_color); if (!isset($row['cat_name'])) { $row['cat_name'] = ''; } $assignees = ''; if (isset($tech_assoc[$row['ticket_id']])) { foreach ($tech_assoc[$row['ticket_id']] as $rowtech) { $assignees .= (f($assignees) ? ', ' : '') . _fullname($rowtech); } } $excel->getActiveSheet()->setCellValue("A{$i}", entity_decode($row['ticket_title'])); $excel->getActiveSheet()->setCellValue("B{$i}", entity_decode($assignees)); $excel->getActiveSheet()->setCellValue("C{$i}", entity_decode($row['cat_name'])); $excel->getActiveSheet()->setCellValue("D{$i}", entity_decode(_fullname($row))); $excel->getActiveSheet()->setCellValue("E{$i}", entity_decode(_format_date($row['ticket_start']))); $excel->getActiveSheet()->setCellValue("F{$i}", entity_decode($row['ticket_text'])); $excel->getActiveSheet()->setCellValue("G{$i}", entity_decode($status_list[$row['ticket_status']]['status_name'])); $excel->getActiveSheet()->getStyle("A{$i}:G{$i}")->getAlignment()->setWrapText(true)->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT); $excel->getActiveSheet()->getStyle("A{$i}:G{$i}")->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB($row_color); $i++; if (isset($notes_assoc[$row['ticket_id']])) { foreach ($notes_assoc[$row['ticket_id']] as $rownote) { $excel->getActiveSheet()->setCellValue("B{$i}", entity_decode(_fullname($rownote))); $excel->getActiveSheet()->setCellValue("E{$i}", entity_decode(_format_date($rownote['note_time']))); $excel->getActiveSheet()->setCellValue("F{$i}", entity_decode($rownote['note_text'])); $excel->getActiveSheet()->mergeCells("F{$i}:G{$i}"); $excel->getActiveSheet()->getStyle("A{$i}:G{$i}")->getAlignment()->setWrapText(true)->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT); $i++; } } } $excel->getActiveSheet()->freezePane('A2'); // // Output the headers header('Content-Type: application/vnd.ms-excel;'); header('Content-type: application/x-msexcel'); header('Content-Disposition: attachment; filename="solicitudes-' . date('Y-m-d') . '.xls"'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Last-Modified: ' . gmdate('D,d M YH:i:s') . ' GMT'); header('Cache-Control: no-cache, must-revalidate'); header('Pragma: no-cache'); // Output the spreadsheet in binary format $writer = new PHPExcel_Writer_Excel5($excel); $writer->save('php://output'); exit; } $u_link = array('view' => $v['view'], 'f' => $v['f']); if ($v['view'] == 'search') { $u_link['ssid'] = $v['ssid']; } $sv = array('TITLE' => $v['a_view']['mode_name'], 'SIZE' => $total, 'CURRENT' => $v['offset'], 'U_ETABLE' => _link($this->m(), array_merge($u_link, array('e' => 'table'))), 'G_ETABLE' => _lang('TICKET_ETABLE_YES'), 'U_TICKET' => _link($this->m(), array('x1' => 'view', 'a' => '*', 'offset' => $v['offset'])), 'U_STATUS' => _link($this->m(), array('x1' => 'search', 'x2' => 'status', 'e' => $v['e']))); foreach ($tickets as $i => $row) { if (!$i) { $pags = _pagination(_link($this->m(), $u_link), 'offset:%d', $total, $per_page, $v['offset']); _style('tickets', array_merge($sv, $pags)); } if (!isset($row['ticket_group']) || !$row['ticket_group']) { $row['ticket_group'] = 1; } $ticket_row = array('ID' => $row['ticket_id'], 'URL' => _link($this->m(), array('x1' => 'view', 'a' => $row['ticket_id'], 'offset' => $v['offset'])), 'STATUS' => $this->init_status($row['ticket_status']), 'STATUS_NAME' => $status_list[$row['ticket_status']]['status_name'], 'TITLE' => dvar($row['ticket_title'], _lang('TICKET_NO_SUBJECT')), 'TEXT' => _message($row['ticket_text']), 'START' => _format_date($row['ticket_start']), 'AUTHOR' => _fullname($row), 'GROUP' => $user->v('is_founder') ? $groups[$row['ticket_group']]['group_email'] : ''); _style('tickets.row', _vs($ticket_row, 'v')); if (isset($tech_assoc[$row['ticket_id']])) { foreach ($tech_assoc[$row['ticket_id']] as $ti => $tech_name) { if (!$ti) { _style('tickets.row.techs'); } _style('tickets.row.techs.rowt', array('NAME' => _fullname($tech_name))); } } if (isset($notes_assoc[$row['ticket_id']])) { foreach ($notes_assoc[$row['ticket_id']] as $ti => $note_row) { if (!$ti) { _style('tickets.row.notes'); } _style('tickets.row.notes.rown', array('TEXT' => $note_row['note_text'], 'TIME' => _format_date($note_row['note_time']), 'REALNAME' => _fullname($note_row))); } } } } else { if ($v['offset']) { redirect(_link($this->m(), array('view' => $v['view']))); } _style('noresults'); } v_style(array('V_CHOWN' => f($v['f']) ? $v['f'] : '')); return $this->__home_common($v['offset'], $v['view']); }
public function home() { global $core, $bio; $page = 15; $today = _htimestamp('md'); _pre($bio->v('is_bio'), true); _style('status_post'); // Friends birthday if ($bio->v('auth_member')) { $sql = "SELECT bio_id, bio_alias, bio_name\r\n\t\t\t\tFROM _bio\r\n\t\t\t\tWHERE bio_id IN (\r\n\t\t\t\t\t\tSELECT fan_of\r\n\t\t\t\t\t\tFROM _bio_fans\r\n\t\t\t\t\t\tWHERE fan_assoc = ?\r\n\t\t\t\t\t)\r\n\t\t\t\t\tAND bio_active = ?\r\n\t\t\t\t\tAND bio_birth LIKE '%??'\r\n\t\t\t\tORDER BY bio_name"; $birthday = _rowset(sql_filter($sql, $bio->v('bio_id'), 1, $today)); } else { $sql = "SELECT bio_id, bio_alias, bio_name, bio_avatar, bio_avatar_up\r\n\t\t\t\tFROM _bio\r\n\t\t\t\tWHERE bio_level = ?\r\n\t\t\t\t\tAND bio_birth LIKE '%??'\r\n\t\t\t\tORDER BY bio_name"; $birthday = _rowset(sql_filter($sql, 1, $today)); } foreach ($birthday as $i => $row) { if (!$i) { _style('birthday'); } _style('birthday.row', array('A' => _a($row), 'NAME' => $row['bio_name'], 'AVATAR' => _avatar($row))); } // Board topics if ($bio->v('auth_member')) { $sql = 'SELECT t.topic_id, t.topic_alias, t.topic_title, h.highlight_class FROM _board_topics t INNER JOIN _board_forums f ON f.forum_id = t.topic_forum LEFT JOIN _board_highlight h ON t.topic_highlight = h.highlight_id RIGHT JOIN _board_disallow d ON t.topic_id = d.disallow_topic AND d.disallow_bio = ? WHERE t.topic_show = ? ORDER BY t.topic_shine DESC, t.topic_time DESC LIMIT ??'; $topics = _rowset(sql_filter($sql, $bio->v('bio_id'), 1, 10)); } else { $sql = 'SELECT t.topic_id, t.topic_alias, t.topic_title, h.highlight_class FROM _board_topics t INNER JOIN _board_forums f ON f.forum_id = t.topic_forum LEFT JOIN _board_highlight h ON t.topic_highlight = h.highlight_id WHERE t.topic_show = ? ORDER BY t.topic_shine DESC, t.topic_time DESC LIMIT ??'; $topics = _rowset(sql_filter($sql, 1, 10)); } foreach ($topics as $i => $row) { if (!$i) { _style('board_topics'); } _style('board_topics.row', _vs(array('ID' => $row['topic_id'], 'TITLE' => $row['topic_title'], 'CLASS' => $row['highlight_class']), 'TOPIC')); } if ($bio->v('auth_member')) { // Messages $sql = 'SELECT * FROM _bio_messages INNER JOIN _bio ON message_from = bio_id INNER JOIN _bio_messages_type ON message_type = type_id WHERE message_to = ? AND message_active = ? ORDER BY message_time DESC'; $messages = _rowset(sql_filter($sql, $bio->v('bio_id'), 1)); foreach ($messages as $i => $row) { if (!$i) { _style('messages'); } _style('messages.row', array('U_MESSAGE' => _link(), '' => '')); } // Friend requests $sql = 'SELECT b.bio_alias, b.bio_name FROM _bio_friends INNER JOIN _bio ON friend_assoc = bio_id WHERE friend_bio = ? AND friend_pending = ? ORDER BY friend_time DESC'; $requests = _rowset(sql_filter($sql, $bio->v('bio_id'), 1)); foreach ($requests as $i => $row) { if (!$i) { _style('friend_request'); } _style('friend_request.row', array('U_APPROVE' => _link('home', array('x1' => 'friend', 'x2' => 'approve', 'a' => $row['bio_alias'])), 'U_DENY' => _link('home', array('x1' => 'friend', 'x2' => 'deny', 'a' => $row['bio_alias'])), 'A' => _a($row), 'BIO_NAME' => $row['bio_name'])); } } // Banners $this->announce('home'); return; }
protected function _messages_home() { global $bio, $core; $v = $this->__(array('i' => 'home', 'u' => '', 'a' => array(0 => ''), 's' => 0)); if (!in_array($v['i'], $this->messages_a)) { _fatal(); } switch ($v['i']) { case 'write': if (!$bio->v('bio_active')) { $this->_error('PLEASE_CONFIRM_ACCOUNT'); } if (f($v['u']) && $v['u'] != $bio->v('bio_alias')) { $v['a'][] = $v['u']; } unset($v['u']); if (_button()) { $v = array_merge($v, $this->__(array('subject', 'message', 'parent' => 0))); if ($v['parent']) { $sql = 'SELECT * FROM _bio_talk WHERE talk_id = ?'; if (!($talk = _fieldrow(sql_filter($sql, $v['parent'])))) { _fatal(); } $sql = 'SELECT * FROM _bio_talkers WHERE talker_talk = ? AND talker_bio = ?'; if (!($talkers = _rowset(sql_filter($sql, $v['parent'], $bio->v('bio_id'))))) { _fatal(); } } else { if (!f($v['subject'])) { $this->_error('#TALK_NO_SUBJECT'); } $sql = 'SELECT bio_alias, bio_name, bio_email FROM bio WHERE bio_id IN (??) ORDER BY bio_alias'; if (!($talkers = _rowset(sql_filter($sql, _implode(',', $v['a']))))) { $this->_error('#TALK_NO_TALKERS'); } } if (!f($v['message'])) { $this->_error('#NO_MESSAGE'); } $sql_insert = array('parent' => $v['parent'], 'subject' => _prepare($v['subject']), 'message' => _prepare($v['message']), 'time' => time()); $v->talk_id = sql_put('_bio_talk', $sql_insert); foreach ($talkers as $row) { $sql_insert = array('talk' => $v['parent'] ? $v['parent'] : $v->talk_id, 'bio' => $row['bio_id']); sql_put('_bio_talkers', $sql_insert); $properties = array('from' => 'info', 'to' => $row['bio_email'], 'subject' => '', 'body' => '', 'template' => ''); _sendmail($properties); } if (is_ghost() && $v['parent']) { $response = array('message_id' => $message_id, 'message_content' => $v['message'], 'message_time' => _format_date()); return $this->e(json_encode($response)); } redirect('my', array('messages', 'm' => $message_id)); } break; default: $v = array_merge($v, $this->__(array('m' => 0))); if ($v['m']) { $sql = 'SELECT * FROM _bio_talk t, _bio_talkers r WHERE t.talk_id = ? AND r.talker_bio = ? AND t.talk_id = r.talker_talk'; if (!($talk = _fieldrow(sql_filter($sql, $v['m'], $bio->v('bio_id'))))) { _fatal(); } $sql = 'SELECT t.*, b.bio_id, b.bio_alias, b.bio_name FROM _bio_talk t, _bio_talkers r, _bio b WHERE t.talk_parent = ? AND t.talk_id = r.talker_talk AND t.talk_author = r.talker_bio AND r.talker_bio = b.bio_id ORDER BY t.talk_time'; $messages = _rowset(sql_filter($sql, $talk['talk_parent'])); foreach ($messages as $i => $row) { if (!$i) { _style('messages'); } _style('messages.row'); } return; } // // Message lists $is_draft = 0; switch ($v['i']) { case 'sent': $sql_total = 'SELECT COUNT(talk_id) AS total FROM _bio_talk WHERE talk_author = ? AND talk_draft = ? AND talk_id = talk_parent'; $sql_list = 'SELECT * FROM _bio_talk WHERE talk_author = ? AND talk_draft = ? AND talk_id = t.talk_parent ORDER BY talk_lasttime DESC LIMIT ??, ??'; break; case 'draft': $sql_total = 'SELECT COUNT(talk_id) AS total FROM _bio_talk WHERE talk_author = ? AND talk_draft = ? AND talk_id = talk_parent'; $sql_list = 'SELECT * FROM _bio_talk WHERE talk_author = ? AND talk_draft = ? AND talk_id = talk_parent ORDER BY talk_lasttime DESC LIMIT ??, ??'; $is_draft = 1; break; default: $sql_total = 'SELECT COUNT(talk_id) AS total FROM _bio_talk t, _bio_talkers r WHERE r.talker_bio = ? AND t.talk_draft = ? AND t.talk_id = t.talk_parent AND t.talk_id = r.talker_talk'; $sql_list = 'SELECT * FROM _bio_talk t, _bio_talkers r WHERE r.talker_bio = ? AND t.talk_draft = ? AND t.talk_id = t.talk_parent AND t.talk_id = r.talker_talk ORDER BY t.talk_lasttime DESC LIMIT ??, ??'; break; } $talk_total = _field(sql_filter($sql_total, $bio->v('bio_id'), $is_draft), 'total', 0); $talk_list = _rowset(sql_filter($sql_list, $bio->v('bio_id'), $is_draft, $v['s'], $core->v('talk_pager'))); if ($talk_total && !count($talk_list)) { redirect(_link($this->m(), array('messages', 'i' => $v['i']))); } foreach ($messages as $i => $row) { if (!$i) { _style('talks', _pagination(_link('my', array('messages', 'i' => $v['i'])), 's:%d', $messages_total, $core->v('talk_pager'), $v['s'])); } if (!$row['message_last']) { $row['message_last'] = $row['message_id']; $row['message_last_time'] = $row['message_time']; } _style('talks.row', _vs(array('PARENT' => $row['talk_parent'], 'SUBJECT' => $row['talk_subject'], 'READ' => _link($this->m(), array('messages', 'i' => $v['i'], 'm' => $row['talk_last'])), 'TIME' => _format_date($row['talk_lasttime']), 'ROOT' => $row['talk_root']), 'TALK')); } break; } return; }
protected final function _replies($f) { global $bio; $rf_k = $rf_v = w(); foreach ($f as $k => $v) { $rf_k[] = '{' . strtoupper($k) . '}'; } $rf_v = array_values($f); $f['sql'] = str_replace($rf_k, $rf_v, $f['sql']); if (!($rows = _rowset($f['sql']))) { return; } // TODO: Control Panel. Modify & remove comments $bio = w(); foreach ($rows as $i => $row) { if (!$i) { _style($f['block'], _vs(_pagination($f['ref'], $f['start_f'] . ':%d', $f['rows'], $f['rows_page'], $f['start']))); } $uid = $row['bio_id']; $row['is_member'] = $uid != 1 ? 1 : 0; if (!isset($bio[$uid]) || !$row['is_member']) { $bio[$uid] = $this->_profile($row); } $s_row = array('V_MEMBER' => $row['is_member'], 'V_TIME' => _format_date($row['post_time']), 'V_MESSAGE' => _message($row['post_text'])); _style($f['block'] . '.row', array_merge($s_row, _vs($bio[$uid], 'v'))); } return; }
public function home() { global $core, $bio; $v = $this->__(array('f', 's' => 0)); if (!empty($v->f)) { $sql = 'SELECT * FROM _board_forums WHERE forum_alias = ?'; if (!($forum = sql_fieldrow(sql_filter($sql, $v->f)))) { _fatal(); } // TODO: Thinking if it's really necessary this condition if (!$forum->forum_topics) { $forum->forum_topics = 1; } /* $sql = 'SELECT t.topic_id, t.topic_title, t.forum_id, t.topic_replies, f.forum_alias, f.forum_name, p.post_id, p.post_username, p.post_time, b.bio_id, b.bio_alias, b.bio_name FROM _forums f, _forum_topics t, _forum_posts p, _bio b WHERE t.forum_id = f.forum_id AND t.topic_featured = 1 AND p.post_deleted = 0 AND p.post_id = t.topic_last_post_id AND p.poster_id = b.bio_id ORDER BY t.topic_important DESC, p.post_time DESC LIMIT ??'; $latest = _rowset(sql_filter($sql, $core->v('main_topics'))); */ // // Topic list $sql = 'SELECT t.* FROM _board_topics t, _board_posts p, _board_posts p2 WHERE t.forum_id = ? AND p.post_id = t.topic_first_post_id AND p2.post_id = t.topic_last_post_id ORDER BY t.topic_important DESC, t.topic_last_post_id DESC LIMIT ??, ??'; $topics = sql_rowset(sql_filter($sql, $forum->forum_id, $v->s, $core->v('topics_per_page'))); // // Popular topics $sql = 'SELECT topic_id, topic_title, topic_views, topic_replies FROM _forum_topics WHERE forum_id = ? ORDER BY topic_replies DESC, topic_views DESC LIMIT ??'; $popular = sql_rowset(sql_filter($sql, $forum->forum_id, $core->v('topics_popular'))); foreach ($topics as $i => $row) { if (!$i) { $pagination = _pagination(_link('board', $forum->forum_alias), 's:%d', $forum->forum_topics, $core->v('topics_per_page'), $v->s); _style('topics', array_merge($pagination, array('ALIAS' => $forum->forum_alias))); } _style('topics.row', _vs(array('ID' => $row->topic_id, 'TITLE' => $row->topic_title, 'REPLIES' => $row->topic_replies, 'URL' => _link('board', array('topic', $row->topic_id))), 'TOPIC')); } foreach ($popular as $i => $row) { if (!$i) { _style('popular'); } _style('popular.row', _vs(array('TITLE' => $row->topic_title, 'REPLIES' => $row->topic_replies, 'URL' => _link('board', array('topic', $row->topic_id)))), 'TOPIC'); } if (!$forum->forum_locked && $this->auth_forum($forum, 'create')) { _style('create', array('U_POST_ACTION' => _link($this->m(), $forum->forum_alias))); // NOTE: Has to be premium if ($this->bio_premium() && $bio->v('auth_poll_create_' . $forum->forum_id)) { _style('post_poll'); } } v_style(array('FORUM_TITLE' => $forum->forum_name, 'FORUM_DESC' => $forum->forum_desc, 'IS_TOPICS' => $ghost_topics)); $this->monetize(); if (is_ghost()) { return; } } // // Forums $sql = 'SELECT f.*, t.topic_id, t.topic_title, p.post_id, p.post_time, b.bio_id, b.bio_alias, b.bio_name, b.bio_color FROM ((_board_forums f LEFT JOIN _board_topics t ON t.topic_id = f.forum_last_topic_id LEFT JOIN _board_posts p ON p.post_id = t.topic_last_post_id) LEFT JOIN _bio b ON b.bio_id = p.post_bio) ORDER BY f.cat_id, f.forum_order'; $forums = sql_rowset($sql); foreach ($forums as $i => $row) { if (!$i) { _style('forums'); } _style('forums.row', array('FORUM_NAME' => $row->forum_name, 'FORUM_DESC' => $row->forum_desc, 'POSTS' => $row->forum_posts, 'TOPICS' => $row->forum_topics, 'U_FORUM' => _link('board', $row->forum_alias))); } v_style(array('IS_TOPICS' => $ghost_topics)); return; }
protected function _view_home() { global $core, $bio; $v = $this->__(array('alias', 't' => 0, 'p' => 0)); if (!f($v['alias'])) { _fatal(); } $v['field'] = !is_numb($v['alias']) ? 'alias' : 'id'; $sql = 'SELECT * FROM _events WHERE event_?? = ?'; if (!($event = _fieldrow(sql_filter($sql, $v['field'], $v['alias'])))) { _fatal(); } if ($v['field'] == 'id' && f($event['event_alias'])) { redirect(_link($this->m(), $event['event_alias']) . _linkp(array('t' => $v['t'], 'p' => $v['p']), true)); } // Get images $sql = 'SELECT * FROM _events_images WHERE image_event = ? ORDER BY image ASC LIMIT ??, ??'; $event_images = _rowset(sql_filter($sql, $event['event_id'], $v['t'], $core->v('thumbs_per_page'))); foreach ($event_images as $i => $row) { if (!$i) { _style('thumbnails', _pagination(_link($this->m(), $event['event_alias']), 't:%d', $event['event_images'], $core->v('thumbs_per_page'), $v['t'])); } _style('thumbnails.row', array('U_THUMBNAIL' => _lib(w(LIB_EVENT . ' thumbnail ' . $event['event_id'], $row['image'], 'jpg')), 'U_IMAGE' => _lib(w(LIB_EVENT . ' gallery ' . $event['event_id'], $row['image'], 'jpg')), 'V_FOOTER' => $row['image_footer'])); } if (is_ghost()) { return; } // Statistics if (!$v['t'] && !$bio->v('auth_founder')) { $this->_stats_store(); } $is_future = $row['event_end'] > time() ? true : false; if (!$is_future) { // Star for favourites if (!($star_type = $core->cache_load('star_type'))) { $sql = 'SELECT type_id, type_name FROM _events_star_type ORDER BY type_order'; $types = $core->cache_store('star_type', _rowset($sql, 'type_id', 'type_name')); } $i = 0; foreach ($types as $type_id => $type_name) { if (!$i) { _style('star_type'); } _style('star_type.row', array('TYPE_ID' => $type_id, 'TYPE_NAME' => $type_name)); $i++; } } else { $sql = 'SELECT * FROM _events_reviews r, _bio b WHERE r.review_event = ? AND r.review_uid = b.bio_id ORDER BY r.review_avg LIMIT 0, 5'; $reviews = _rowset(sql_filter($sql, $event['event_id']), 'review_id'); $sql = 'SELECT * FROM _events_reviews_rate r, _events_reviews_fields f WHERE r.rate_review IN (??) AND r.rate_field = f.field_id ORDER BY f.field_order'; $reviews_rate = _rowset(sql_filter($sql, _implode(',', array_keys($reviews))), 'rate_review', false, true); $i = 0; foreach ($reviews as $row) { if (!$i) { _style('reviews'); } _style('reviews.row', array('REVIEW_CONTENT' => $row['review_content'], 'REVIEW_' => $row['review_'])); if (isset($reviews_rate[$row['review_id']])) { foreach ($reviews_rate[$row['review_id']] as $j => $rate) { if (!$j) { _style('reviews.row.rate'); } _style('reviews.row.rate.field', array('FIELD' => $rate['field_name'], 'RATE' => $rate['rate_value'])); } } $i++; } } // Who attend $sql = 'SELECT at.type_id, at.type_name_next, at.type_name_prev, b.bio_alias, b.bio_name, b.bio_avatar, b.bio_avatar_up FROM _events_attend a, _events_attend_type at, _bio b WHERE a.attend_event = ? AND a.attend_type = at.type_id AND a.attend_uid = b.bio_id ORDER BY a.attend_time'; $attend = _rowset(sql_filter($sql, $event['event_id']), 'type_id', false, true); $i = 0; foreach ($attend as $type_name => $rows) { if (!$i) { _style('attend'); } $type_name = $is_future ? 'next' : 'prev'; _style('attend.type', array('TYPE_NAME' => $rows[0]['type_name_' . $type_name])); foreach ($rows as $row) { _style('attend.type.row', array('BIO_NAME' => $row['bio_name'], 'BIO_AVATAR' => _avatar($row))); } $i++; } // Messages $ref = _link('events', $event['event_alias']); if ($event['event_publish']) { if ($event['event_comments']) { $sql = 'SELECT c.comment_id, c.comment_time, c.comment_text, b.bio_id, b.bio_alias, b.bio_name, b.bio_avatar, b.bio_avatar_up FROM _events_comments c, _bio b WHERE c.comment_event = ? AND c.comment_active = ? AND c.comment_bio = b.bio_id ORDER BY c.comment_time DESC LIMIT ??, ??'; $comments = _rowset(sql_filter($sql, $event['event_id'], 1, $v['p'], $core->v('events_comments'))); foreach ($comments as $i => $row) { if (!$i) { _style('comment_area', _pagination(_link($this->m(), array($event['event_alias'], $v['t'], 's%d')), $topic_data['topic_replies'] + 1, $core->v('posts_per_page'), $start)); } _style('comment_area.row', array('BIO_ALIAS' => _link_bio($row['bio_alias']), 'BIO_NAME' => $row['bio_name'], 'BIO_AVATAR' => _avatar($row), 'COMMENT_ID' => $row['comment_id'], 'COMMENT_TIME' => _format_date($row['comment_time']), 'COMMENT_TEXT' => _message($row['comment_text']))); } } _style('comment_publish', array('U_PUBLISH' => _link())); } // if ($event['event_posts']) { $reply = array('ref' => $ref, 'start' => $v['p'], 'start_f' => 's', 'rows' => $event['event_posts'], 'rows_page' => $core->v('s_posts'), 'block' => 'posts', 'sql' => 'SELECT p.post_id, p.post_time, p.post_text, b.bio_id, b.bio_alias, b.bio_name, b.bio_avatar, b.bio_avatar_up, b.bio_sig FROM _events_posts p, _bio b WHERE p.post_event = ? AND p.post_active = 1 AND p.post_uid = b.bio_id ORDER BY p.post_time DESC LIMIT {START}, {ROWS_PAGE}'); $reply['sql'] = sql_filter($reply['sql'], $event['event_id']); $this->_replies($reply); } v_style(_vs(array('SUBJECT' => $event['event_subject'], 'IMAGES' => $event['event_images'], 'START' => _format_date($event['event_start'], 'd F Y'), 'END' => _format_date($event['event_end'], 'd F Y'), 'COMMENTS' => $event['event_posts']), 'event')); return; }
protected function _jobs_home() { $sql = 'SELECT * FROM _jobs WHERE job_end > ?? ORDER BY job_time'; $jobs = sql_rowset(sql_filter($sql, time())); foreach ($jobs as $i => $row) { if (!$i) { _style('jobs'); } _style('jobs.row' . _vs(array('TITLE' => $row->job_title, 'REQUIREMENT' => _message($row->job_requirement), 'OFFER' => _message($row->job_offer), 'RANGE' => $row->job_range), 'JOB')); } return; }
protected function _search_home() { global $user; $v = $this->__(array('m', 'q', 'g' => 0, 'start' => 0)); $v_results = 0; if (f($v['m']) || $v['g']) { if ($v['g']) { $sql = 'SELECT m.* FROM _members m LEFT JOIN _members_dept g ON g.this_id = m.user_dept WHERE m.user_dept = ?'; $sql = sql_filter($sql, $v['g']); } else { $sql = 'SELECT * FROM _members WHERE user_username = ?'; $sql = sql_filter($sql, $v['m']); } redirect(_link($this->m(), array('x1' => 'search', 'q' => array_key(sql_cache($sql), 'sid')))); } $button = _button(); if ($button || f($v['q'])) { if (!f($v['q'])) { $build_search = $this->advanced_search($this->m()); $build = 'SELECT mb.user_id, mb.user_active, mb.user_firstname, mb.user_lastname FROM ' . _implode(', ', $build_search['from']) . ' WHERE ' . _implode(' ', $build_search['where']) . ' GROUP BY mb.user_id ORDER BY mb.user_firstname, mb.user_lastname'; redirect(_link($this->m(), array('x1' => 'search', 'q' => array_key(sql_cache($build), 'sid')))); } $button = true; $v_sql = array('limit_start' => $v['start'], 'limit_end' => 20); $cached = sql_cache('', $v['q']); if (strstr($cached['query'], 'SELECT a_assoc') !== false) { $cached['query'] = 'SELECT mb.user_id, mb.user_active, mb.user_firstname, mb.user_lastname FROM _members WHERE user_id IN (' . _implode(',', _rowset($cached['query'], false, 'user_id')) . ') ORDER BY user_firstname, user_lastname'; } $build = _template_query($cached['query'], $v_sql); $build_limit = _template_query($cached['query'] . ' LIMIT {v_limit_start}, {v_limit_end}', $v_sql); if ($results = _rowset($build_limit, 'user_id', false, false, true)) { $tabs = $this->init_tabs(); $v_results = array_key(_fieldrow($build), '_numrows'); _style('search', _vs(_pagination(_link($this->m(), array('x1' => 'search', 'q' => $v['q'])), 'start:%d', $v_results, 20, $v['start']))); $user->auth_replace('contacts_tab_general', 'contacts_search'); foreach ($results as $row) { _style('search.row', _vs(array('ID' => $row['user_id'], 'TITLE' => _fullname($row), 'STATUS' => $row['user_active'] ? 'closed' : 'open'), 'V')); foreach ($tabs as $k => $k2) { // TODO: User pending tabs switch ($k) { case 'components': case 'attributes': case 'report': case 'vacation': continue 2; break; } if (!_auth_get('contacts_tab_' . $k)) { continue; } _style('search.row.tab', _vs(array('TAG' => $k, 'TITLE' => $k2['tab_name']), 'V')); } } } } $this->advanced_search_form($this->m()); return v_style(array('IS_SUBMIT' => $button, 'RESULTS_PAGE' => $v_results, 'U_SEARCH_TAB' => _link($this->m(), array('x1' => 'tab', 'uid' => '*', 'tag' => '?')))); }