public function preview($id) { $user_model = new UsersModel(); $medal_model = new MedalModel(); $user = $user_model->find($id); $medals = $medal_model->select_by_userid($id); if ($user) { $this->assign('medals', $medals); $this->assign('user', $user); $this->display(); } }
public function query_map($param) { $users_where = array(); $events_where = array(); // $param = san($param); if (!empty($param['where'])) { $users_where[] = $events_where[] = $param['where']; } $users_where[] = "type != 'ind'"; if (!empty($param['type'])) { if ($param['type'] == 'excsr' || $param['type'] == 'csr') { //special case #1: ind events belongs to csr $users_where[] = "type='csr'"; $events_where[] = "(type='csr' or type='ind')"; } else { if ($param['type'] == 'csr') { $users_where[] = $events_where[] = "type='csr'"; } else { if ($param['type'] == 'exngo' || $param['type'] == 'ngo') { //special case #2: fund belongs to extended ngo concept $users_where[] = $events_where[] = "(type='ngo' or type='fund')"; } else { $users_where[] = $events_where[] = "type='" . $param['type'] . "'"; } } } } //领域限制 if (!empty($param['field'])) { $events_where[] = "item_field like '%" . $param['field'] . "%'"; $users_where[] = "work_field like '%" . $param['field'] . "%'"; } //省份限制 if (!empty($param['province'])) { $users_where[] = $events_where[] = "province like '%" . $param['province'] . "%'"; } if (!empty($param['medal_name'])) { $users_where[] = "medals like '%" . x($param['medal_name']) . "%'"; } if (!empty($param['medal'])) { $medal_model = new MedalModel(); $user_ids = $medal_model->select_user_ids_by_medal_id($param['medal']); $events_where[] = "user_id in (" . implode(',', $user_ids) . ")"; $users_where[] = "id in (" . implode(',', $user_ids) . ")"; } //资源标签限制 if (!empty($param['res_tags'])) { $events_where[] = "res_tags like '%" . $param['res_tag'] . "%'"; } if (!empty($param['res_tags2'])) { $events_where[] = "res_tags like '%" . $param['res_tag2'] . "%'"; } if (!empty($param['key'])) { $events_where[] = "(name like '%" . $param['key'] . "%' or description like '%" . $param['key'] . "%')"; $users_where[] = "(name like '%" . $param['key'] . "%' or introduction like '%" . $param['key'] . "%')"; } if (!empty($param['start_lon'])) { $events_where[] = "longitude > " . $param['start_lon']; $users_where[] = "longitude > " . $param['start_lon']; } if (!empty($param['end_lon'])) { $events_where[] = "longitude < " . $param['end_lon']; $users_where[] = "longitude < " . $param['end_lon']; } if (!empty($param['start_lat'])) { $events_where[] = "latitude > " . $param['start_lat']; $users_where[] = "latitude > " . $param['start_lat']; } if (!empty($param['end_lat'])) { $events_where[] = "latitude < " . $param['end_lat']; $users_where[] = "latitude < " . $param['end_lat']; } //进度限制 if (!empty($param['progress'])) { $today = date('Y-m-d'); switch ($param['progress']) { case 'planning': $events_where[] = "events.begin_time>'{$today}'"; break; case 'running': $events_where[] = "events.begin_time<'{$today}' and events.end_time>'{$today}'"; break; case 'finished': $events_where[] = "events.end_time<'{$today}'"; break; case 'delayed': $events_where[] = "events.progress=1"; break; case 'failed': //尚未考虑拖延一定时间自动失败 $events_where[] = "events.progress=2"; break; case 'daily': $events_where[] = "events.progress=3"; break; } } // if it is not expert mode, only show checked items if (!isset($param['expert_mode'])) { $events_where[] = $users_where[] = 'is_checked=1'; } $events_where[] = $users_where[] = 'enabled=1'; $order = ""; if (!empty($param['order'])) { $order = ' order by ' . $param['order']; } if (isset($param['expert_mode'])) { $order = ' order by is_checked, create_time desc'; } $limit = ""; if (!empty($param['limit'])) { $limit = ' limit ' . $param['limit']; } $sql_list = array(); if (!empty($param['user_fields'])) { $sql_list[] = '(select ' . $param['user_fields'] . ' from users where ' . implode(" and ", $users_where) . ')'; } if (!empty($param['event_fields'])) { $sql_list[] = '(select ' . $param['event_fields'] . ' from events where ' . implode(" and ", $events_where) . ')'; } $sql = implode(' union ', $sql_list) . $order . $limit; $result = $this->query($sql); if (!$result) { $result = array(); } return $result; }
public function list_index() { $map_data_model = D('MapData'); $record_per_page = C('LIST_RECORD_PER_PAGE'); if (!isset($query_param)) { $query_param = array(); } if (isset($_GET['clear_all'])) { unset($_SESSION['list_queries']); $query_param = array(); } else { $query_param = $_SESSION['list_queries']; } foreach ($_GET as $k => $v) { if (isset($query_param[$k]) && $v === '0') { unset($query_param[$k]); } else { $query_param[$k] = $v; } } if (!isset($query_param['model'])) { $query_param['model'] = 'users'; } if (!isset($query_param['type'])) { $query_param['type'] = 'ngo'; } if (isset($query_param['province']) && $this->is_province_master($query_param['province'])) { $is_expert_mode = true; } else { $is_expert_mode = false; } $_SESSION['list_queries'] = $query_param; $user_fields = "*, 'users' model"; $event_fields = "*, 'events' model"; if (!empty($query_param['model'])) { if ($query_param['model'] == 'users') { $query_param['user_fields'] = $user_fields; } else { if ($query_param['model'] == 'events') { $query_param['event_fields'] = $event_fields; } } } else { $query_param['user_fields'] = $user_fields; $query_param['event_fields'] = $event_fields; } // export excel if (isset($_GET['export']) && $is_expert_mode) { $result = $map_data_model->query_map($query_param); if ($query_param['model'] == 'users') { $fields = array('name' => '名称', 'contact_name' => '联系人', 'public_email' => '电子邮箱', 'phone' => '联系电话', 'website' => '网站', 'city' => '所在城市', 'county' => '所在乡镇', 'place' => '地址', 'aim' => '机构使命', 'introduction' => '简介', 'work_field' => '服务领域', 'register_type' => '注册类型', 'register_year' => '注册年份', 'staff_fulltime' => '全职人数', 'staff_parttime' => '兼职人数', 'staff_volunteer' => '志愿者人数', 'financial_link' => '财务报告链接'); } else { if ($query_param['model'] == 'events') { $fields = array('name' => '名称', 'description' => '简介', 'contact_name' => '联系人', 'contact_email' => '电子邮箱', 'contact_phone' => '联系电话', 'contact_qq' => '联系qq', 'begin_time' => '开始时间', 'item_field' => '项目领域', 'city' => '所在城市', 'county' => '所在乡镇'); } } $this->output_excel($fields, $result); return; } if ($is_expert_mode) { // if expert mode, do display unchecked items $query_param['expert_mode'] = 1; } $total_number = $map_data_model->query_number($query_param); if (isset($_GET['p'])) { $page = $_GET['p']; } else { $page = 1; } $limit_start = ($page - 1) * $record_per_page; $query_param['limit'] = $limit_start . ',' . $record_per_page; if ($query_param['model'] == 'users') { $query_param['order'] = "medal_score desc, create_time desc"; } else { $query_param['order'] = "create_time desc"; } import("ORG.Util.TBPage"); $Page = new TBPage($total_number, $record_per_page); $page_bar = $Page->show(); $data = $map_data_model->query_map($query_param); $medal_model = new MedalModel(); $this->assign('medal_map', $medal_model->select_as_assoc_array()); $this->assign('pager', $page_bar); $this->assign('params', $query_param); $this->assign('page', $page); $this->assign('total_number', $total_number); $this->assign('result', $data); $this->assign('is_expert_mode', $is_expert_mode); $this->display(); }