/** * 관리자 메인 페이지입니다 */ public function index() { // 이벤트 라이브러리를 로딩합니다 $eventname = 'event_admin_main_index'; $this->load->event($eventname); $view = array(); $view['view'] = array(); // 이벤트가 존재하면 실행합니다 $view['view']['event']['before'] = Events::trigger('before', $eventname); $view['view']['latest_member'] = $this->Member_model->get_admin_list(7, '', '', '', 'mem_id', 'desc', '', ''); if (isset($view['view']['latest_member']['list']) && is_array($view['view']['latest_member']['list'])) { foreach ($view['view']['latest_member']['list'] as $key => $val) { $view['view']['latest_member']['list'][$key]['display_name'] = display_username(element('mem_userid', $val), element('mem_nickname', $val)); } } $view['view']['latest_point'] = $this->Point_model->get_admin_list(7, '', '', '', 'poi_id', 'desc', '', ''); if (isset($view['view']['latest_point']['list']) && is_array($view['view']['latest_point']['list'])) { foreach ($view['view']['latest_point']['list'] as $key => $val) { $view['view']['latest_point']['list'][$key]['display_name'] = display_username(element('mem_userid', $val), element('mem_nickname', $val)); } } $view['view']['latest_post'] = $this->Post_model->get_admin_list(7, '', '', '', 'post_id', 'desc', '', ''); if (isset($view['view']['latest_post']['list']) && is_array($view['view']['latest_post']['list'])) { foreach ($view['view']['latest_post']['list'] as $key => $val) { $brd_key = $this->board->item_id('brd_key', element('brd_id', $val)); $view['view']['latest_post']['list'][$key]['post_url'] = post_url($brd_key, element('post_id', $val)); $view['view']['latest_post']['list'][$key]['display_name'] = display_username(element('post_userid', $val), element('post_nickname', $val)); } } $view['view']['latest_comment'] = $this->Comment_model->get_admin_list(7, '', '', '', 'cmt_id', 'desc', '', ''); if (isset($view['view']['latest_comment']['list']) && is_array($view['view']['latest_comment']['list'])) { foreach ($view['view']['latest_comment']['list'] as $key => $val) { $post = $this->Post_model->get_one(element('post_id', $val), 'brd_id'); $brd_key = $this->board->item_id('brd_key', element('brd_id', $post)); $view['view']['latest_comment']['list'][$key]['post_url'] = post_url($brd_key, element('post_id', $val)) . '#comment_' . element('cmt_id', $val); $view['view']['latest_comment']['list'][$key]['display_name'] = display_username(element('cmt_userid', $val), element('cmt_nickname', $val)); } } // 이벤트가 존재하면 실행합니다 $view['view']['event']['before_layout'] = Events::trigger('before_layout', $eventname); /** * 어드민 레이아웃을 정의합니다 */ $layoutconfig = array('layout' => 'layout', 'skin' => 'main'); $view['layout'] = $this->managelayout->admin($layoutconfig, $this->cbconfig->get_device_view_type()); $this->data = $view; $this->layout = element('layout_skin_file', element('layout', $view)); $this->view = element('view_skin_file', element('layout', $view)); }
$x = "{$lab}/{$i}"; if (isset($citem[$x])) { $citem[$x]++; } else { $citem[$x] = 1; } } } } if (count($add) < $max) { $add[] = htmlspecialchars($v); } } $order['add'] = $add; if ($order['uid']) { $order['uname'] = display_username($order['uid']); } $list[] = $order; } $sl = '(' . _MD_SUM . ')'; foreach ($nitem as $k => $v) { foreach (preg_grep('/^' . preg_quote($k . '/', '/') . '\\d+$/', array_keys($citem)) as $ki) { unset($citem[$ki]); } if ($v !== "") { $citem[$k . $sl] = $v; } } $xoopsTpl->assign('list', $list); $xoopsTpl->assign('confirm', $confirm); ksort($citem);
function eventform($data, $uid) { global $xoopsUser, $xoopsModuleConfig; $poster = $uid ? new XoopsUser($uid) : $xoopsUser; $uid = is_object($poster) ? $poster->getVar('uid') : 0; $myts =& MyTextSanitizer::getInstance(); if (empty($data['reservation'])) { return null; } $form = array('uid' => $uid, 'poster' => $poster, 'uname' => display_username($uid)); $optfield = $data['optfield']; // reservation form if (isset($_POST['email'])) { $email = $myts->stripSlashesGPC($_POST['email']); } else { $email = is_object($poster) ? $poster->email() : ""; } $conf = isset($_POST['email_conf']) ? $myts->stripSlashesGPC($_POST['email_conf']) : $email; $form['email'] = $myts->makeTboxData4Edit($email); $form['email_conf'] = $myts->makeTboxData4Edit($conf); $form['user_notify'] = $xoopsModuleConfig['user_notify']; $form['check'] = array(); $mo = $xoopsModuleConfig['member_only'] != ACCEPT_EMAIL && is_object($poster); $form['member_only'] = $mo; if (!$mo) { $form['check']['email'] = preg_replace('/\\*$/', '', _MD_EMAIL) . ": " . strip_tags(_MD_ORDER_NOTE1); } $items = array(); $field = 0; $note1 = $note2 = ""; foreach (explode("\n", $optfield) as $n) { $field++; $n = rtrim($n); if ($n == "") { continue; } $attr = ""; $require = false; if (preg_match('/^\\s*#/', $n)) { $opts = preg_replace('/^\\s*#\\s*/', "", $n); $type = "#"; $name = " "; } else { $opt = array(); $p = 0; $len = strlen($n); while ($p < $len) { $w = ''; while ($p < $len) { $c = $n[$p++]; if ($c == ',') { break; } if ($c == '\\' && $p < $len) { $c = $n[$p++]; if ($c == 'n') { $c = "\n"; } elseif ($c != '\\' && $c != ',') { $c = "\\{$c}"; } } $w .= $c; } $opt[] = $w; } $name = array_shift($opt); if (preg_match('/[\\*#]$/', $name)) { $require = true; $attr = 'evms'; $note1 = _MD_ORDER_NOTE1; } if (preg_match('/^!/', $name)) { $name = preg_replace('/^!/', '', $name); $attr = 'evop'; $note2 = _MD_ORDER_NOTE2; } $v = ""; $type = "text"; $aname = isset($opt[0]) ? strtolower($opt[0]) : ""; switch ($aname) { case "hidden": case "const": case "text": case "checkbox": case "radio": case "textarea": case "select": $type = $aname; array_shift($opt); } if ($type == 'hidden') { continue; } $size = eguide_form_options('size', 60); $cols = eguide_form_options('cols', 40); $rows = eguide_form_options('rows', 5); $opts = ""; $comment = ""; $fname = "opt{$field}"; $sub = 0; $prop = ''; if (isset($_POST[$fname])) { $v = $myts->stripSlashesGPC($_POST[$fname]); } while ($opt) { $op = array_shift($opt); if (preg_match("/^#/", $op)) { array_unshift($opt, preg_replace("/^#/", "", $op)); $comment .= join(',', $opt); $opt = array(); continue; } $args = explode("=", $op, 2); // XXX: strtolower PHP4 mbstring bug escape. $aname = isset($args[1]) ? strtolower($args[0]) : $args[0]; switch ($aname) { case "size": $size = $args[1]; break; case "rows": $rows = $args[1]; break; case "cols": $cols = $args[1]; break; case 'prop': $prop = $args[1]; break; default: $an = preg_replace('/\\+$/', "", $args[0]); if ($v) { $ck = $an == $v ? " checked='checked'" : ""; } else { $ck = $an != $args[0] ? " checked='checked'" : ""; } if ($type == 'radio') { $sub++; if (isset($args[1])) { $opts .= "<label><input type='{$type}' name='{$fname}' value='{$an}'{$ck} {$prop}/>" . $args[1] . "</label> "; } else { $opts .= "<label><input type='{$type}' name='{$fname}' value='{$an}'{$ck} {$prop}/>{$an}</label> "; } } elseif (in_array($type, array('text', 'textarea', 'const'))) { if (!isset($_POST[$fname])) { $v .= ($v == "" ? "" : ",") . $op; } } elseif ($type == 'checkbox') { if (isset($_POST[$fname])) { $ck = in_array($an, $_POST[$fname]) ? ' checked' : ''; } $lab = empty($args[1]) ? "{$an} " : $args[1] . " "; $opts .= "<label><input type='{$type}' name='{$fname}[]' id='{$fname}[]' value='{$an}'{$ck} {$prop}/>" . $lab . "</label>"; } elseif ($type == 'select') { if ($ck != "") { $ck = " selected"; } $lab = empty($args[1]) ? $an : $args[1]; $opts .= "<option value='{$an}'{$ck}>{$lab}</option>\n"; } } } if (!isset($_POST[$fname])) { if (empty($v) && $poster && preg_match(_MD_NAME, $name)) { // compat old version $v = $poster->getVar('name'); } else { $v = apply_user_vars($v); } $v = htmlspecialchars($v); } if ($type == "text") { $opts .= "<input size='{$size}' name='{$fname}' value=\"{$v}\" {$prop}/>"; } elseif ($type == "textarea") { $opts .= "<textarea name='{$fname}' rows='{$rows}' cols='{$cols}' wrap='virtual' {$prop}>{$v}</textarea>"; } elseif ($type == "select") { $opts = "<select name='{$fname}' {$prop}>\n{$opts}</select>"; } elseif ($type == "const") { $opts = $v; } } if ($require) { if ($type == 'checkbox') { $fname .= '[]'; } $form['check'][$fname] = preg_replace('/\\*$/', '', $name) . ": " . strip_tags(_MD_ORDER_NOTE1); } $name = preg_replace('/\\*$/', _MD_REQUIRE_MARK, $name); if ($attr == 'evop') { $name = sprintf(_MD_LISTITEM_FMT, $name); } $items[] = array('attr' => $attr, 'label' => $name, 'value' => $opts, 'comment' => $comment); } $form['op'] = $xoopsModuleConfig['has_confirm'] && (count($items) || !$mo) ? 'confirm' : 'order'; $form['items'] = $items; $form['note'] = $note1 . (!empty($note1) && !empty($note2) ? " " : "") . $note2; $form['eid'] = empty($data['eid']) ? 0 : $data['eid']; $form['options'] = eguide_form_options(); return $form; }
/** * converts a user object to a string representation of the user suitable for * the current user (or specified user) to see * * Both parameters should be objects containing id, preferredname, firstname, * lastname, admin * * @param mixed $user the user that you're trying to format to a string (accepts an integer, object, or array) * @param object $userto the user that is looking at the string representation (if left * blank, will default to the currently logged in user). * @param boolean $nameonly do not append the user's username even if $userto can see it. * @param boolean $realname show the user's real name even if preferredname exists * @param boolean $username show the user's username even if the viewer is not an admin * * @returns string name to display */ function display_name($user, $userto = null, $nameonly = false, $realname = false, $username = false) { global $USER; static $tutorcache = array(); if ($nameonly) { return display_default_name($user); } $nousernames = get_config('nousernames'); $userto = get_user_for_display($userto); $user = get_user_for_display($user); $addusername = $username && empty($nousernames) || !empty($userto->admin) || !empty($userto->staff); // if they don't have a preferred name set, just return here if (empty($user->preferredname)) { $firstlast = full_name($user); if ($addusername) { return $firstlast . ' (' . display_username($user) . ')'; } return $firstlast; } else { if ($user->id == $userto->id) { // If viewing our own name, show it how we like it return $user->preferredname; } } // Preferred name is set $addrealname = $realname || !empty($userto->admin) || !empty($userto->staff); if (!$addrealname) { // Tutors can always see the user's real name, so we need to check if the // viewer is a tutor of the user whose name is being displayed if (!isset($tutorcache[$user->id][$userto->id])) { $tutorcache[$user->id][$userto->id] = record_exists_sql(' SELECT s.member FROM {group_member} s JOIN {group_member} t ON s.group = t.group JOIN {group} g ON (g.id = s.group AND g.deleted = 0 AND g.submittableto = 1) JOIN {grouptype_roles} gtr ON (g.grouptype = gtr.grouptype AND gtr.role = t.role AND gtr.see_submitted_views = 1) WHERE s.member = ? AND t.member = ?', array($user->id, $userto->id)); } $addrealname = $tutorcache[$user->id][$userto->id]; } if ($addrealname) { $firstlast = full_name($user); if ($addusername) { return $user->preferredname . ' (' . $firstlast . ' - ' . display_username($user) . ')'; } return $user->preferredname . ' (' . $firstlast . ')'; } if ($addusername) { return $user->preferredname . ' (' . display_username($user) . ')'; } return $user->preferredname; }
/** * 댓글 목록을 ajax 로 가져옵니다 */ public function lists($post_id = 0) { // 이벤트 라이브러리를 로딩합니다 $eventname = 'event_comment_list_lists'; $this->load->event($eventname); $post_id = (int) $post_id; if (empty($post_id) or $post_id < 1) { show_404(); } $view = array(); $view['view'] = array(); // 이벤트가 존재하면 실행합니다 $view['view']['event']['before'] = Events::trigger('before', $eventname); $post = $this->Post_model->get_one($post_id); if (!element('post_id', $post)) { show_404(); } $board = $this->board->item_all(element('brd_id', $post)); $mem_id = (int) $this->member->item('mem_id'); $alertmessage = $this->member->is_member() ? '회원님은 이 댓글 목록을 볼 수 있는 권한이 없습니다' : '비회원은 이 댓글 접근할 권한이 없습니다.\\n\\n회원이시라면 로그인 후 이용해 보십시오'; $check = array('group_id' => element('bgr_id', $board), 'board_id' => element('brd_id', $board)); $this->accesslevel->check(element('access_view', $board), element('access_view_level', $board), element('access_view_group', $board), $alertmessage, $check); $is_admin = $this->member->is_admin(array('board_id' => element('brd_id', $board), 'group_id' => element('bgr_id', $board))); $check = array('group_id' => element('bgr_id', $board), 'board_id' => element('brd_id', $board)); $can_comment_write = $this->accesslevel->is_accessable(element('access_comment', $board), element('access_comment_level', $board), element('access_comment_group', $board), $check); /** * 페이지에 숫자가 아닌 문자가 입력되거나 1보다 작은 숫자가 입력되면 에러 페이지를 보여줍니다. */ $param =& $this->querystring; $findex = strtolower(element('comment_order', $board)) === 'desc' ? 'cmt_num, cmt_reply' : 'cmt_num desc, cmt_reply'; if ($this->cbconfig->get_device_view_type() === 'mobile') { $per_page = element('mobile_comment_count', $board) ? (int) element('mobile_comment_count', $board) : 0; } else { $per_page = element('comment_count', $board) ? (int) element('comment_count', $board) : 0; } $page = (int) $this->input->get('page'); if (empty($page)) { if (strtolower(element('comment_order', $board)) === 'desc') { $page = 1; } else { $page = $per_page ? ceil(element('post_comment_count', $post) / $per_page) : 1; if ($page === 0) { $page = 1; } } } if ($page < 1) { show_404(); } $offset = ($page - 1) * $per_page; $this->Comment_model->allow_search_field = array('cmt_id', 'post_id', 'cmt_content', 'cmt_userid', 'cmt_nickname'); // 검색이 가능한 필드 $this->Comment_model->search_field_equal = array('cmt_id', 'cmt_userid', 'cmt_nickname'); // 검색중 like 가 아닌 = 검색을 하는 필드 $image_width = $this->cbconfig->get_device_view_type() === 'mobile' ? element('post_mobile_image_width', $board) : element('post_image_width', $board); $use_sideview = $this->cbconfig->get_device_view_type() === 'mobile' ? element('use_mobile_sideview', $board) : element('use_sideview', $board); $comment_date_style = $this->cbconfig->get_device_view_type() === 'mobile' ? element('mobile_comment_date_style', $board) : element('comment_date_style', $board); $comment_date_style_manual = $this->cbconfig->get_device_view_type() === 'mobile' ? element('mobile_comment_date_style_manual', $board) : element('comment_date_style_manual', $board); // 이벤트가 존재하면 실행합니다 $view['view']['event']['step1'] = Events::trigger('step1', $eventname); /** * 게시판 목록에 필요한 정보를 가져옵니다. */ $where = array('post_id' => $post_id, 'cmt_del <>' => 2); $result = $this->Comment_model->get_comment_list($per_page, $offset, $where, '', $findex, $sfield = '', $skeyword = ''); $list_num = $result['total_rows'] - ($page - 1) * $per_page; if (element('list', $result)) { foreach (element('list', $result) as $key => $val) { $result['list'][$key]['meta'] = $meta = $this->Comment_meta_model->get_all_meta(element('cmt_id', $val)); $result['list'][$key]['content'] = ''; $is_blind = element('comment_blame_blind_count', $board) > 0 && element('cmt_blame', $val) >= element('comment_blame_blind_count', $board) ? true : false; if ($is_blind === true) { $result['list'][$key]['content'] .= '<div class="alert alert-danger">신고가 접수된 게시글입니다. 본인과 관리자만 확인이 가능합니다</div>'; } if (element('cmt_secret', $val)) { $result['list'][$key]['content'] .= '<span class="label label-warning">비밀글입니다</span>'; } if ($is_blind === false && !element('cmt_secret', $val) or $is_admin !== false or element('mem_id', $val) && (int) element('mem_id', $val) === $mem_id or element('mem_id', $post) && (int) element('mem_id', $post) === $mem_id) { $result['list'][$key]['content'] .= display_html_content(element('cmt_content', $val), element('cmt_html', $val), $image_width, $autolink = true, $popup = true); if (element('comment_syntax_highlighter', $board)) { $result['list'][$key]['content'] = preg_replace_callback("/(\\[code\\]|\\[code=(.*)\\])(.*)\\[\\/code\\]/iUs", "content_syntaxhighlighter", $result['list'][$key]['content']); // SyntaxHighlighter } } if (element('cmt_del', $val)) { $result['list'][$key]['content'] = '<div class="alert alert-danger">이 게시물은 ' . html_escape(element('delete_mem_nickname', $meta)) . '님에 의해 ' . html_escape(element('delete_datetime', $meta)) . ' 에 삭제 되었습니다</div>'; } $result['list'][$key]['display_name'] = display_username(element('cmt_userid', $val), element('cmt_nickname', $val), element('mem_icon', $val), $use_sideview ? 'Y' : 'N'); $result['list'][$key]['display_datetime'] = display_datetime(element('cmt_datetime', $val), $comment_date_style, $comment_date_style_manual); $result['list'][$key]['is_mobile'] = element('cmt_device', $val) === 'mobile' ? true : false; $result['list'][$key]['display_ip'] = ''; if ($this->member->is_admin() === 'super' or element('show_comment_ip', $board) === '2') { $result['list'][$key]['display_ip'] = display_ipaddress(element('cmt_ip', $val), '1111'); } elseif (element('show_comment_ip', $board) === '1') { $result['list'][$key]['display_ip'] = display_ipaddress(element('cmt_ip', $val), $this->cbconfig->item('ip_display_style')); } $result['list'][$key]['member_photo_url'] = member_photo_url(element('mem_photo', $val), 64, 64) ? member_photo_url(element('mem_photo', $val), 64, 64) : site_url('assets/images/member_default.gif'); $result['list'][$key]['cmt_depth'] = strlen($result['list'][$key]['cmt_reply']) * 30; $result['list'][$key]['can_update'] = false; $result['list'][$key]['can_delete'] = false; $result['list'][$key]['can_reply'] = false; if (!element('post_del', $post) && !element('cmt_del', $val)) { if (!element('mem_id', $val)) { $result['list'][$key]['can_delete'] = true; } if ($is_admin !== false or element('mem_id', $val) && $mem_id === (int) element('mem_id', $val)) { $result['list'][$key]['can_update'] = true; $result['list'][$key]['can_delete'] = true; } if ($key > 0 && $is_admin === false) { if (element('cmt_reply', $val)) { $prev_reply = substr(element('cmt_reply', $val), 0, strlen(element('cmt_reply', $val)) - 1); if ($prev_reply === $result['list'][$key - 1]['cmt_reply']) { $result['list'][$key - 1]['can_update'] = false; $result['list'][$key - 1]['can_delete'] = false; } } } if (strlen(element('cmt_reply', $val)) < 5 && $can_comment_write === true) { $result['list'][$key]['can_reply'] = true; } } } } $view['view']['data'] = $result; $view['view']['board'] = $board; $view['view']['post'] = $post; $view['view']['is_admin'] = $is_admin; /** * primary key 정보를 저장합니다 */ $view['view']['primary_key'] = $this->Post_model->primary_key; /** * 페이지네이션을 생성합니다 */ $config['base_url'] = site_url('comment_list/lists/' . $post_id) . '?' . $param->replace('page'); $config['total_rows'] = $result['total_rows']; $config['per_page'] = $per_page; if (!$this->input->get('page')) { $_GET['page'] = (string) $page; } $config['_attributes'] = 'onClick="comment_page(\'' . $post_id . '\', $(this).attr(\'data-ci-pagination-page\'));return false;"'; if ($this->cbconfig->get_device_view_type() === 'mobile') { $config['num_links'] = element('mobile_comment_page_count', $board) ? element('mobile_comment_page_count', $board) : 3; } else { $config['num_links'] = element('comment_page_count', $board) ? element('comment_page_count', $board) : 5; } $this->pagination->initialize($config); $view['view']['paging'] = $this->pagination->create_links(); $view['view']['page'] = $page; // 이벤트가 존재하면 실행합니다 $view['view']['event']['before_layout'] = Events::trigger('before_layout', $eventname); /** * 레이아웃을 정의합니다 */ $skindir = $this->cbconfig->get_device_view_type() === 'mobile' ? element('board_mobile_skin', $board) : element('board_skin', $board); if (empty($skindir)) { $skindir = $this->cbconfig->get_device_view_type() === 'mobile' ? $this->cbconfig->item('mobile_skin_board') : $this->cbconfig->item('skin_board'); } if (empty($skindir)) { $skindir = $this->cbconfig->get_device_view_type() === 'mobile' ? $this->cbconfig->item('mobile_skin_default') : $this->cbconfig->item('skin_default'); } if (empty($skindir)) { $skindir = 'basic'; } $skin = 'board/' . $skindir . '/comment_list'; $this->data = $view; $this->view = $skin; }
/** * 검색 페이지 함수입니다 */ public function index() { // 이벤트 라이브러리를 로딩합니다 $eventname = 'event_search_index'; $this->load->event($eventname); $view = array(); $view['view'] = array(); // 이벤트가 존재하면 실행합니다 $view['view']['event']['before'] = Events::trigger('before', $eventname); /** * 페이지에 숫자가 아닌 문자가 입력되거나 1보다 작은 숫자가 입력되면 에러 페이지를 보여줍니다. */ $param =& $this->querystring; $page = (int) $this->input->get('page') > 0 ? (int) $this->input->get('page') : 1; $findex = 'post_num, post_reply'; $sfield = $sfield2 = $this->input->get('sfield', null, ''); $sop = $this->input->get('sop', null, ''); if ($sfield === 'post_both') { $sfield = array('post_title', 'post_content'); } $mem_id = (int) $this->member->item('mem_id'); $skeyword = $this->input->get('skeyword', null, ''); if (empty($skeyword)) { // 이벤트가 존재하면 실행합니다 $view['view']['event']['before_nokeyword_layout'] = Events::trigger('before_nokeyword_layout', $eventname); /** * 레이아웃을 정의합니다 */ $page_title = $this->cbconfig->item('site_meta_title_search'); $meta_description = $this->cbconfig->item('site_meta_description_search'); $meta_keywords = $this->cbconfig->item('site_meta_keywords_search'); $meta_author = $this->cbconfig->item('site_meta_author_search'); $page_name = $this->cbconfig->item('site_page_name_search'); $layoutconfig = array('path' => 'search', 'layout' => 'layout', 'skin' => 'search', 'layout_dir' => $this->cbconfig->item('layout_search'), 'mobile_layout_dir' => $this->cbconfig->item('mobile_layout_search'), 'use_sidebar' => $this->cbconfig->item('sidebar_search'), 'use_mobile_sidebar' => $this->cbconfig->item('mobile_sidebar_search'), 'skin_dir' => $this->cbconfig->item('skin_search'), 'mobile_skin_dir' => $this->cbconfig->item('mobile_skin_search'), 'page_title' => $page_title, 'meta_description' => $meta_description, 'meta_keywords' => $meta_keywords, 'meta_author' => $meta_author, 'page_name' => $page_name); $view['layout'] = $this->managelayout->front($layoutconfig, $this->cbconfig->get_device_view_type()); $this->data = $view; $this->layout = element('layout_skin_file', element('layout', $view)); $this->view = element('view_skin_file', element('layout', $view)); return false; } /** * 게시판 목록에 필요한 정보를 가져옵니다. */ $this->Post_model->allow_search_field = array('post_title', 'post_content', 'post_userid', 'post_nickname'); // 검색이 가능한 필드 $this->Post_model->search_field_equal = array('post_userid'); // 검색중 like 가 아닌 = 검색을 하는 필드 $per_page = 15; $offset = ($page - 1) * $per_page; $group_id = (int) $this->input->get('group_id') ? (int) $this->input->get('group_id') : ''; $board_id = (int) $this->input->get('board_id') ? (int) $this->input->get('board_id') : ''; $where = array(); $boardwhere = array('brd_search' => 1); if ($group_id) { $where['board.bgr_id'] = $group_id; $boardwhere['board.bgr_id'] = $group_id; } $boardlisttmp = $this->Board_model->get_board_list($boardwhere); $boardlist = array(); if (is_array($boardlisttmp)) { foreach ($boardlisttmp as $key => $value) { $boardlist[$value['brd_id']] = $value; } } $grouplisttmp = $this->Board_group_model->get('', '', '', '', 0, 'bgr_order', 'ASC'); if (is_array($grouplisttmp)) { foreach ($grouplisttmp as $key => $value) { $grouplist[$value['bgr_id']] = $value; } } $where['post.post_secret'] = 0; $where['post.post_del'] = 0; $like = ''; $result = $this->Post_model->get_search_list($per_page, $offset, $where, $like, $board_id, $findex, $sfield, $skeyword, $sop); $list_num = $result['total_rows'] - ($page - 1) * $per_page; if (element('list', $result)) { foreach (element('list', $result) as $key => $val) { $images = ''; if (element('post_image', $val)) { $imagewhere = array('post_id' => element('post_id', $val), 'pfi_is_image' => 1); $images = $this->Post_file_model->get_one('', '', $imagewhere, '', '', 'pfi_id', 'ASC'); } $result['list'][$key]['images'] = $images; $result['list'][$key]['post_url'] = post_url(element('brd_key', $val), element('post_id', $val)); $result['list'][$key]['display_name'] = display_username(element('post_userid', $val), element('post_nickname', $val), element('mem_icon', $val), 'Y'); $result['list'][$key]['display_datetime'] = display_datetime(element('post_datetime', $val), 'user', 'Y-m-d H:i'); $result['list'][$key]['content'] = cut_str(strip_tags(element('post_content', $val)), 200); $result['list'][$key]['is_mobile'] = element('post_device', $val) === 'mobile' ? true : false; } } $view['view']['data'] = $result; $view['view']['boardlist'] = $boardlist; $view['view']['grouplist'] = $grouplist; if (!$this->session->userdata('skeyword_' . urlencode($skeyword))) { $sfieldarray = array('post_title', 'post_content', 'post_both'); if (in_array($sfield2, $sfieldarray)) { $searchinsert = array('sek_keyword' => $skeyword, 'sek_datetime' => cdate('Y-m-d H:i:s'), 'sek_ip' => $this->input->ip_address(), 'mem_id' => $mem_id); $this->Search_keyword_model->insert($searchinsert); $this->session->set_userdata('skeyword_' . urlencode($skeyword), 1); } } $highlight_keyword = ''; if ($skeyword) { $key_explode = explode(' ', $skeyword); if ($key_explode) { foreach ($key_explode as $seval) { if ($highlight_keyword) { $highlight_keyword .= ','; } $highlight_keyword .= '\'' . html_escape($seval) . '\''; } } } $view['view']['highlight_keyword'] = $highlight_keyword; /** * primary key 정보를 저장합니다 */ $view['view']['primary_key'] = $this->Post_model->primary_key; /** * 페이지네이션을 생성합니다 */ $config['base_url'] = site_url('search/') . '?' . $param->replace('page'); $view['view']['tab_url'] = site_url('search/') . '?' . $param->replace('page, board_id'); $config['total_rows'] = $result['total_rows']; $config['per_page'] = $per_page; if ($this->cbconfig->get_device_view_type() === 'mobile') { $config['num_links'] = 3; } else { $config['num_links'] = 5; } $this->pagination->initialize($config); $view['view']['paging'] = $this->pagination->create_links(); $view['view']['page'] = $page; // 이벤트가 존재하면 실행합니다 $view['view']['event']['before_layout'] = Events::trigger('before_layout', $eventname); /** * 레이아웃을 정의합니다 */ $page_title = $this->cbconfig->item('site_meta_title_search'); $meta_description = $this->cbconfig->item('site_meta_description_search'); $meta_keywords = $this->cbconfig->item('site_meta_keywords_search'); $meta_author = $this->cbconfig->item('site_meta_author_search'); $page_name = $this->cbconfig->item('site_page_name_search'); $searchconfig = array('{검색어}'); $replaceconfig = array($skeyword); $page_title = str_replace($searchconfig, $replaceconfig, $page_title); $meta_description = str_replace($searchconfig, $replaceconfig, $meta_description); $meta_keywords = str_replace($searchconfig, $replaceconfig, $meta_keywords); $meta_author = str_replace($searchconfig, $replaceconfig, $meta_author); $page_name = str_replace($searchconfig, $replaceconfig, $page_name); $layoutconfig = array('path' => 'search', 'layout' => 'layout', 'skin' => 'search', 'layout_dir' => $this->cbconfig->item('layout_search'), 'mobile_layout_dir' => $this->cbconfig->item('mobile_layout_search'), 'use_sidebar' => $this->cbconfig->item('sidebar_search'), 'use_mobile_sidebar' => $this->cbconfig->item('mobile_sidebar_search'), 'skin_dir' => $this->cbconfig->item('skin_search'), 'mobile_skin_dir' => $this->cbconfig->item('mobile_skin_search'), 'page_title' => $page_title, 'meta_description' => $meta_description, 'meta_keywords' => $meta_keywords, 'meta_author' => $meta_author, 'page_name' => $page_name); $view['layout'] = $this->managelayout->front($layoutconfig, $this->cbconfig->get_device_view_type()); $this->data = $view; $this->layout = element('layout_skin_file', element('layout', $view)); $this->view = element('view_skin_file', element('layout', $view)); }
$remoteusermessage = $record->message; $remoteuseracceptform = acceptfriend_form($userid); } else { $relationship = 'none'; $friendscontrol = get_account_preference($userid, 'friendscontrol'); if ($friendscontrol == 'auto') { $remoteusernewfriendform = addfriend_form($userid); } $remoteuserfriendscontrol = $friendscontrol; } } } $remoteuserrelationship = $relationship; } if ($userid != $USER->get('id') && $USER->is_admin_for_user($user) && is_null($USER->get('parentuser'))) { $loginas = get_string('loginasuser', 'admin', display_username($user)); } else { $loginas = null; } // Set up skin, if the page has one $viewskin = $view->get('skin'); $owner = $view->get('owner'); $issiteview = $view->get('institution') == 'mahara'; if ($viewskin && get_config('skins') && can_use_skins($owner, false, $issiteview) && (!isset($THEME->skins) || $THEME->skins !== false)) { $skin = array('skinid' => $viewskin, 'viewid' => $view->get('id')); $skindata = unserialize(get_field('skin', 'viewskin', 'id', $viewskin)); } else { $skin = false; } $smarty = smarty($javascript, $stylesheets, array(), array('sidebars' => false, 'skin' => $skin)); $smarty->assign('restrictedview', $restrictedview);
/** * 마이페이지>팔로우(Followed) 입니다 */ public function followedlist() { // 이벤트 라이브러리를 로딩합니다 $eventname = 'event_mypage_followedlist'; $this->load->event($eventname); /** * 로그인이 필요한 페이지입니다 */ required_user_login(); $mem_id = (int) $this->member->item('mem_id'); $view = array(); $view['view'] = array(); // 이벤트가 존재하면 실행합니다 $view['view']['event']['before'] = Events::trigger('before', $eventname); $this->load->model('Follow_model'); /** * 페이지에 숫자가 아닌 문자가 입력되거나 1보다 작은 숫자가 입력되면 에러 페이지를 보여줍니다. */ $param =& $this->querystring; $page = (int) $this->input->get('page') > 0 ? (int) $this->input->get('page') : 1; $findex = $this->Follow_model->primary_key; $forder = 'desc'; $per_page = $this->cbconfig->item('list_count') ? (int) $this->cbconfig->item('list_count') : 20; $offset = ($page - 1) * $per_page; /** * 게시판 목록에 필요한 정보를 가져옵니다. */ $where = array('follow.target_mem_id' => $mem_id); $result = $this->Follow_model->get_followed_list($per_page, $offset, $where, '', $findex, $forder); $list_num = $result['total_rows'] - ($page - 1) * $per_page; if (element('list', $result)) { foreach (element('list', $result) as $key => $val) { $result['list'][$key]['display_name'] = display_username(element('mem_userid', $val), element('mem_nickname', $val), element('mem_icon', $val)); $result['list'][$key]['num'] = $list_num--; } } $view['view']['data'] = $result; $view['view']['followed_total_rows'] = $result['total_rows']; $countwhere = array('mem_id' => $mem_id); $view['view']['following_total_rows'] = $this->Follow_model->count_by($countwhere); /** * 페이지네이션을 생성합니다 */ $config['base_url'] = site_url('mypage/followedlist') . '?' . $param->replace('page'); $config['total_rows'] = $result['total_rows']; $config['per_page'] = $per_page; $this->pagination->initialize($config); $view['view']['paging'] = $this->pagination->create_links(); $view['view']['page'] = $page; // 이벤트가 존재하면 실행합니다 $view['view']['event']['before_layout'] = Events::trigger('before_layout', $eventname); /** * 레이아웃을 정의합니다 */ $page_title = $this->cbconfig->item('site_meta_title_mypage_followedlist'); $meta_description = $this->cbconfig->item('site_meta_description_mypage_followedlist'); $meta_keywords = $this->cbconfig->item('site_meta_keywords_mypage_followedlist'); $meta_author = $this->cbconfig->item('site_meta_author_mypage_followedlist'); $page_name = $this->cbconfig->item('site_page_name_mypage_followedlist'); $layoutconfig = array('path' => 'mypage', 'layout' => 'layout', 'skin' => 'followedlist', 'layout_dir' => $this->cbconfig->item('layout_mypage'), 'mobile_layout_dir' => $this->cbconfig->item('mobile_layout_mypage'), 'use_sidebar' => $this->cbconfig->item('sidebar_mypage'), 'use_mobile_sidebar' => $this->cbconfig->item('mobile_sidebar_mypage'), 'skin_dir' => $this->cbconfig->item('skin_mypage'), 'mobile_skin_dir' => $this->cbconfig->item('mobile_skin_mypage'), 'page_title' => $page_title, 'meta_description' => $meta_description, 'meta_keywords' => $meta_keywords, 'meta_author' => $meta_author, 'page_name' => $page_name); $view['layout'] = $this->managelayout->front($layoutconfig, $this->cbconfig->get_device_view_type()); $this->data = $view; $this->layout = element('layout_skin_file', element('layout', $view)); $this->view = element('view_skin_file', element('layout', $view)); }
} elseif ($action == 'details') { $logid = $_GET['id']; if (empty($logid) or !is_numeric($logid) or !log_get($logid)) { header('Location: index.php?module=logs'); die; } else { $log = log_get($logid); $userip = long2ip($log->userIP); if (!empty($log->userHost)) { $userip .= " (" . $log->userHost . ")"; } // End if(!empty) $content .= "<h2>" . lang("Details for logentry ") . " #" . $logid . "</h2>"; $content .= "<a href='javascript:history.back()'>Back</a>"; $content .= "<table>"; $content .= "<tr class='logrow1'><th>" . lang("User", "logs") . "</th><td>" . display_username($log->userID) . "</td></tr>"; $content .= "<tr class='logrow2'><th>" . lang("Timestamp", "logs") . "</th><td>" . $log->logTime . "</td></tr>"; $content .= "<tr class='logrow1'><th>" . lang("IP", "logs") . " / " . lang("Host", "logs") . "</th><td>" . $userip . "</td></tr>"; $content .= "<tr class='logrow2'><th>" . lang("URL", "logs") . "</th><td>" . $log->logURL . "</td></tr>"; $content .= "<tr class='logrow1'><th>" . lang("Logmodule", "logs") . "</th><td>" . $log->logModule . "</td></tr>"; $content .= "<tr class='logrow2'><th>" . lang("Logfunction", "logs") . "</th><td>" . $log->logFunction . "</td></tr>"; $content .= "</table>"; $content .= "<table><tr><td>"; if (!empty($log->logTextNew) && $log->logTextNew != NULL) { $logNew = unserialize($log->logTextNew); $row = 1; $content .= "<table>"; if (!empty($logNew)) { foreach ($logNew as $type => $value) { $content .= "<tr class='logrow{$row}'><th>" . $type . "</th><td>" . htmlentities($value) . "</th></tr>"; $row++;
/** * 목록을 가져오는 메소드입니다 */ public function index() { // 이벤트 라이브러리를 로딩합니다 $eventname = 'event_admin_member_members_index'; $this->load->event($eventname); $view = array(); $view['view'] = array(); // 이벤트가 존재하면 실행합니다 $view['view']['event']['before'] = Events::trigger('before', $eventname); /** * 페이지에 숫자가 아닌 문자가 입력되거나 1보다 작은 숫자가 입력되면 에러 페이지를 보여줍니다. */ $param =& $this->querystring; $page = (int) $this->input->get('page') > 0 ? (int) $this->input->get('page') : 1; $view['view']['sort'] = array('mem_id' => $param->sort('mem_id', 'asc'), 'mem_userid' => $param->sort('mem_userid', 'asc'), 'mem_username' => $param->sort('mem_username', 'asc'), 'mem_nickname' => $param->sort('mem_nickname', 'asc'), 'mem_email' => $param->sort('mem_email', 'asc'), 'mem_point' => $param->sort('mem_point', 'asc'), 'mem_register_datetime' => $param->sort('mem_register_datetime', 'asc'), 'mem_lastlogin_datetime' => $param->sort('mem_lastlogin_datetime', 'asc'), 'mem_level' => $param->sort('mem_level', 'asc')); $findex = $this->input->get('findex', null, 'member.mem_id'); $forder = $this->input->get('forder', null, 'desc'); $sfield = $this->input->get('sfield', null, ''); $skeyword = $this->input->get('skeyword', null, ''); $per_page = admin_listnum(); $offset = ($page - 1) * $per_page; /** * 게시판 목록에 필요한 정보를 가져옵니다. */ $this->{$this->modelname}->allow_search_field = array('mem_id', 'mem_userid', 'mem_email', 'mem_username', 'mem_nickname', 'mem_level', 'mem_homepage', 'mem_register_datetime', 'mem_register_ip', 'mem_lastlogin_datetime', 'mem_lastlogin_ip', 'mem_is_admin'); // 검색이 가능한 필드 $this->{$this->modelname}->search_field_equal = array('mem_id', 'mem_level', 'mem_is_admin'); // 검색중 like 가 아닌 = 검색을 하는 필드 $this->{$this->modelname}->allow_order_field = array('member.mem_id', 'mem_userid', 'mem_username', 'mem_nickname', 'mem_email', 'mem_point', 'mem_register_datetime', 'mem_lastlogin_datetime', 'mem_level'); // 정렬이 가능한 필드 $where = array(); if ($this->input->get('mem_is_admin')) { $where['mem_is_admin'] = 1; } if ($this->input->get('mem_denied')) { $where['mem_denied'] = 1; } if ($mgr_id = (int) $this->input->get('mgr_id')) { if ($mgr_id > 0) { $where['mgr_id'] = $mgr_id; } } $result = $this->{$this->modelname}->get_admin_list($per_page, $offset, $where, '', $findex, $forder, $sfield, $skeyword); $list_num = $result['total_rows'] - ($page - 1) * $per_page; if (element('list', $result)) { foreach (element('list', $result) as $key => $val) { $result['list'][$key]['mem_denied_text'] = $this->member_denied[$result['list'][$key]['mem_denied']]; $result['list'][$key]['display_name'] = display_username(element('mem_userid', $val), element('mem_nickname', $val), element('mem_icon', $val)); $result['list'][$key]['meta'] = $this->Member_meta_model->get_all_meta(element('mem_id', $val)); $result['list'][$key]['num'] = $list_num--; } } $view['view']['data'] = $result; /** * primary key 정보를 저장합니다 */ $view['view']['primary_key'] = $this->{$this->modelname}->primary_key; /** * 페이지네이션을 생성합니다 */ $config['base_url'] = admin_url($this->pagedir) . '?' . $param->replace('page'); $config['total_rows'] = $result['total_rows']; $config['per_page'] = $per_page; $this->pagination->initialize($config); $view['view']['paging'] = $this->pagination->create_links(); $view['view']['page'] = $page; /** * 쓰기 주소, 삭제 주소등 필요한 주소를 구합니다 */ $search_option = array('mem_userid' => '회원아이디', 'mem_email' => '이메일', 'mem_username' => '회원명', 'mem_nickname' => '닉네임', 'mem_level' => '회원레벨', 'mem_homepage' => '홈페이지', 'mem_register_datetime' => '회원가입날짜', 'mem_register_ip' => '회원가입IP', 'mem_lastlogin_datetime' => '최종로그인날짜', 'mem_lastlogin_ip' => '최종로그인IP', 'mem_adminmemo' => '관리자메모'); $view['view']['skeyword'] = $sfield && array_key_exists($sfield, $search_option) ? $skeyword : ''; $view['view']['search_option'] = search_option($search_option, $sfield); $view['view']['listall_url'] = admin_url($this->pagedir); $view['view']['write_url'] = admin_url($this->pagedir . '/write'); $view['view']['list_delete_url'] = admin_url($this->pagedir . '/listdelete/?' . $param->output()); // 이벤트가 존재하면 실행합니다 $view['view']['event']['before_layout'] = Events::trigger('before_layout', $eventname); /** * 어드민 레이아웃을 정의합니다 */ $layoutconfig = array('layout' => 'layout', 'skin' => 'index'); $view['layout'] = $this->managelayout->admin($layoutconfig, $this->cbconfig->get_device_view_type()); $this->data = $view; $this->layout = element('layout_skin_file', element('layout', $view)); $this->view = element('view_skin_file', element('layout', $view)); }
/** * 목록을 가져오는 메소드입니다 */ public function index() { // 이벤트 라이브러리를 로딩합니다 $eventname = 'event_admin_stat_currentvisitor_index'; $this->load->event($eventname); $view = array(); $view['view'] = array(); // 이벤트가 존재하면 실행합니다 $view['view']['event']['before'] = Events::trigger('before', $eventname); /** * 페이지에 숫자가 아닌 문자가 입력되거나 1보다 작은 숫자가 입력되면 에러 페이지를 보여줍니다. */ $param =& $this->querystring; $page = (int) $this->input->get('page') > 0 ? (int) $this->input->get('page') : 1; $view['view']['sort'] = array('cur_ip' => $param->sort('cur_ip', 'asc'), 'cur_datetime' => $param->sort('cur_datetime', 'asc'), 'cur_page' => $param->sort('cur_page', 'asc'), 'cur_url' => $param->sort('cur_url', 'asc'), 'cur_referer' => $param->sort('cur_referer', 'asc')); $findex = $this->input->get('findex', null, 'cur_datetime'); $forder = $this->input->get('forder', null, 'desc'); $sfield = $this->input->get('sfield', null, ''); $skeyword = $this->input->get('skeyword', null, ''); $per_page = 100; $offset = ($page - 1) * $per_page; $minute = (int) $this->cbconfig->item('currentvisitor_minute'); if ($minute < 1) { $minute = 10; } $curdatetime = cdate('Y-m-d H:i:s', ctimestamp() - $minute * 60); $cachename = 'delete_old_currentvisitor_cache'; $cachetime = 60; if (!($result = $this->cache->get($cachename))) { $deletewhere = array('cur_datetime < ' => $curdatetime); $this->Currentvisitor_model->delete_where($deletewhere); $this->cache->save($cachename, cdate('Y-m-d H:i:s'), $cachetime); } /** * 게시판 목록에 필요한 정보를 가져옵니다. */ $this->{$this->modelname}->allow_search_field = array('cur_ip', 'cur_mem_name', 'cur_datetime', 'cur_page', 'cur_url', 'cur_referer', 'cur_useragent', 'currentvisitor.mem_id'); // 검색이 가능한 필드 $this->{$this->modelname}->search_field_equal = array('currentvisitor.mem_id'); // 검색중 like 가 아닌 = 검색을 하는 필드 $this->{$this->modelname}->allow_order_field = array('cur_ip', 'cur_datetime', 'cur_page', 'cur_url', 'cur_referer'); // 정렬이 가능한 필드 $where = array('cur_datetime >' => $curdatetime); $result = $this->{$this->modelname}->get_admin_list($per_page, $offset, $where, '', $findex, $forder, $sfield, $skeyword); $list_num = $result['total_rows'] - ($page - 1) * $per_page; if (element('list', $result)) { foreach (element('list', $result) as $key => $val) { $result['list'][$key]['display_name'] = display_username(element('mem_userid', $val), element('mem_nickname', $val), element('mem_icon', $val)); if (element('cur_useragent', $val)) { $userAgent = get_useragent_info(element('cur_useragent', $val)); $result['list'][$key]['browsername'] = $userAgent['browsername']; $result['list'][$key]['browserversion'] = $userAgent['browserversion']; $result['list'][$key]['os'] = $userAgent['os']; $result['list'][$key]['engine'] = $userAgent['engine']; } $result['list'][$key]['num'] = $list_num--; } } $view['view']['data'] = $result; /** * primary key 정보를 저장합니다 */ $view['view']['primary_key'] = $this->{$this->modelname}->primary_key; /** * 페이지네이션을 생성합니다 */ $config['base_url'] = admin_url($this->pagedir) . '?' . $param->replace('page'); $config['total_rows'] = $result['total_rows']; $config['per_page'] = $per_page; $this->pagination->initialize($config); $view['view']['paging'] = $this->pagination->create_links(); $view['view']['page'] = $page; /** * 쓰기 주소, 삭제 주소등 필요한 주소를 구합니다 */ $search_option = array('cur_ip' => '아이피', 'cur_datetime' => '날짜', 'cur_page' => '페이지이름', 'cur_url' => '현재주소', 'cur_referer' => '이전주소', 'cur_useragent' => '운영체제/브라우저'); $view['view']['skeyword'] = $sfield && array_key_exists($sfield, $search_option) ? $skeyword : ''; $view['view']['search_option'] = search_option($search_option, $sfield); $view['view']['listall_url'] = admin_url($this->pagedir); // 이벤트가 존재하면 실행합니다 $view['view']['event']['before_layout'] = Events::trigger('before_layout', $eventname); /** * 어드민 레이아웃을 정의합니다 */ $layoutconfig = array('layout' => 'layout', 'skin' => 'index'); $view['layout'] = $this->managelayout->admin($layoutconfig, $this->cbconfig->get_device_view_type()); $this->data = $view; $this->layout = element('layout_skin_file', element('layout', $view)); $this->view = element('view_skin_file', element('layout', $view)); }
/** * 그룹관리자를 관리하는 페이지입니다 */ public function write_admin($pid = 0) { // 이벤트 라이브러리를 로딩합니다 $eventname = 'event_admin_board_boardgroup_write_admin'; $this->load->event($eventname); $view = array(); $view['view'] = array(); // 이벤트가 존재하면 실행합니다 $view['view']['event']['before'] = Events::trigger('before', $eventname); /** * 프라이머리키에 숫자형이 입력되지 않으면 에러처리합니다 */ $pid = (int) $pid; if (empty($pid) or $pid < 1) { show_404(); } /** * Validation 라이브러리를 가져옵니다 */ $this->load->library('form_validation'); /** * 전송된 데이터의 유효성을 체크합니다 */ $config = array(array('field' => 'bgr_id', 'label' => '그룹아이디', 'rules' => 'trim|required|numeric|is_natural'), array('field' => 'userid', 'label' => '회원아이디', 'rules' => 'trim|required|alpha_dash|min_length[3]|max_length[50]|callback__userid_check[' . $pid . ']')); $this->form_validation->set_rules($config); /** * 유효성 검사를 하지 않는 경우, 또는 유효성 검사에 실패한 경우입니다. * 즉 글쓰기나 수정 페이지를 보고 있는 경우입니다 */ if ($this->form_validation->run() === false) { // 이벤트가 존재하면 실행합니다 $view['view']['event']['formrunfalse'] = Events::trigger('formrunfalse', $eventname); } else { /** * 유효성 검사를 통과한 경우입니다. * 즉 데이터의 insert 나 update 의 process 처리가 필요한 상황입니다 */ // 이벤트가 존재하면 실행합니다 $view['view']['event']['formruntrue'] = Events::trigger('formruntrue', $eventname); $memdata = $this->Member_model->get_by_userid($this->input->post('userid'), 'mem_id'); $mem_id = element('mem_id', $memdata); $insertdata = array('bgr_id' => $this->input->post('bgr_id'), 'mem_id' => $mem_id); $this->Board_group_admin_model->insert($insertdata); } /** * 페이지에 숫자가 아닌 문자가 입력되거나 1보다 작은 숫자가 입력되면 에러 페이지를 보여줍니다. */ $param =& $this->querystring; $findex = $this->input->get('findex') ? $this->input->get('findex') : $this->Board_group_admin_model->primary_key; $forder = $this->input->get('forder', null, 'desc'); $getdata = $this->{$this->modelname}->get_one($pid); $where = array('bgr_id' => $pid); $result = $this->Board_group_admin_model->get('', '', $where, '', '', $findex, $forder); if ($result && is_array($result)) { foreach ($result as $key => $val) { $select = 'mem_id, mem_userid, mem_nickname, mem_email, mem_icon'; $result[$key]['member'] = $dbmember = $this->Member_model->get_by_memid(element('mem_id', $val), $select); $result[$key]['display_name'] = display_username(element('mem_userid', $dbmember), element('mem_nickname', $dbmember), element('mem_icon', $dbmember)); } } $view['view']['list'] = $result; $view['view']['data'] = $getdata; $primary_key = $this->Board_group_admin_model->primary_key; $view['view']['list_delete_url'] = admin_url($this->pagedir . '/write_admin_delete/' . $pid . '?' . $param->output()); $view['view']['primary_key'] = $primary_key; // 이벤트가 존재하면 실행합니다 $view['view']['event']['before_layout'] = Events::trigger('before_layout', $eventname); /** * 어드민 레이아웃을 정의합니다 */ $layoutconfig = array('layout' => 'layout', 'skin' => 'write_admin'); $view['layout'] = $this->managelayout->admin($layoutconfig, $this->cbconfig->get_device_view_type()); $this->data = $view; $this->layout = element('layout_skin_file', element('layout', $view)); $this->view = element('view_skin_file', element('layout', $view)); }
while (isset($sheets[$tab]) && count($sheets[$tab]['rows']) >= $max_sect) { $n++; $tab = formatTimestamp($edate, 'md') . "({$n})"; } if (empty($sheets[$tab])) { $day = formatTimestamp($edate, 'Y-m-d'); $sheets[$tab] = array('title' => $data['title'], 'edate' => $day, 'rows' => array()); } $res = $xoopsDB->query("SELECT * FROM " . RVTBL . " WHERE eid={$eid} AND status=" . _RVSTAT_RESERVED . " AND exid=" . (empty($data['exid']) ? 0 : $data['exid'])); $rows = array(); $member_handler =& xoops_gethandler('member'); while ($rvdata = $xoopsDB->fetchArray($res)) { $row = unserialize_text($rvdata['info']); $row[_MD_ORDER_DATE] = formatTimestamp($rvdata['rdate'], 'Y-m-d H:i:s'); $row[_MD_EMAIL] = $rvdata['email']; $row[_MD_UNAME] = display_username($rvdata['uid']); $row[_MD_RVID] = $rvdata['rvid']; $vals = array(); foreach ($outs as $k) { $v = empty($k) || empty($row[$k]) ? "" : $row[$k]; $type = preg_match('/^-?\\d+$/', $v) ? "Number" : "String"; $vals[] = array('value' => $v, 'type' => $type); } while (count($vals) < $nfield) { // padding blanks $vals[] = $nbsp; } $rows[] = $vals; } while (count($rows) < $max_rows) { // minimum line padding
/** * creates a result-array with the number, limit, offset and notification-type(s) * of the returned htmlrepresentation of the notifications in the outbox, as well * as the html representation itself. The return array has the following format: * * array ( * 'count' => '17', * 'limit' => 10, * 'offset' => 0, * 'type' => 'all', * 'html' => '//html ... * 'pagination' => '// html * 'pagination_js' => '// javascript * ) * * @global User $USER * @param type $type * @param type $limit * @param type $offset * @return array */ function activitylistout_html($type = 'all', $limit = 10, $offset = 0) { global $USER; $userid = $USER->get('id'); $typesql = ''; if ($type != 'all') { // Treat as comma-separated list of activity type names $types = split(',', preg_replace('/[^a-z,]+/', '', $type)); if ($types) { $typesql = ' at.name IN (' . join(',', array_map('db_quote', $types)) . ')'; if (in_array('adminmessages', $types)) { $typesql = '(' . $typesql . ' OR at.admin = 1)'; } $typesql = ' AND ' . $typesql; } } $notificationtargetcolumn = 'from'; $notificationtargetrole = 'sender'; $msgidquery = "\n (\n SELECT a.id, a.ctime, 'notification_internal_activity' AS msgtable\n FROM {notification_internal_activity} AS a\n INNER JOIN {activity_type} AS at ON a.type = at.id\n WHERE a." . $notificationtargetcolumn . " = ?\n " . $typesql . "\n AND at.name != 'newpost'\n )\n UNION\n (\n SELECT a.id, a.ctime, 'module_multirecipient_notification' AS msgtable\n FROM {module_multirecipient_notification} AS a\n INNER JOIN {module_multirecipient_userrelation} AS b\n ON a.id = b.notification\n INNER JOIN {activity_type} AS at ON a.type = at.id\n WHERE b.usr = ?\n AND b.deleted = '0'\n AND b.role = '" . $notificationtargetrole . "'\n " . $typesql . "\n )"; $countquery = 'SELECT COUNT(*) FROM (' . $msgidquery . ') AS dummytable'; $count = count_records_sql($countquery, array($userid, $userid)); $pagination = build_pagination(array('id' => 'activitylist_pagination', 'url' => get_config('wwwroot') . 'module/multirecipientnotification/outbox.php?type=' . hsc($type), 'jsonscript' => 'module/multirecipientnotification/indexout.json.php', 'datatable' => 'activitylist', 'count' => $count, 'limit' => $limit, 'offset' => $offset, 'jumplinks' => 6, 'numbersincludeprevnext' => 2, 'setlimit' => true)); $result = array('count' => $count, 'limit' => $limit, 'offset' => $offset, 'type' => $type, 'html' => '', 'pagination' => $pagination['html'], 'pagination_js' => $pagination['javascript']); if ($count < 1) { return $result; } $records = array(); $msgidquery .= "\n ORDER BY ctime DESC"; $msgidrecords = get_records_sql_array($msgidquery, array($userid, $userid), $offset, $limit); if (!is_array($msgidrecords)) { $msgidrecords = array(); } foreach ($msgidrecords as $msgidrecord) { if ($msgidrecord->msgtable == 'notification_internal_activity') { $recordsarray = get_records_sql_array("SELECT a.*, at.name AS type, at.plugintype, at.pluginname\n FROM {notification_internal_activity} a\n INNER JOIN {activity_type} at ON a.type = at.id\n WHERE a.id = ?", array($msgidrecord->id)); if (1 !== count($recordsarray)) { log_warn('inconsistent message-id in notification_internal_activity, id: ' . $msgidrecord->id); continue; } $record = $recordsarray[0]; $record->self = false; $record->canreplyall = false; $record->canreply = false; $record->startnewthread = true; // read out receiver name if (isset($record->usr)) { $tousrarray = array('display' => display_name($record->usr), 'link' => null); if (!get_user($record->usr)->deleted) { $tousrarray['link'] = profile_url($record->usr); $record->canreply = true; } $record->tousr = array($tousrarray); $record->self = $record->from == $USER->get('id'); } else { $record->tousr = array(array('display' => get_string('system'), 'link' => null)); $record->self = true; } // read out sender name if (isset($record->from)) { $record->fromusr = $record->from; } else { // we're in the outbox, so basically, this should hold for all messages $record->fromusr = $USER->get('id'); } $record->date = format_date(strtotime($record->ctime), 'strfdaymonthyearshort'); $section = empty($record->plugintype) ? 'activity' : "{$record->plugintype}.{$record->pluginname}"; $record->strtype = get_string('type' . $record->type, $section); $record->message = format_notification_whitespace($record->message); // used to identify notification as internal for json-calls $record->table = 'notification_internal_activity'; $records[] = $record; } else { if ($msgidrecord->msgtable === 'module_multirecipient_notification') { $record = get_message_mr($userid, $msgidrecord->id); if (null === $record) { continue; } $record->strtype = $record->type; $record->date = format_date(strtotime($record->ctime), 'strfdaymonthyearshort'); // We fill $record->tousr with an array per userentry, that holds the // display name of the user and the link to the users profile, if // applicable - we don't link to deleted users. Those will be summed // up in a single entry at the end of the list $deletedcount = 0; $record->self = false; $record->canreply = false; $record->canreplyall = false; $record->startnewthread = false; for ($i = 0; $i < count($record->userids); $i++) { $tousr = get_user($record->userids[$i]); if ($tousr->deleted) { $deletedcount++; } else { $record->tousr[] = array('username' => display_username(get_user_for_display($record->userids[$i])), 'display' => display_name($record->userids[$i]), 'link' => profile_url($record->userids[$i])); } } if ($deletedcount > 0) { $record->tousr[] = array('username' => $deletedcount . ' ' . get_string('deleteduser', 'module.multirecipientnotification'), 'display' => $deletedcount . ' ' . get_string('deleteduser', 'module.multirecipientnotification'), 'link' => null); } if ($deletedcount < count($record->userids)) { if (count($record->userids) - $deletedcount == 1) { $record->canreply = true; $record->self = $record->fromid == $USER->get('id'); } else { $record->canreplyall = true; } } if (isset($record->fromid)) { $record->fromusr = $record->fromid; } else { $record->fromusr = 0; } $record->message = format_notification_whitespace($record->message); // used to identify notification as from this plugin for json-calls $record->table = 'module_multirecipient_notification'; $records[] = $record; } } } $smarty = smarty_core(); $smarty->assign('data', $records); $smarty->assign('USER', $USER); $smarty->assign('maxnamestrlength', PluginModuleMultirecipientnotification::MAX_USERNAME_IN_LIST_LENGTH); $result['html'] = $smarty->fetch('module:multirecipientnotification:activitylistout.tpl'); return $result; }
/** * 현재접속자 페이지입니다 */ public function index() { // 이벤트 라이브러리를 로딩합니다 $eventname = 'event_currentvisitor_index'; $this->load->event($eventname); if (!$this->cbconfig->item('open_currentvisitor') && $this->member->is_admin() === false) { alert('이 웹사이트는 현재접속자 기능을 사용하지 않습니다'); } $view = array(); $view['view'] = array(); // 이벤트가 존재하면 실행합니다 $view['view']['event']['before'] = Events::trigger('before', $eventname); /** * 페이지에 숫자가 아닌 문자가 입력되거나 1보다 작은 숫자가 입력되면 에러 페이지를 보여줍니다. */ $param =& $this->querystring; $page = (int) $this->input->get('page') > 0 ? (int) $this->input->get('page') : 1; $per_page = 100; $offset = ($page - 1) * $per_page; $minute = (int) $this->cbconfig->item('currentvisitor_minute'); if ($minute < 1) { $minute = 10; } $curdatetime = cdate('Y-m-d H:i:s', ctimestamp() - $minute * 60); $cachename = 'delete_old_currentvisitor_cache'; $cachetime = 60; if (!($result = $this->cache->get($cachename))) { $deletewhere = array('cur_datetime < ' => $curdatetime); $this->Currentvisitor_model->delete_where($deletewhere); $this->cache->save($cachename, cdate('Y-m-d H:i:s'), $cachetime); } $result = $this->Currentvisitor_model->get_current_list($curdatetime, $per_page, $offset); $list_num = ($page - 1) * $per_page + 1; $visitor = array(); if (element('list', $result)) { foreach (element('list', $result) as $key => $value) { $data = $value; if (element('mem_userid', $value)) { $data['name_or_ip'] = display_username(element('mem_userid', $value), element('mem_nickname', $value), element('mem_icon', $value)); } else { $ip_display_style = $this->member->is_admin() === 'super' ? '1111' : $this->cbconfig->item('ip_display_style'); $data['name_or_ip'] = display_ipaddress(element('cur_ip', $value), $ip_display_style); } $data['num'] = $list_num++; $visitor[] = $data; } } $view['view']['list'] = $visitor; $view['view']['total_rows'] = $result['total_rows']; /** * 페이지네이션을 생성합니다 */ $config['base_url'] = site_url('currentvisitor') . '?' . $param->replace('page'); $config['total_rows'] = $result['total_rows']; $config['per_page'] = $per_page; $this->pagination->initialize($config); $view['view']['paging'] = $this->pagination->create_links(); $view['view']['page'] = $page; $view['view']['canonical'] = site_url('currentvisitor'); // 이벤트가 존재하면 실행합니다 $view['view']['event']['before_layout'] = Events::trigger('before_layout', $eventname); /** * 레이아웃을 정의합니다 */ $page_title = $this->cbconfig->item('site_meta_title_currentvisitor'); $meta_description = $this->cbconfig->item('site_meta_description_currentvisitor'); $meta_keywords = $this->cbconfig->item('site_meta_keywords_currentvisitor'); $meta_author = $this->cbconfig->item('site_meta_author_currentvisitor'); $page_name = $this->cbconfig->item('site_page_name_currentvisitor'); $searchconfig = array('{현재접속자수}'); $replaceconfig = array($result['total_rows']); $page_title = str_replace($searchconfig, $replaceconfig, $page_title); $meta_description = str_replace($searchconfig, $replaceconfig, $meta_description); $meta_keywords = str_replace($searchconfig, $replaceconfig, $meta_keywords); $meta_author = str_replace($searchconfig, $replaceconfig, $meta_author); $page_name = str_replace($searchconfig, $replaceconfig, $page_name); $layoutconfig = array('path' => 'currentvisitor', 'layout' => 'layout', 'skin' => 'currentvisitor', 'layout_dir' => $this->cbconfig->item('layout_currentvisitor'), 'mobile_layout_dir' => $this->cbconfig->item('mobile_layout_currentvisitor'), 'use_sidebar' => $this->cbconfig->item('sidebar_currentvisitor'), 'use_mobile_sidebar' => $this->cbconfig->item('mobile_sidebar_currentvisitor'), 'skin_dir' => $this->cbconfig->item('skin_currentvisitor'), 'mobile_skin_dir' => $this->cbconfig->item('mobile_skin_currentvisitor'), 'page_title' => $page_title, 'meta_description' => $meta_description, 'meta_keywords' => $meta_keywords, 'meta_author' => $meta_author, 'page_name' => $page_name); $view['layout'] = $this->managelayout->front($layoutconfig, $this->cbconfig->get_device_view_type()); $this->data = $view; $this->layout = element('layout_skin_file', element('layout', $view)); $this->view = element('view_skin_file', element('layout', $view)); }
if (empty($action)) { $design_head .= '<script type="text/javascript" src="inc/AJAX/ajax_suggest.js"></script>' . "\n"; # $design_head .= '<script type="text/javascript"> document.forms[\'barfield\'].ware.focus(); </script>'; # $design_head .= '<link href="modules/kiosk/suggest.css" rel="stylesheet" type="text/css" />'; $content .= "<table>"; $content .= "<tr><td colspan=2>"; $content .= "<form method='POST' action='?module=kiosk&action=addWare' name='barfield'>\n"; $content .= "<input type=text name='ware' id='ware' tabindex=1 onkeyup=\"suggest();\" autocomplete=\"off\"/>"; $content .= "<div id='suggest'></div>"; $content .= "<input type=submit value='" . lang("Add", "kiosk") . "'>\n"; $content .= "</form>\n\n"; $content .= "<script type='text/javascript' language='javascript'>document.forms['barfield'].elements['ware'].focus()</script>\n"; $content .= "</td><td>"; if ($sessioninfo->kioskSaleTo > 1) { $content .= _("Currently selling to:"); $content .= " " . display_username($sessioninfo->kioskSaleTo); $content .= "<form method=POST action='?module=kiosk&action=addWare' name='resetSaleTo'>\n"; $content .= "<input type='hidden' name='ware' value='UID1'>"; $content .= "<input type=submit value='" . _("Remove user") . "'>"; $content .= "</form>\n"; } // End kioskSaleTo $content .= "</td></tr>"; $content .= "<tr><td>"; $content .= "<table border=1>"; $qFindBasket = db_query("SELECT * FROM " . $sql_prefix . "_kiosk_shopbasket WHERE sID = '{$sessioninfo->sID}'"); while ($rFindBasket = db_fetch($qFindBasket)) { $content .= "<tr><td>"; $qFindWare = db_query("SELECT * FROM " . $sql_prefix . "_kiosk_wares WHERE ID = '{$rFindBasket->wareID}'"); $rFindWare = db_fetch($qFindWare); $content .= $rFindWare->name;
/** * * @package mahara * @subpackage core * @author Catalyst IT Ltd * @license http://www.gnu.org/copyleft/gpl.html GNU GPL version 3 or later * @copyright For copyright information on Mahara, please see the README file distributed with this software. * */ define('INTERNAL', 1); define('MENUITEM', 'settings/preferences'); require dirname(dirname(__FILE__)) . '/init.php'; define('TITLE', get_string('deleteaccount', 'account')); require_once 'pieforms/pieform.php'; if (!$USER->can_delete_self()) { throw new AccessDeniedException(get_string('accessdenied', 'error')); } $deleteform = pieform(array('name' => 'account_delete', 'plugintype' => 'core', 'pluginname' => 'account', 'elements' => array('submit' => array('type' => 'submit', 'value' => get_string('deleteaccount', 'mahara', display_username($USER), full_name($USER)))))); function account_delete_submit(Pieform $form, $values) { global $SESSION, $USER; $userid = $USER->get('id'); $USER->logout(); delete_user($userid); $SESSION->add_ok_msg(get_string('accountdeleted', 'account')); redirect('/index.php'); } $smarty = smarty(); $smarty->assign('form', $deleteform); $smarty->display('account/delete.tpl');
$qListAvgScore = db_query("SELECT ROUND(AVG(approval), 0) AS approval FROM " . $sql_prefix . "_wannabeComment WHERE crewID = '{$crewlist[$i]}' AND userID = '{$rListApplications->userID}'"); $rListAvgScore = db_fetch($qListAvgScore); $content .= "<td class=wannabeCommentStyle" . $rListAvgScore->approval . ">"; $content .= "</td>\n"; } // End for $content .= "</tr>\n\n\n"; } // End while rListApplications } $content .= "</table>"; } elseif ($action == "viewApplication" && !empty($_GET['user'])) { // Add CSS for this action $design_head .= '<link href="templates/shared/wannabe.css" rel="stylesheet" type="text/css">'; $user = $_GET['user']; $content .= "<h2>" . lang("Application from:", "wannabeadmin") . " " . display_username($user) . "</h2>"; $content .= "<a href=\"?module=wannabeadmin&action=listApplications\">" . lang("Back to list", "wannabeadmin") . "</a>"; $content .= "<table>"; // Add information about the user $qFindUser = db_query("SELECT * FROM " . $sql_prefix . "_users WHERE ID = '" . db_escape($user) . "'"); $rFindUser = db_fetch($qFindUser); $content .= "<tr><td>" . lang("Name", "wannabeadmin") . "</td><td>{$rFindUser->firstName} {$rFindUser->lastName}</td></tr>\n"; $content .= "<tr><td>" . lang("Birthday", "wannabeadmin") . "</td><td>{$rFindUser->birthDay} / {$rFindUser->birthMonth} {$rFindUser->birthYear} </td></tr>\n"; $content .= "<tr><td>" . lang("Address", "wannabeadmin") . "</td><td>{$rFindUser->street} {$rFindUser->postNumber} </td></tr>\n"; // Add information about what crews the user wants $content .= "<tr><th>" . lang("Crew", "wannabeadmin") . "</th><th>" . lang("Response", "wannabeadmin") . "</th></tr>"; $qListCrewResponses = db_query("SELECT crew.crewname,\n\t\t(SELECT response FROM " . $sql_prefix . "_wannabeCrewResponse\n\t\t\tWHERE userID = '" . db_escape($user) . "' AND crewID=crew.ID) AS response\n\t\tFROM " . $sql_prefix . "_wannabeCrews crew WHERE eventID = {$eventID}"); $rListCrewResponseLoopCount = 1; while ($rListCrewResponses = db_fetch($qListCrewResponses)) { $content .= "<tr class='wannabeCrewResponse" . $rListCrewResponseLoopCount . "'><td>"; $content .= $rListCrewResponses->crewname;
/** * 상세 페이지입니다 */ public function view($cmt_id = 0) { // 이벤트 라이브러리를 로딩합니다 $eventname = 'event_admin_board_trash_comment_view'; $this->load->event($eventname); $view = array(); $view['view'] = array(); // 이벤트가 존재하면 실행합니다 $view['view']['event']['before'] = Events::trigger('before', $eventname); $cmt_id = (int) $cmt_id; if (empty($cmt_id) or $cmt_id < 1) { show_404(); } $param =& $this->querystring; $result = $this->{$this->modelname}->get_one($cmt_id); $result['meta'] = $this->Comment_meta_model->get_all_meta($cmt_id); if (!element('cmt_id', $result)) { show_404(); } if (element('cmt_del', $result) !== '2') { show_404(); } $result['cmt_display_name'] = display_username(element('cmt_userid', $result), element('cmt_nickname', $result)); $select = 'mem_id, mem_userid, mem_nickname, mem_icon'; $result['member'] = $dbmember = $this->Member_model->get_by_memid($result['meta']['trash_mem_id'], $select); $result['display_name'] = display_username(element('mem_userid', $dbmember), element('mem_nickname', $dbmember), element('mem_icon', $dbmember)); $result['post'] = $post = $this->Post_model->get_one(element('post_id', $result)); $result['board'] = $board = $this->board->item_all($post['brd_id']); if ($board) { $result['boardurl'] = board_url(element('brd_key', $board)); $result['posturl'] = post_url(element('brd_key', $board), element('post_id', $result) . '#comment_id=' . element('cmt_id', $result)); } $result['content'] = display_html_content($result['cmt_content'], $result['cmt_html'], element('post_image_width', $board)); $view['view']['data'] = $result; $view['view']['delete_url'] = admin_url($this->pagedir . '/delete/' . $cmt_id . '?' . $param->output()); $view['view']['recover_url'] = admin_url($this->pagedir . '/recover/' . $cmt_id . '?' . $param->output()); // 이벤트가 존재하면 실행합니다 $view['view']['event']['before_layout'] = Events::trigger('before_layout', $eventname); /** * 어드민 레이아웃을 정의합니다 */ $layoutconfig = array('layout' => 'layout', 'skin' => 'view'); $view['layout'] = $this->managelayout->admin($layoutconfig, $this->cbconfig->get_device_view_type()); $this->data = $view; $this->layout = element('layout_skin_file', element('layout', $view)); $this->view = element('view_skin_file', element('layout', $view)); }
/** * 목록을 가져오는 메소드입니다 */ public function index() { // 이벤트 라이브러리를 로딩합니다 $eventname = 'event_admin_board_post_index'; $this->load->event($eventname); $view = array(); $view['view'] = array(); // 이벤트가 존재하면 실행합니다 $view['view']['event']['before'] = Events::trigger('before', $eventname); /** * 페이지에 숫자가 아닌 문자가 입력되거나 1보다 작은 숫자가 입력되면 에러 페이지를 보여줍니다. */ $param =& $this->querystring; $page = (int) $this->input->get('page') > 0 ? (int) $this->input->get('page') : 1; $findex = 'post_id'; $forder = 'desc'; $sfield = $this->input->get('sfield', null, ''); $skeyword = $this->input->get('skeyword', null, ''); $per_page = admin_listnum(); $offset = ($page - 1) * $per_page; /** * 게시판 목록에 필요한 정보를 가져옵니다. */ $this->{$this->modelname}->allow_search_field = array('post_id', 'post_title', 'post_content', 'mem_id', 'post_username', 'post_nickname', 'post_email', 'post_homepage', 'post_datetime', 'post_ip', 'post_device'); // 검색이 가능한 필드 $this->{$this->modelname}->search_field_equal = array('post_id', 'mem_id'); // 검색중 like 가 아닌 = 검색을 하는 필드 $this->{$this->modelname}->allow_order_field = array('post_id'); // 정렬이 가능한 필드 $where = array('post_del <>' => 2); if ($brdid = (int) $this->input->get('brd_id')) { $where['brd_id'] = $brdid; } $result = $this->{$this->modelname}->get_admin_list($per_page, $offset, $where, '', $findex, $forder, $sfield, $skeyword); $list_num = $result['total_rows'] - ($page - 1) * $per_page; if (element('list', $result)) { foreach (element('list', $result) as $key => $val) { $result['list'][$key]['post_display_name'] = display_username(element('post_userid', $val), element('post_nickname', $val)); $result['list'][$key]['board'] = $board = $this->board->item_all(element('brd_id', $val)); $result['list'][$key]['num'] = $list_num--; if ($board) { $result['list'][$key]['baordurl'] = board_url(element('brd_key', $board)); $result['list'][$key]['posturl'] = post_url(element('brd_key', $board), element('post_id', $val)); } $result['list'][$key]['category'] = ''; if (element('post_category', $val)) { $result['list'][$key]['category'] = $this->Board_category_model->get_category_info(element('brd_id', $val), element('post_category', $val)); } if (element('post_image', $val)) { $imagewhere = array('post_id' => element('post_id', $val), 'pfi_is_image' => 1); $file = $this->Post_file_model->get_one('', '', $imagewhere, '', '', 'pfi_id', 'ASC'); $result['list'][$key]['thumb_url'] = thumb_url('post', element('pfi_filename', $file), 80); } else { $result['list'][$key]['thumb_url'] = get_post_image_url(element('post_content', $val), 80); } } } $view['view']['data'] = $result; $select = 'brd_id, brd_name'; $view['view']['boardlist'] = $this->Board_model->get_board_list(); /** * primary key 정보를 저장합니다 */ $view['view']['primary_key'] = $this->{$this->modelname}->primary_key; /** * 페이지네이션을 생성합니다 */ $config['base_url'] = admin_url($this->pagedir) . '?' . $param->replace('page'); $config['total_rows'] = $result['total_rows']; $config['per_page'] = $per_page; $this->pagination->initialize($config); $view['view']['paging'] = $this->pagination->create_links(); $view['view']['page'] = $page; /** * 쓰기 주소, 삭제 주소등 필요한 주소를 구합니다 */ $search_option = array('post_title' => '제목', 'post_content' => '내용', 'post_username' => '실명', 'post_nickname' => '닉네임', 'post_email' => '이메일', 'post_homepage' => '홈페이지', 'post_datetime' => '작성일', 'post_ip' => 'IP'); $view['view']['skeyword'] = $sfield && array_key_exists($sfield, $search_option) ? $skeyword : ''; $view['view']['search_option'] = search_option($search_option, $sfield); $view['view']['listall_url'] = admin_url($this->pagedir); $view['view']['list_delete_url'] = admin_url($this->pagedir . '/listdelete/?' . $param->output()); $view['view']['list_trash_url'] = admin_url($this->pagedir . '/listtrash/?' . $param->output()); // 이벤트가 존재하면 실행합니다 $view['view']['event']['before_layout'] = Events::trigger('before_layout', $eventname); /** * 어드민 레이아웃을 정의합니다 */ $layoutconfig = array('layout' => 'layout', 'skin' => 'index'); $view['layout'] = $this->managelayout->admin($layoutconfig, $this->cbconfig->get_device_view_type()); $this->data = $view; $this->layout = element('layout_skin_file', element('layout', $view)); $this->view = element('view_skin_file', element('layout', $view)); }
/** * Returns a list of search results for the admin user search interface. * * The constraints parameter takes an array of arrays, like so: * $params = array( * array( * 'field' => 'institution' * 'string' => 'mahara' * 'type' => 'equals' * ), * ... * ) * * Each constraint should has these three keys: * field: Should be a column in the usr table, or the special field "duplicateemails" (which indicates only users with a non-unique email). * also, for the field "institution", a string value of "mahara" indicates users with no institution * string: The value to compare the contents of that field against * type: The operation by which to compare "field" to "string". This can be any of the operations in PluginSearchInternal::match_expression * (starts, equals, notequals, greaterthan, greaterthanequal, lessthan, lessthanequal, contains, or in) * * @param string $query_string The string to search for * @param array $constraints A list of constraints on the search results (see above for format) * @param int $offset * @param int $limit * @param string $sortfield Which of the output columns to sort by * @param string $sortdir DESC or ASC */ public static function admin_search_user($query_string, $constraints, $offset, $limit, $sortfield, $sortdir) { $sort = 'TRUE'; if (preg_match('/^[a-zA-Z_0-9"]+$/', $sortfield)) { $sort = $sortfield; if (strtoupper($sortdir) != 'DESC') { $sort .= ' ASC'; } else { $sort .= ' DESC'; } } $join = ''; $where = 'WHERE u.id <> 0 AND u.deleted = 0'; $values = array(); // Get the correct keyword for case insensitive LIKE $ilike = db_ilike(); // Generate the part that matches the search term $querydata = self::split_query_string(strtolower(trim($query_string))); $matches = array(); foreach (array('firstname', 'lastname', 'preferredname', 'username', 'email') as $f) { $matches[] = self::match_user_field_expression($f, 'u'); } $termsql = join(" OR ", $matches); $values = array(); foreach ($querydata as $term) { $where .= ' AND ( ' . $termsql . ' )'; $values = array_pad($values, count($values) + 5, $term); } $firstcols = 'u.id'; if (!empty($constraints)) { foreach ($constraints as $f) { if ($f['field'] == 'institution') { if ($f['string'] == 'mahara') { $where .= ' AND u.id NOT IN (SELECT usr FROM {usr_institution})'; } else { $where .= ' AND u.id IN ( SELECT usr FROM {usr_institution} WHERE institution ' . PluginSearchInternal::match_expression($f['type'], $f['string'], $values, $ilike) . ' )'; } } else { if ($f['field'] == 'duplicateemail') { if (!empty($f['string'])) { $where .= ' AND u.id IN ( SELECT owner FROM {artefact} WHERE id IN (' . join(',', array_map('db_quote', $f['string'])) . ') )'; } else { // No duplicate email is found, return empty list $where .= ' AND FALSE'; } } else { if ($f['field'] == 'exportqueue') { $firstcols = 'e.id AS eid, (SELECT case WHEN e.starttime IS NOT NULL THEN ' . db_format_tsfield('e.starttime', false) . ' ELSE ' . db_format_tsfield('e.ctime', false) . ' END) AS status, ' . $firstcols; $join .= 'JOIN {export_queue} e ON e.usr = u.id '; $where .= ' AND u.id' . PluginSearchInternal::match_expression($f['type'], $f['string'], $values, $ilike); } else { if ($f['field'] == 'archivesubmissions') { $firstcols = 'e.id AS eid, a.group, (SELECT name FROM {group} WHERE id = a.group) AS submittedto, (SELECT case WHEN a.externalid IS NOT NULL THEN a.externalid ELSE CAST(e.id AS char) END) AS specialid, e.filetitle, e.filename, e.filepath, ' . db_format_tsfield('e.ctime', 'archivectime') . ', ' . $firstcols; $join .= 'JOIN {export_archive} e ON e.usr = u.id '; $join .= 'JOIN {archived_submissions} a ON a.archiveid = e.id '; $where .= ' AND u.id' . PluginSearchInternal::match_expression($f['type'], $f['string'], $values, $ilike); } else { $where .= ' AND u.' . $f['field'] . PluginSearchInternal::match_expression($f['type'], $f['string'], $values, $ilike); } } } } } } $count = get_field_sql('SELECT COUNT(*) FROM {usr} u ' . $join . $where, $values); if ($count > 0) { $data = get_records_sql_assoc(' SELECT ' . $firstcols . ', u.firstname, u.lastname, u.preferredname, u.username, u.email, u.staff, u.profileicon, u.lastlogin, u.active, NOT u.suspendedcusr IS NULL as suspended, au.instancename AS authname FROM {usr} u INNER JOIN {auth_instance} au ON u.authinstance = au.id ' . $join . $where . ' ORDER BY ' . $sort . ', u.id', $values, $offset, $limit); if ($data) { $inst = get_records_select_array('usr_institution', 'usr IN (' . join(',', array_keys($data)) . ')', null, '', 'usr,institution'); if ($inst) { foreach ($inst as $i) { $data[$i->usr]->institutions[] = $i->institution; } } foreach ($data as &$item) { $item->username = display_username($item); $item = (array) $item; } $data = array_values($data); } } else { $data = false; } return array('count' => $count, 'limit' => $limit, 'offset' => $offset, 'data' => $data); }
} $content .= "<h2>" . _("Search for new user") . "</h2>\n"; $content .= "<form method=\"POST\" action=\"?module=arrival&action=changeuser&ticket={$ticket}\">\n"; $content .= "<input type=\"text\" name=\"query\" value=\"" . ($query ? $query : "") . "\">\n"; $content .= "<input type=\"submit\" value=\"" . _("Search") . "\">\n"; $content .= "</form>\n"; if ($query) { $search = db_escape($query); $qFindUser = db_query("SELECT ID FROM " . $sql_prefix . "_users\n\t\t\tWHERE nick LIKE '%{$search}%'\n\t\t\tOR firstName LIKE '%{$search}%'\n\t\t\tOR lastName LIKE '%{$search}%'\n\t\t"); if (db_num($qFindUser) > 30) { $content .= lang("Found to many users matching, please specify", "arrival"); } else { $content .= "<ul>"; while ($rFindUser = db_fetch($qFindUser)) { $content .= "<li><a href=?module=arrival&action=changeuser&ticket={$ticket}&toUser={$rFindUser->ID}>"; $content .= display_username($rFindUser->ID); $content .= "</a></li>"; } // End while rFindUser $content .= '</ul>'; } // End else (db_num()) } } elseif ($action == "marknotpaid" && isset($_GET['ticket'])) { $ticket = $_GET['ticket']; if ($acl_ticket != 'Write' and $acl_ticket != 'Admin') { die("No access to ticket"); } $qFindTicket = db_query("SELECT * FROM " . $sql_prefix . "_tickets WHERE ticketID = '" . db_escape($ticket) . "'"); $rFindTicket = db_fetch($qFindTicket); $qFindTicketType = db_query("SELECT * FROM " . $sql_prefix . "_ticketTypes WHERE ticketTypeID = '{$rFindTicket->ticketType}'");
/** * 목록을 가져오는 메소드입니다 */ public function index() { // 이벤트 라이브러리를 로딩합니다 $eventname = 'event_admin_board_like_index'; $this->load->event($eventname); $view = array(); $view['view'] = array(); // 이벤트가 존재하면 실행합니다 $view['view']['event']['before'] = Events::trigger('before', $eventname); /** * 페이지에 숫자가 아닌 문자가 입력되거나 1보다 작은 숫자가 입력되면 에러 페이지를 보여줍니다. */ $param =& $this->querystring; $page = (int) $this->input->get('page') > 0 ? (int) $this->input->get('page') : 1; $findex = $this->input->get('findex') ? $this->input->get('findex') : $this->{$this->modelname}->primary_key; $forder = $this->input->get('forder', null, 'desc'); $sfield = $this->input->get('sfield', null, ''); $skeyword = $this->input->get('skeyword', null, ''); $per_page = admin_listnum(); $offset = ($page - 1) * $per_page; /** * 게시판 목록에 필요한 정보를 가져옵니다. */ $this->{$this->modelname}->allow_search_field = array('lik_id', 'target_id', 'target_type', 'post_id', 'like.mem_id', 'target_mem_id', 'lik_type', 'lik_datetime', 'lik_ip'); // 검색이 가능한 필드 $this->{$this->modelname}->search_field_equal = array('lik_id', 'target_id', 'target_type', 'post_id', 'like.mem_id', 'target_mem_id', 'lik_type'); // 검색중 like 가 아닌 = 검색을 하는 필드 $this->{$this->modelname}->allow_order_field = array('lik_id'); // 정렬이 가능한 필드 $where = array(); if ($brdid = (int) $this->input->get('brd_id')) { $where['like.brd_id'] = $brdid; } if ($this->input->get('target_type')) { $where['like.target_type'] = $this->input->get('target_type'); } $result = $this->{$this->modelname}->get_admin_list($per_page, $offset, $where, '', $findex, $forder, $sfield, $skeyword); $list_num = $result['total_rows'] - ($page - 1) * $per_page; if (element('list', $result)) { foreach (element('list', $result) as $key => $val) { $result['list'][$key]['display_name'] = display_username(element('mem_userid', $val), element('mem_nickname', $val), element('mem_icon', $val)); $result['list'][$key]['target_member'] = $target_member = $this->Member_model->get_by_memid(element('target_mem_id', $val), 'mem_id, mem_userid, mem_nickname, mem_icon'); $result['list'][$key]['target_display_name'] = display_username(element('mem_userid', $target_member), element('mem_nickname', $target_member), element('mem_icon', $target_member)); $result['list'][$key]['num'] = $list_num--; if (element('target_type', $val) === '1') { $result['list'][$key]['target_name'] = '원글'; $result['list'][$key]['post'] = $post = $this->Post_model->get_one(element('target_id', $val), 'post_id, brd_id, post_title'); if ($post) { $result['list'][$key]['board'] = $board = $this->board->item_all(element('brd_id', $post)); $result['list'][$key]['origin_content'] = element('post_title', $post); $result['list'][$key]['posturl'] = post_url(element('brd_key', $board), element('post_id', $post)); } } elseif (element('target_type', $val) === '2') { $result['list'][$key]['target_name'] = '댓글'; $result['list'][$key]['comment'] = $comment = $this->Comment_model->get_one(element('target_id', $val), 'cmt_id, post_id, cmt_content'); if ($comment) { $result['list'][$key]['post'] = $post = $this->Post_model->get_one(element('post_id', $comment)); $result['list'][$key]['origin_content'] = cut_str(element('cmt_content', $comment), 40); if ($post) { $result['list'][$key]['board'] = $board = $this->board->item_all(element('brd_id', $post)); $result['list'][$key]['posturl'] = post_url(element('brd_key', $board), element('post_id', $post)) . '#comment_id=' . element('cmt_id', $comment); } } } if (element('lik_type', $val) === '1') { $result['list'][$key]['like_or_dislike'] = '<span class="label label-success">추천</span>'; } elseif (element('lik_type', $val) === '2') { $result['list'][$key]['like_or_dislike'] = '<span class="label label-warning">비추</span>'; } } } $view['view']['data'] = $result; $view['view']['boardlist'] = $this->Board_model->get_board_list(); /** * primary key 정보를 저장합니다 */ $view['view']['primary_key'] = $this->{$this->modelname}->primary_key; /** * 페이지네이션을 생성합니다 */ $config['base_url'] = admin_url($this->pagedir) . '?' . $param->replace('page'); $config['total_rows'] = $result['total_rows']; $config['per_page'] = $per_page; $this->pagination->initialize($config); $view['view']['paging'] = $this->pagination->create_links(); $view['view']['page'] = $page; /** * 쓰기 주소, 삭제 주소등 필요한 주소를 구합니다 */ $search_option = array('lik_datetime' => '날짜', 'lik_ip' => 'IP'); $view['view']['skeyword'] = $sfield && array_key_exists($sfield, $search_option) ? $skeyword : ''; $view['view']['search_option'] = search_option($search_option, $sfield); $view['view']['listall_url'] = admin_url($this->pagedir); $view['view']['list_delete_url'] = admin_url($this->pagedir . '/listdelete/?' . $param->output()); // 이벤트가 존재하면 실행합니다 $view['view']['event']['before_layout'] = Events::trigger('before_layout', $eventname); /** * 어드민 레이아웃을 정의합니다 */ $layoutconfig = array('layout' => 'layout', 'skin' => 'index'); $view['layout'] = $this->managelayout->admin($layoutconfig, $this->cbconfig->get_device_view_type()); $this->data = $view; $this->layout = element('layout_skin_file', element('layout', $view)); $this->view = element('view_skin_file', element('layout', $view)); }
while ($rFindOwner = db_fetch($qFindOwner)) { $content .= "<li><a href=?module=ticketorder&action=doChangeOwner&ticket={$ticket}&toOwner={$rFindOwner->ID}>"; $content .= display_username($rFindOwner->ID); $content .= "</a></li>"; } // End while rFindOwner } // End else (db_num()) } // End if action== FindOwner } elseif ($rDisplayTickets->owner == $sessioninfo->userID && empty($action)) { $content .= "<a href=?module=ticketorder&action=changeOwner&ticket={$rDisplayTickets->ticketID}>"; $content .= display_username($rDisplayTickets->owner); $content .= "</a>"; } else { $content .= display_username($rDisplayTickets->owner); } $content .= "</td><td>"; if ($rDisplayTickets->paid == 'no' && !in_array($rCheckTicketType->type, array('onsite-visitor', 'onsite-computer'))) { $content .= "<a href=\"?module=ticketorder&action=cancelTicket&ticket={$rDisplayTickets->ticketID}\">"; $content .= lang("Cancel ticket", "ticketorder"); $content .= "</a>"; } elseif ($rDisplayTickets->paid == 'yes') { $content .= lang("Paid", "ticketorder"); } $content .= "</td></tr>"; } // End while $content .= "</table>"; } // End if(db_num != 0);
/** * 목록을 가져오는 메소드입니다 */ public function index() { // 이벤트 라이브러리를 로딩합니다 $eventname = 'event_admin_page_faq_index'; $this->load->event($eventname); $view = array(); $view['view'] = array(); // 이벤트가 존재하면 실행합니다 $view['view']['event']['before'] = Events::trigger('before', $eventname); /** * 페이지에 숫자가 아닌 문자가 입력되거나 1보다 작은 숫자가 입력되면 에러 페이지를 보여줍니다. */ $param =& $this->querystring; $page = (int) $this->input->get('page') > 0 ? (int) $this->input->get('page') : 1; $view['view']['sort'] = array('faq_id' => $param->sort('faq_id', 'asc'), 'faq_title' => $param->sort('faq_title', 'asc'), 'faq_order' => $param->sort('faq_order', 'asc'), 'faq_datetime' => $param->sort('faq_datetime', 'asc')); $findex = $this->input->get('findex', null, 'faq_order'); $forder = $this->input->get('forder', null, 'asc'); $sfield = $this->input->get('sfield', null, ''); $skeyword = $this->input->get('skeyword', null, ''); $fgr_id = $this->input->get('fgr_id', null, ''); $per_page = admin_listnum(); $offset = ($page - 1) * $per_page; $where = array(); if ($fgr_id) { $where = array('fgr_id' => $fgr_id); } /** * 게시판 목록에 필요한 정보를 가져옵니다. */ $this->{$this->modelname}->allow_search_field = array('faq_id', 'fgr_id', 'faq_title', 'faq_content', 'faq_mobile_content', 'faq_datetime', 'faq.mem_id'); // 검색이 가능한 필드 $this->{$this->modelname}->search_field_equal = array('faq_id', 'fgr_id', 'faq.mem_id'); // 검색중 like 가 아닌 = 검색을 하는 필드 $this->{$this->modelname}->allow_order_field = array('faq_id', 'faq_title', 'faq_order', 'faq_datetime'); // 정렬이 가능한 필드 $result = $this->{$this->modelname}->get_admin_list($per_page, $offset, $where, '', $findex, $forder, $sfield, $skeyword); if (element('list', $result)) { foreach (element('list', $result) as $key => $val) { $result['list'][$key]['display_name'] = display_username(element('mem_userid', $val), element('mem_nickname', $val), element('mem_icon', $val)); $result['list'][$key]['faqgroup'] = $this->Faq_group_model->get_one(element('fgr_id', $val)); } } $view['view']['data'] = $result; /** * primary key 정보를 저장합니다 */ $view['view']['primary_key'] = $this->{$this->modelname}->primary_key; /** * 페이지네이션을 생성합니다 */ $config['base_url'] = admin_url($this->pagedir) . '?' . $param->replace('page'); $config['total_rows'] = $result['total_rows']; $config['per_page'] = $per_page; $this->pagination->initialize($config); $view['view']['paging'] = $this->pagination->create_links(); $view['view']['page'] = $page; /** * 쓰기 주소, 삭제 주소등 필요한 주소를 구합니다 */ $search_option = array('faq_title' => '제목', 'faq_content' => '내용', 'faq_mobile_content' => '모바일내용', 'faq_datetime' => '날짜'); $view['view']['skeyword'] = $sfield && array_key_exists($sfield, $search_option) ? $skeyword : ''; $view['view']['search_option'] = search_option($search_option, $sfield); $view['view']['listall_url'] = admin_url('page/faqgroup'); $view['view']['write_url'] = admin_url($this->pagedir . '/write?fgr_id=' . $fgr_id); $view['view']['list_delete_url'] = admin_url($this->pagedir . '/listdelete/?' . $param->output()); // 이벤트가 존재하면 실행합니다 $view['view']['event']['before_layout'] = Events::trigger('before_layout', $eventname); /** * 어드민 레이아웃을 정의합니다 */ $layoutconfig = array('layout' => 'layout', 'skin' => 'index'); $view['layout'] = $this->managelayout->admin($layoutconfig, $this->cbconfig->get_device_view_type()); $this->data = $view; $this->layout = element('layout_skin_file', element('layout', $view)); $this->view = element('view_skin_file', element('layout', $view)); }
/** * 최근 댓글을 가져옵니다 */ public function latest_comment($config) { $view = array(); $view['view'] = array(); $this->CI->load->model(array('Comment_model')); $skin = element('skin', $config); $brd_id = element('brd_id', $config); $brd_key = element('brd_key', $config); $exclude_brd_id = element('exclude_brd_id', $config); $exclude_brd_key = element('exclude_brd_key', $config); $findex = element('findex', $config) ? element('findex', $config) : 'cmt_id'; $forder = element('forder', $config) ? element('forder', $config) : 'DESC'; $limit = element('limit', $config); $length = element('length', $config); $period_second = element('period_second', $config); $cache_minute = element('cache_minute', $config); if ($limit <= 0) { return false; } if ($cache_minute > 0) { $cache_brd_id = is_array($brd_id) ? implode('-', $brd_id) : $brd_id; $cache_brd_key = is_array($brd_key) ? implode('-', $brd_key) : $brd_key; $cache_exclude_brd_id = is_array($exclude_brd_id) ? implode('-', $exclude_brd_id) : $exclude_brd_id; $cache_exclude_brd_key = is_array($exclude_brd_key) ? implode('-', $exclude_brd_key) : $exclude_brd_key; $cachename = 'latest-comment-s-' . $skin . '-i-' . $cache_brd_id . '-k-' . $cache_brd_key . '-l-' . $cache_exclude_brd_id . '-k-' . $cache_exclude_brd_key . '-l-' . $limit . '-t-' . $length . '-p-' . $period_second; $html = $this->CI->cache->get($cachename); if ($html) { return $html; } } if (empty($skin)) { $skin = 'basic'; } $view['view']['config'] = $config; $view['view']['length'] = $length; if ($brd_key) { if (is_array($brd_key)) { foreach ($brd_key as $v) { $brd_id[] = $this->CI->board->item_key('brd_id', $v); } } else { $brd_id = $this->CI->board->item_key('brd_id', $brd_key); } } if ($exclude_brd_key) { if (is_array($exclude_brd_key)) { foreach ($exclude_brd_key as $v) { $exclude_brd_id[] = $this->CI->board->item_key('brd_id', $v); } } else { $exclude_brd_id = $this->CI->board->item_key('brd_id', $exclude_brd_key); } } if ($brd_id && !is_array($brd_id)) { $view['view']['board'] = $this->CI->board->item_all($brd_id); } $where = array(); $where['cmt_del'] = 0; $where['cmt_secret'] = 0; $where['post_secret'] = 0; $where['post_del'] = 0; $this->CI->db->from('comment'); $this->CI->db->join('post', 'post.post_id=comment.post_id', 'inner'); $this->CI->db->where($where); if ($brd_id) { if (is_array($brd_id)) { $this->CI->db->group_start(); foreach ($brd_id as $v) { $this->CI->db->or_where('comment.brd_id', $v); } $this->CI->db->group_end(); } else { $this->CI->db->where('comment.brd_id', $brd_id); } } if ($exclude_brd_id) { if (is_array($exclude_brd_id)) { foreach ($exclude_brd_id as $v) { $this->CI->db->where('comment.brd_id <>', $v); } } else { $this->CI->db->where('comment.brd_id <>', $exclude_brd_id); } } if ($period_second) { $comment_start_datetime = cdate('Y-m-d H:i:s', ctimestamp() - $period_second); $this->CI->db->where('cmt_datetime >=', $comment_start_datetime); } if ($findex && $forder) { $forder = strtoupper($forder) === 'ASC' ? 'ASC' : 'DESC'; $this->CI->db->order_by($findex, $forder); } if (is_numeric($limit)) { $this->CI->db->limit($limit); } $result = $this->CI->db->get(); $view['view']['latest'] = $latest = $result->result_array(); $view['view']['latest_limit'] = $limit; if ($latest && is_array($latest)) { foreach ($latest as $key => $value) { $view['view']['latest'][$key]['name'] = display_username(element('cmt_userid', $value), element('cmt_nickname', $value)); $brd_key = $this->CI->board->item_id('brd_key', element('brd_id', $value)); $view['view']['latest'][$key]['url'] = post_url($brd_key, element('post_id', $value)) . '#comment_' . element('cmt_id', $value); $view['view']['latest'][$key]['title'] = $length ? cut_str(element('cmt_content', $value), $length) : element('cmt_content', $value); $view['view']['latest'][$key]['display_datetime'] = display_datetime(element('cmt_datetime', $value), ''); } } $view['view']['skinurl'] = base_url(VIEW_DIR . 'latest/' . $skin); $html = $this->CI->load->view('latest/' . $skin . '/latest', $view, true); if ($cache_minute > 0) { $this->CI->cache->save($cachename, $html, $cache_minute); } return $html; }
/** * 게시판 목록페이지입니다. */ public function _get_list($brd_key, $from_view = '') { // 이벤트 라이브러리를 로딩합니다 $eventname = 'event_board_post_get_list'; $this->load->event($eventname); $view = array(); $view['view'] = array(); // 이벤트가 존재하면 실행합니다 $view['view']['event']['before'] = Events::trigger('before', $eventname); $return = array(); $board = $this->_get_board($brd_key); $mem_id = (int) $this->member->item('mem_id'); $alertmessage = $this->member->is_member() ? '회원님은 이 게시판 목록을 볼 수 있는 권한이 없습니다' : '비회원은 이 게시판에 접근할 권한이 없습니다.\\n\\n회원이시라면 로그인 후 이용해 보십시오'; $check = array('group_id' => element('bgr_id', $board), 'board_id' => element('brd_id', $board)); $this->accesslevel->check(element('access_list', $board), element('access_list_level', $board), element('access_list_group', $board), $alertmessage, $check); if (element('use_personal', $board) && $this->member->is_member() === false) { alert('이 게시판은 1:1 게시판입니다. 비회원은 접근할 수 없습니다'); return false; } $skindir = $this->cbconfig->get_device_view_type() === 'mobile' ? element('board_mobile_skin', $board) ? element('board_mobile_skin', $board) : element('board_skin', $board) : element('board_skin', $board); $skinurl = base_url(VIEW_DIR . 'board/' . $skindir); $view['view']['is_admin'] = $is_admin = $this->member->is_admin(array('board_id' => element('brd_id', $board), 'group_id' => element('bgr_id', $board))); /** * 페이지에 숫자가 아닌 문자가 입력되거나 1보다 작은 숫자가 입력되면 에러 페이지를 보여줍니다. */ $param =& $this->querystring; $page = (int) $this->input->get('page') > 0 ? (int) $this->input->get('page') : 1; $order_by_field = element('order_by_field', $board) ? element('order_by_field', $board) : 'post_num, post_reply'; $findex = $this->input->get('findex', null, $order_by_field); $sfield = $sfieldchk = $this->input->get('sfield', null, ''); if ($sfield === 'post_both') { $sfield = array('post_title', 'post_content'); } $skeyword = $this->input->get('skeyword', null, ''); if ($this->cbconfig->get_device_view_type() === 'mobile') { $per_page = element('mobile_list_count', $board) ? (int) element('mobile_list_count', $board) : 10; } else { $per_page = element('list_count', $board) ? (int) element('list_count', $board) : 20; } $offset = ($page - 1) * $per_page; $this->Post_model->allow_search_field = array('post_id', 'post_title', 'post_content', 'post_both', 'post_category', 'post_userid', 'post_nickname'); // 검색이 가능한 필드 $this->Post_model->search_field_equal = array('post_id', 'post_userid', 'post_nickname'); // 검색중 like 가 아닌 = 검색을 하는 필드 // 이벤트가 존재하면 실행합니다 $view['view']['event']['step1'] = Events::trigger('step1', $eventname); /** * 상단에 공지사항 부분에 필요한 정보를 가져옵니다. */ $except_all_notice = false; if (element('except_all_notice', $board) && $this->cbconfig->get_device_view_type() !== 'mobile') { $except_all_notice = true; } if (element('mobile_except_all_notice', $board) && $this->cbconfig->get_device_view_type() === 'mobile') { $except_all_notice = true; } $use_sideview = $this->cbconfig->get_device_view_type() === 'mobile' ? element('use_mobile_sideview', $board) : element('use_sideview', $board); $list_date_style = $this->cbconfig->get_device_view_type() === 'mobile' ? element('mobile_list_date_style', $board) : element('list_date_style', $board); $list_date_style_manual = $this->cbconfig->get_device_view_type() === 'mobile' ? element('mobile_list_date_style_manual', $board) : element('list_date_style_manual', $board); if (element('use_gallery_list', $board)) { $this->load->model('Post_file_model'); $board['gallery_cols'] = $gallery_cols = $this->cbconfig->get_device_view_type() === 'mobile' ? element('mobile_gallery_cols', $board) : element('gallery_cols', $board); $board['gallery_image_width'] = $gallery_image_width = $this->cbconfig->get_device_view_type() === 'mobile' ? element('mobile_gallery_image_width', $board) : element('gallery_image_width', $board); $board['gallery_image_height'] = $gallery_image_height = $this->cbconfig->get_device_view_type() === 'mobile' ? element('mobile_gallery_image_height', $board) : element('gallery_image_height', $board); $board['gallery_percent'] = floor(102 / $board['gallery_cols']) - 2; } if (element('use_category', $board)) { $this->load->model('Board_category_model'); $board['category'] = $this->Board_category_model->get_all_category(element('brd_id', $board)); } $noticeresult = $this->Post_model->get_notice_list(element('brd_id', $board), $except_all_notice, $sfield, $skeyword); if ($noticeresult) { foreach ($noticeresult as $key => $val) { $notice_brd_key = $this->board->item_id('brd_key', element('brd_id', $val)); $noticeresult[$key]['post_url'] = post_url($notice_brd_key, element('post_id', $val)); $noticeresult[$key]['meta'] = $meta = $this->Post_meta_model->get_all_meta(element('post_id', $val)); if ($this->cbconfig->get_device_view_type() === 'mobile') { $noticeresult[$key]['title'] = element('mobile_subject_length', $board) ? cut_str(element('post_title', $val), element('mobile_subject_length', $board)) : element('post_title', $val); } else { $noticeresult[$key]['title'] = element('subject_length', $board) ? cut_str(element('post_title', $val), element('subject_length', $board)) : element('post_title', $val); } if (element('post_del', $val)) { $noticeresult[$key]['title'] = '게시물이 삭제 되었습니다'; } $noticeresult[$key]['display_name'] = display_username(element('post_userid', $val), element('post_nickname', $val), element('mem_icon', $val), $use_sideview ? 'Y' : 'N'); $noticeresult[$key]['display_datetime'] = display_datetime(element('post_datetime', $val), $list_date_style, $list_date_style_manual); $noticeresult[$key]['category'] = ''; if (element('use_category', $board) && element('post_category', $val)) { $noticeresult[$key]['category'] = $this->Board_category_model->get_category_info(element('brd_id', $val), element('post_category', $val)); } if ($param->output()) { $noticeresult[$key]['post_url'] .= '?' . $param->output(); } $noticeresult[$key]['is_mobile'] = element('post_device', $val) === 'mobile' ? true : false; } } /** * 게시판 목록에 필요한 정보를 가져옵니다. */ $where = array('brd_id' => $this->board->item_key('brd_id', $brd_key)); $where['post_del <>'] = 2; if (element('except_notice', $board) && $this->cbconfig->get_device_view_type() !== 'mobile') { $where['post_notice'] = 0; } if (element('mobile_except_notice', $board) && $this->cbconfig->get_device_view_type() === 'mobile') { $where['post_notice'] = 0; } if (element('use_personal', $board) && $is_admin === false) { $where['post.mem_id'] = $mem_id; } $category_id = (int) $this->input->get('category_id'); if (empty($category_id) or $category < 1) { $category_id = ''; } $result = $this->Post_model->get_post_list($per_page, $offset, $where, $category_id, $findex, $sfield, $skeyword); $list_num = $result['total_rows'] - ($page - 1) * $per_page; if (element('list', $result)) { foreach (element('list', $result) as $key => $val) { $result['list'][$key]['post_url'] = post_url(element('brd_key', $board), element('post_id', $val)); $result['list'][$key]['meta'] = $meta = $this->Post_meta_model->get_all_meta(element('post_id', $val)); if ($this->cbconfig->get_device_view_type() === 'mobile') { $result['list'][$key]['title'] = element('mobile_subject_length', $board) ? cut_str(element('post_title', $val), element('mobile_subject_length', $board)) : element('post_title', $val); } else { $result['list'][$key]['title'] = element('subject_length', $board) ? cut_str(element('post_title', $val), element('subject_length', $board)) : element('post_title', $val); } if (element('post_del', $val)) { $result['list'][$key]['title'] = '게시물이 삭제 되었습니다'; } $is_blind = element('blame_blind_count', $board) > 0 && element('post_blame', $val) >= element('blame_blind_count', $board) ? true : false; if ($is_blind) { $result['list'][$key]['title'] = '신고가 접수된 게시글입니다.'; } $result['list'][$key]['display_name'] = display_username(element('post_userid', $val), element('post_nickname', $val), element('mem_icon', $val), $use_sideview ? 'Y' : 'N'); $result['list'][$key]['display_datetime'] = display_datetime(element('post_datetime', $val), $list_date_style, $list_date_style_manual); $result['list'][$key]['category'] = ''; if (element('use_category', $board) && element('post_category', $val)) { $result['list'][$key]['category'] = $this->Board_category_model->get_category_info(element('brd_id', $val), element('post_category', $val)); } if ($param->output()) { $result['list'][$key]['post_url'] .= '?' . $param->output(); } $result['list'][$key]['num'] = $list_num--; $result['list'][$key]['is_hot'] = false; $hot_icon_day = $this->cbconfig->get_device_view_type() === 'mobile' ? element('mobile_hot_icon_day', $board) : element('hot_icon_day', $board); $hot_icon_hit = $this->cbconfig->get_device_view_type() === 'mobile' ? element('mobile_hot_icon_hit', $board) : element('hot_icon_hit', $board); if ($hot_icon_day && ctimestamp() - strtotime(element('post_datetime', $val)) <= $hot_icon_day * 86400) { if ($hot_icon_hit && $hot_icon_hit <= element('post_hit', $val)) { $result['list'][$key]['is_hot'] = true; } } $result['list'][$key]['is_new'] = false; $new_icon_hour = $this->cbconfig->get_device_view_type() === 'mobile' ? element('mobile_new_icon_hour', $board) : element('new_icon_hour', $board); if ($new_icon_hour && ctimestamp() - strtotime(element('post_datetime', $val)) <= $new_icon_hour * 3600) { $result['list'][$key]['is_new'] = true; } $result['list'][$key]['is_mobile'] = element('post_device', $val) === 'mobile' ? true : false; $result['list'][$key]['thumb_url'] = ''; $result['list'][$key]['origin_image_url'] = ''; if (element('use_gallery_list', $board)) { if (element('post_image', $val)) { $filewhere = array('post_id' => element('post_id', $val), 'pfi_is_image' => 1); $file = $this->Post_file_model->get_one('', '', $filewhere, '', '', 'pfi_id', 'ASC'); $result['list'][$key]['thumb_url'] = thumb_url('post', element('pfi_filename', $file), $gallery_image_width, $gallery_image_height); $result['list'][$key]['origin_image_url'] = thumb_url('post', element('pfi_filename', $file)); } else { $thumb_url = get_post_image_url(element('post_content', $val), $gallery_image_width, $gallery_image_height); $result['list'][$key]['thumb_url'] = $thumb_url ? $thumb_url : thumb_url('', '', $gallery_image_width, $gallery_image_height); $result['list'][$key]['origin_image_url'] = $thumb_url; } } } } $return['data'] = $result; $return['notice_list'] = $noticeresult; if (empty($from_view)) { $board['headercontent'] = $this->cbconfig->get_device_view_type() === 'mobile' ? element('mobile_header_content', $board) : element('header_content', $board); } $board['footercontent'] = $this->cbconfig->get_device_view_type() === 'mobile' ? element('mobile_footer_content', $board) : element('footer_content', $board); $board['cat_display_style'] = $this->cbconfig->get_device_view_type() === 'mobile' ? element('mobile_category_display_style', $board) : element('category_display_style', $board); $return['board'] = $board; $return['point_info'] = ''; if ($this->cbconfig->item('use_point') && element('use_point', $board) && element('use_point_info', $board)) { $point_info = ''; if (element('point_write', $board)) { $point_info .= '원글작성 : ' . element('point_write', $board) . '<br />'; } if (element('point_comment', $board)) { $point_info .= '댓글작성 : ' . element('point_comment', $board) . '<br />'; } if (element('point_fileupload', $board)) { $point_info .= '파일업로드 : ' . element('point_fileupload', $board) . '<br />'; } if (element('point_filedownload', $board)) { $point_info .= '파일다운로드 : ' . element('point_filedownload', $board) . '<br />'; } if (element('point_filedownload_uploader', $board)) { $point_info .= '파일다운로드시업로더에게 : ' . element('point_filedownload_uploader', $board) . '<br />'; } if (element('point_read', $board)) { $point_info .= '게시글조회 : ' . element('point_read', $board) . '<br />'; } if (element('point_post_like', $board)) { $point_info .= '원글추천함 : ' . element('point_post_like', $board) . '<br />'; } if (element('point_post_dislike', $board)) { $point_info .= '원글비추천함 : ' . element('point_post_dislike', $board) . '<br />'; } if (element('point_post_liked', $board)) { $point_info .= '원글추천받음 : ' . element('point_post_liked', $board) . '<br />'; } if (element('point_post_disliked', $board)) { $point_info .= '원글비추천받음 : ' . element('point_post_disliked', $board) . '<br />'; } if (element('point_comment_like', $board)) { $point_info .= '댓글추천함 : ' . element('point_comment_like', $board) . '<br />'; } if (element('point_comment_dislike', $board)) { $point_info .= '댓글비추천함 : ' . element('point_comment_dislike', $board) . '<br />'; } if (element('point_comment_liked', $board)) { $point_info .= '댓글추천받음 : ' . element('point_comment_liked', $board) . '<br />'; } if (element('point_comment_disliked', $board)) { $point_info .= '댓글비추천받음 : ' . element('point_comment_disliked', $board) . '<br />'; } $return['point_info'] = $point_info; } // 이벤트가 존재하면 실행합니다 $view['view']['event']['step2'] = Events::trigger('step2', $eventname); /** * primary key 정보를 저장합니다 */ $return['primary_key'] = $this->Post_model->primary_key; $highlight_keyword = ''; if ($skeyword) { if (!$this->session->userdata('skeyword_' . $skeyword)) { $sfieldarray = array('post_title', 'post_content', 'post_both'); if (in_array($sfieldchk, $sfieldarray)) { $this->load->model('Search_keyword_model'); $searchinsert = array('sek_keyword' => $skeyword, 'sek_datetime' => cdate('Y-m-d H:i:s'), 'sek_ip' => $this->input->ip_address(), 'mem_id' => $mem_id); $this->Search_keyword_model->insert($searchinsert); $this->session->set_userdata('skeyword_' . $skeyword, 1); } } $key_explode = explode(' ', $skeyword); if ($key_explode) { foreach ($key_explode as $seval) { if ($highlight_keyword) { $highlight_keyword .= ','; } $highlight_keyword .= '\'' . html_escape($seval) . '\''; } } } $return['highlight_keyword'] = $highlight_keyword; /** * 페이지네이션을 생성합니다 */ $config['base_url'] = board_url($brd_key) . '?' . $param->replace('page'); $config['total_rows'] = $result['total_rows']; $config['per_page'] = $per_page; if ($this->cbconfig->get_device_view_type() === 'mobile') { $config['num_links'] = element('mobile_page_count', $board) ? element('mobile_page_count', $board) : 3; } else { $config['num_links'] = element('page_count', $board) ? element('page_count', $board) : 5; } $this->pagination->initialize($config); $return['paging'] = $this->pagination->create_links(); $return['page'] = $page; /** * 쓰기 주소, 삭제 주소등 필요한 주소를 구합니다 */ $search_option = array('post_title' => '제목', 'post_content' => '내용'); $return['search_option'] = search_option($search_option, $sfield); if ($skeyword) { $return['list_url'] = board_url(element('brd_key', $board)); $return['search_list_url'] = board_url(element('brd_key', $board) . '?' . $param->output()); } else { $return['list_url'] = board_url(element('brd_key', $board) . '?' . $param->output()); $return['search_list_url'] = ''; } $check = array('group_id' => element('bgr_id', $board), 'board_id' => element('brd_id', $board)); $can_write = $this->accesslevel->is_accessable(element('access_write', $board), element('access_write_level', $board), element('access_write_group', $board), $check); $return['write_url'] = ''; if ($can_write === true) { $return['write_url'] = write_url($brd_key); } elseif ($this->cbconfig->get_device_view_type() !== 'mobile' && element('always_show_write_button', $board)) { $return['write_url'] = 'javascript:alert(\'비회원은 글쓰기 권한이 없습니다.\\n\\n회원이시라면 로그인 후 이용해 보십시오.\');'; } elseif ($this->cbconfig->get_device_view_type() === 'mobile' && element('mobile_always_show_write_button', $board)) { $return['write_url'] = 'javascript:alert(\'비회원은 글쓰기 권한이 없습니다.\\n\\n회원이시라면 로그인 후 이용해 보십시오.\');'; } $return['list_delete_url'] = site_url('postact/listdelete/' . $brd_key . '?' . $param->output()); return $return; }
/** * 목록을 가져오는 메소드입니다 */ public function index() { // 이벤트 라이브러리를 로딩합니다 $eventname = 'event_admin_stat_registerlog_index'; $this->load->event($eventname); $view = array(); $view['view'] = array(); // 이벤트가 존재하면 실행합니다 $view['view']['event']['before'] = Events::trigger('before', $eventname); /** * 페이지에 숫자가 아닌 문자가 입력되거나 1보다 작은 숫자가 입력되면 에러 페이지를 보여줍니다. */ $param =& $this->querystring; $page = (int) $this->input->get('page') > 0 ? (int) $this->input->get('page') : 1; $findex = $this->input->get('findex') ? $this->input->get('findex') : $this->{$this->modelname}->primary_key; $forder = $this->input->get('forder', null, 'desc'); $sfield = $this->input->get('sfield', null, ''); $skeyword = $this->input->get('skeyword', null, ''); $per_page = admin_listnum(); $offset = ($page - 1) * $per_page; /** * 게시판 목록에 필요한 정보를 가져옵니다. */ $this->{$this->modelname}->allow_search_field = array('mrg_id', 'member_register.mem_id', 'mrg_ip', 'mrg_datetime', 'mrg_recommend_mem_id', 'mrg_useragent', 'mrg_referer'); // 검색이 가능한 필드 $this->{$this->modelname}->search_field_equal = array('mrg_id', 'member_register.mem_id', 'mrg_recommend_mem_id'); // 검색중 like 가 아닌 = 검색을 하는 필드 $this->{$this->modelname}->allow_order_field = array('mrg_id'); // 정렬이 가능한 필드 $result = $this->{$this->modelname}->get_admin_list($per_page, $offset, '', '', $findex, $forder, $sfield, $skeyword); $list_num = $result['total_rows'] - ($page - 1) * $per_page; if (element('list', $result)) { foreach (element('list', $result) as $key => $val) { $result['list'][$key]['display_name'] = display_username(element('mem_userid', $val), element('mem_nickname', $val), element('mem_icon', $val)); if (element('mrg_recommend_mem_id', $val)) { $result['list'][$key]['recommend'] = $recommend = $this->Member_model->get_by_memid(element('mrg_recommend_mem_id', $val), 'mem_id, mem_userid, mem_nickname, mem_icon'); $result['list'][$key]['recommend_display_name'] = display_username(element('mem_userid', $recommend), element('mem_nickname', $recommend), element('mem_icon', $recommend)); } if (element('mrg_useragent', $val)) { $userAgent = get_useragent_info(element('mrg_useragent', $val)); $result['list'][$key]['browsername'] = $userAgent['browsername']; $result['list'][$key]['browserversion'] = $userAgent['browserversion']; $result['list'][$key]['os'] = $userAgent['os']; $result['list'][$key]['engine'] = $userAgent['engine']; } $result['list'][$key]['num'] = $list_num--; } } $view['view']['data'] = $result; /** * primary key 정보를 저장합니다 */ $view['view']['primary_key'] = $this->{$this->modelname}->primary_key; /** * 페이지네이션을 생성합니다 */ $config['base_url'] = admin_url($this->pagedir) . '?' . $param->replace('page'); $config['total_rows'] = $result['total_rows']; $config['per_page'] = $per_page; $this->pagination->initialize($config); $view['view']['paging'] = $this->pagination->create_links(); $view['view']['page'] = $page; /** * 쓰기 주소, 삭제 주소등 필요한 주소를 구합니다 */ $search_option = array('mrg_ip' => '아이피', 'mrg_datetime' => '날짜', 'mrg_useragent' => '운영체제/브라우저', 'mrg_referer' => '접속경로'); $view['view']['skeyword'] = $sfield && array_key_exists($sfield, $search_option) ? $skeyword : ''; $view['view']['search_option'] = search_option($search_option, $sfield); $view['view']['listall_url'] = admin_url($this->pagedir); // 이벤트가 존재하면 실행합니다 $view['view']['event']['before_layout'] = Events::trigger('before_layout', $eventname); /** * 어드민 레이아웃을 정의합니다 */ $layoutconfig = array('layout' => 'layout', 'skin' => 'index'); $view['layout'] = $this->managelayout->admin($layoutconfig, $this->cbconfig->get_device_view_type()); $this->data = $view; $this->layout = element('layout_skin_file', element('layout', $view)); $this->view = element('view_skin_file', element('layout', $view)); }
/** * 목록을 가져오는 메소드입니다 */ public function index() { // 이벤트 라이브러리를 로딩합니다 $eventname = 'event_admin_board_fileupload_index'; $this->load->event($eventname); $view = array(); $view['view'] = array(); // 이벤트가 존재하면 실행합니다 $view['view']['event']['before'] = Events::trigger('before', $eventname); /** * 페이지에 숫자가 아닌 문자가 입력되거나 1보다 작은 숫자가 입력되면 에러 페이지를 보여줍니다. */ $param =& $this->querystring; $page = (int) $this->input->get('page') > 0 ? (int) $this->input->get('page') : 1; $view['view']['sort'] = array('pfi_id' => $param->sort('pfi_id', 'asc'), 'pfi_filesize' => $param->sort('pfi_filesize', 'asc'), 'pfi_download' => $param->sort('pfi_download', 'asc'), 'pfi_datetime' => $param->sort('pfi_datetime', 'asc')); $findex = $this->input->get('findex') ? $this->input->get('findex') : $this->{$this->modelname}->primary_key; $forder = $this->input->get('forder', null, 'desc'); $sfield = $this->input->get('sfield', null, ''); $skeyword = $this->input->get('skeyword', null, ''); $per_page = admin_listnum(); $offset = ($page - 1) * $per_page; /** * 게시판 목록에 필요한 정보를 가져옵니다. */ $this->{$this->modelname}->allow_search_field = array('pfi_id', 'post.post_id', 'post.mem_id', 'pfi_originname', 'pfi_filename', 'pfi_datetime', 'pfi_ip'); // 검색이 가능한 필드 $this->{$this->modelname}->search_field_equal = array('pfi_id', 'post.post_id', 'post.mem_id'); // 검색중 like 가 아닌 = 검색을 하는 필드 $this->{$this->modelname}->allow_order_field = array('pfi_id', 'pfi_filesize', 'pfi_download', 'pfi_datetime'); // 정렬이 가능한 필드 $where = array(); if ($brdid = (int) $this->input->get('brd_id')) { $where['post.brd_id'] = $brdid; } $result = $this->{$this->modelname}->get_admin_list($per_page, $offset, $where, '', $findex, $forder, $sfield, $skeyword); $list_num = $result['total_rows'] - ($page - 1) * $per_page; if (element('list', $result)) { foreach (element('list', $result) as $key => $val) { $result['list'][$key]['post_display_name'] = display_username(element('post_userid', $val), element('post_nickname', $val)); $brd_key = $this->board->item_id('brd_key', element('brd_id', $val)); $result['list'][$key]['posturl'] = post_url($brd_key, element('post_id', $val)); $result['list'][$key]['download_link'] = admin_url($this->pagedir . '/download/' . element('pfi_id', $val)); if (element('pfi_is_image', $val)) { $result['list'][$key]['origin_image_url'] = thumb_url('post', element('pfi_filename', $val)); $result['list'][$key]['thumb_url'] = thumb_url('post', element('pfi_filename', $val), '80'); } $result['list'][$key]['board'] = $board = $this->board->item_all(element('brd_id', $val)); if ($board) { $result['list'][$key]['baordurl'] = board_url(element('brd_key', $board)); } $result['list'][$key]['num'] = $list_num--; } } $view['view']['data'] = $result; $view['view']['boardlist'] = $this->Board_model->get_board_list(); /** * primary key 정보를 저장합니다 */ $view['view']['primary_key'] = $this->{$this->modelname}->primary_key; /** * 페이지네이션을 생성합니다 */ $config['base_url'] = admin_url($this->pagedir) . '?' . $param->replace('page'); $config['total_rows'] = $result['total_rows']; $config['per_page'] = $per_page; $this->pagination->initialize($config); $view['view']['paging'] = $this->pagination->create_links(); $view['view']['page'] = $page; /** * 쓰기 주소, 삭제 주소등 필요한 주소를 구합니다 */ $search_option = array('pfi_originname' => '파일명', 'pfi_datetime' => '올린날짜', 'pfi_ip' => 'IP'); $view['view']['skeyword'] = $sfield && array_key_exists($sfield, $search_option) ? $skeyword : ''; $view['view']['search_option'] = search_option($search_option, $sfield); $view['view']['listall_url'] = admin_url($this->pagedir); $view['view']['list_delete_url'] = admin_url($this->pagedir . '/listdelete/?' . $param->output()); // 이벤트가 존재하면 실행합니다 $view['view']['event']['before_layout'] = Events::trigger('before_layout', $eventname); /** * 어드민 레이아웃을 정의합니다 */ $layoutconfig = array('layout' => 'layout', 'skin' => 'index'); $view['layout'] = $this->managelayout->admin($layoutconfig, $this->cbconfig->get_device_view_type()); $this->data = $view; $this->layout = element('layout_skin_file', element('layout', $view)); $this->view = element('view_skin_file', element('layout', $view)); }
if (is_array($posts) && sizeof($posts) > 0) { $content = '<ul class="elgg-list">'; foreach ($posts as $post) { $featured = ''; if ($post->is_featured()) { $featured_icon = elgg_view('output/img', array('src' => elgg_get_simplecache_url('amapnews/icon/featured.png'), 'alt' => elgg_echo('amapnews:featured'))); $featured = elgg_format_element('div', array('style' => "float:right;"), $featured_icon); } $content .= "<li class=\"pvs\">"; $owner = $post->getOwnerEntity(); if (display_user_icon()) { $owner_icon = elgg_view_entity_icon($owner, 'small'); } else { $owner_icon = ''; } if (display_username()) { $owner_link = elgg_view('output/url', array('href' => "amapnews/owner/{$owner->username}", 'text' => $owner->name, 'is_trusted' => true)); $author_text = elgg_echo('byline', array($owner_link)); } else { $author_text = ''; } $date = elgg_view_friendly_time($post->time_created); $subtitle = "{$author_text} {$date} {$featured}"; $subtitle .= '<br />' . $post->excerpt; $params = array('entity' => $post, 'subtitle' => $subtitle); $params = $params + $vars; $list_body = elgg_view('object/elements/summary', $params); $content .= elgg_view_image_block($owner_icon, $list_body); $content .= "</li>"; } $content .= "</ul>";