public function get_ngo_network_data($ngo_id) { $user_model = new UsersModel(); $event_model = new EventsModel(); $ngo_id = intval($ngo_id); //defense against exploit //select the events of the user $events_of_user = $event_model->field('id,longitude,latitude')->where(array('user_id' => $ngo_id))->select(); $user = $user_model->find($ngo_id); //select the related ngo of the user $fields = explode(',', $user['work_field']); $sql = "select id,longitude,latitude, 0"; foreach ($fields as $field) { $sql .= "-10*if(work_field like '%{$field}%',1,0)"; } $sql .= " score from users where type='ngo' and is_checked=1 order by score limit 5"; $ngo_of_user = $this->query($sql); //select the related csr with the same work field with the user $sql = "select id,longitude,latitude, 0"; foreach ($fields as $field) { $sql .= "-10*if(item_field like '%{$field}%',1,0)"; } $sql .= " score from events where type='csr' and is_checked=1 order by score limit 5"; $csr_of_user = $this->query($sql); return array('events' => $events_of_user, 'related_user' => $ngo_of_user, 'related_csr' => $csr_of_user); }
function admin_action() { $model = new EventsModel(); $events = $model->get_all_events(false); $html = $this->render_template('application/view/templates/admin.php', array('events' => $events)); return $html; }
function edit_action($id) { $model = new EventsModel(); if (isset($_POST['save'])) { $model->edit_event($id); echo 'OK'; } else { $event = $model->get_event($id); $html = $this->render_template('application/view/templates/edit_event.php', array('event' => $event)); return $html; } //header('Location: ./admin'); }
public function home() { $event_model = new EventsModel(); $this->assign('event_count', $event_model->count_by_user(user('id'))); $this->display(); }
public function events_by_event($id, $type = 'ngo', $count = 6, $has_image = true) { $geo_weight = 10; $category_weight = 200; $event_model = new EventsModel(); $media_model = new MediaModel(); $event = $event_model->find($id); if (!$event) { return false; } $my_longitude = $event['longitude']; $my_latitude = $event['latitude']; $sql = "select id,name,longitude,latitude,description, {$geo_weight}*(abs(longitude-{$my_longitude})+abs(latitude-{$my_latitude})) score from events where type='{$type}' and longitude is not null order by score limit {$count}"; $result = $event_model->query($sql); if ($has_image) { for ($i = 0; $i < count($result); $i++) { $result[$i]['image'] = $media_model->where(array('event_id' => $result[$i]['id'], 'type' => image))->find(); } } return $result; }
public function insert() { $event_model = new EventsModel(); $error_message = ''; if (!$event_model->create()) { $error_message = '所填信息不完整'; } if (!user()) { $error_message = '请先登录'; } if (!check_model()) { flash('您提交的内容中可能有不合适的地方,请重新编辑'); } if ($error_message != '') { $this->assign('event', $_POST); $this->assign('target_url', 'insert'); flash($error_message); $this->display('add'); return; } if (!isset($_POST['type'])) { $event_model->type = user('type'); } // $event_model->type = user('type'); // if(user('is_admin') && isset($_POST['type'])){ // $event_model->type = $_POST['type']; // } // print_r($_POST);die(); // case: the admin want to assign this event to another person (rare) if ($_POST['creator'] && user('is_admin')) { } else { $event_model->user_id = user('id'); } $this_id = $event_model->add(); $event_model->create_tags($this_id); $event_model->create_image_records($this_id); $map_data_model = D('MapData'); $map_data_model->invalidate_tile($_POST['longitute'], $_POST['latitude']); flash('事件已成功添加'); $this->redirect('Event/view', array('id' => $this_id)); }