public function events() { admin_only(); $event_model = D('Events'); //从session中读取搜索条件 if (isset($_SESSION['admin_events_condition'])) { $admin_events_condition = $_SESSION['admin_events_condition']; unset($admin_events_condition['p']); } else { $admin_events_condition = array('type' => 'all', 'check' => 'all'); } //用传入的搜索条件覆盖现有的搜索条件 //XXX: sql injection prevention relies on PHP settings. see get_magic_quotes_gpc() foreach ($_GET as $key => $value) { $admin_events_condition[$key] = $value; } if ($_GET['q'] == 'all') { $admin_events_condition['q'] = ''; } //保存搜索条件 $_SESSION['admin_events_condition'] = $admin_events_condition; extract($admin_events_condition); //筛选 $where_clause = array(); if ($type != 'all') { $where_clause['type'] = $type; } if ($check == 'deleted') { $where_clause['enabled'] = 0; } else { if ($check == 'pending') { $where_clause['is_checked'] = 0; $where_clause['enabled'] = 1; } else { if ($check == 'checked') { $where_clause['is_checked'] = 1; $where_clause['enabled'] = 1; } } } if (!empty($q)) { $where_clause['name'] = array('like', "%{$q}%"); } import("ORG.Util.TBPage"); $listRows = C('ADMIN_ROW_LIST'); $event_count = $event_model->where($where_clause)->count(); $Page = new TBPage($event_count, $listRows); $event_result = $event_model->where($where_clause)->order('create_time desc')->limit($Page->firstRow . ',' . $listRows)->select(); //fetch user name for each event $user_ids = array(); foreach ($event_result as $e) { $user_ids[$e['user_id']] = 1; } $user_model = new UsersModel(); $related_users = $user_model->query("select id,name from users where id in (" . implode(',', array_keys($user_ids)) . ")"); foreach ($related_users as $r) { $user_ids[$r['id']] = $r['name']; } for ($i = 0; $i < count($event_result); $i++) { $event_result[$i]['creator_name'] = $user_ids[$event_result[$i]['user_id']]; } $page_bar = $Page->show(); $this->assign('q', $q); $this->assign('check', $check); $this->assign('type', $type); $this->assign('event_result', $event_result); $this->assign('page', $page_bar); $this->display(); }