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');
 }
示例#4
0
 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));
 }