Esempio n. 1
0
 public function ical($params)
 {
     $this->setView('ical.php');
     $official = isset($params['official']);
     $group_name = isset($params['group']) ? $params['group'] : null;
     $event_model = new Event_Model();
     $events = $event_model->getUpcoming($group_name, $official, false);
     // Creation of the iCal content
     $cache_entry = 'ical-' . (isset($group_name) ? $group_name : '') . '-' . ($official ? 'official' : 'non-official');
     $content = Cache::read($cache_entry);
     if (!$content) {
         require_once APP_DIR . 'classes/class.iCalcreator.php';
         $cal = new vcalendar();
         $cal->setConfig('unique_id', $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']);
         $cal->setProperty('method', 'PUBLISH');
         $cal->setProperty('x-wr-calname', $official ? __('EVENTS_TITLE_OFFICIAL') : __('EVENTS_TITLE_NONOFFICIAL'));
         $cal->setProperty('X-WR-CALDESC', '');
         $cal->setProperty('X-WR-TIMEZONE', date('e'));
         foreach ($events as $event) {
             $vevent = new vevent();
             $vevent->setProperty('dtstart', array('year' => (int) date('Y', $event['date_start']), 'month' => (int) date('n', $event['date_start']), 'day' => (int) date('j', $event['date_start']), 'hour' => (int) date('G', $event['date_start']), 'min' => (int) date('i', $event['date_start']), 'sec' => (int) date('s', $event['date_start'])));
             $vevent->setProperty('dtend', array('year' => (int) date('Y', $event['date_end']), 'month' => (int) date('n', $event['date_end']), 'day' => (int) date('j', $event['date_end']), 'hour' => (int) date('G', $event['date_end']), 'min' => (int) date('i', $event['date_end']), 'sec' => (int) date('s', $event['date_end'])));
             $vevent->setProperty('summary', $event['title']);
             $vevent->setProperty('description', $event['message']);
             $cal->setComponent($vevent);
         }
         $content = $cal->createCalendar();
         Cache::write($cache_entry, $content, 2 * 3600);
     }
     $this->set('content', $content);
 }
Esempio n. 2
0
 /**
  * Show the profile of a group
  */
 public function view($params)
 {
     $this->setView('view.php');
     try {
         $group = $this->model->getInfoByName($params['group']);
         $this->set('group', $group);
     } catch (Exception $e) {
         throw new ActionException('Page', 'error404');
     }
     $this->setTitle(__('GROUP_TITLE', array('group' => htmlspecialchars($group['name']))));
     $is_logged = isset(User_Model::$auth_data);
     $is_student = $is_logged && isset(User_Model::$auth_data['student_number']);
     $is_admin = $is_logged && User_Model::$auth_data['admin'] == '1';
     $category = isset($params['category']) ? $params['category'] : null;
     $category_model = new Category_Model();
     $post_model = new Post_Model();
     $this->set(array('is_logged' => $is_logged, 'is_student' => $is_student, 'is_admin' => $is_admin, 'categories' => $category_model->getAll(), 'current_category' => $category, 'posts' => $post_model->getPosts(array('restricted' => true, 'group_id' => (int) $group['id'], 'category_name' => $category, 'official' => $is_logged ? null : true, 'show_private' => $is_student), Config::POST_DISPLAYED)));
     // Events
     $event_model = new Event_Model();
     $this->set(array('events' => $event_model->getByMonth((int) date('Y'), (int) date('n'), array('group_id' => (int) $group['id'], 'official' => $is_logged ? null : true, 'show_private' => $is_student)), 'calendar_month' => (int) date('n'), 'calendar_year' => (int) date('Y')));
     // If the user is logged
     if ($is_logged) {
         $this->set(array('username' => User_Model::$auth_data['username'], 'groups_auth' => Group_Model::getAuth()));
     }
     if ($is_student) {
         $this->set(array('firstname' => User_Model::$auth_data['firstname'], 'lastname' => User_Model::$auth_data['lastname'], 'avatar_url' => User_Model::$auth_data['avatar_url']));
     }
 }
Esempio n. 3
0
 public static function &instance()
 {
     if (!is_object(Event_Model::$instances)) {
         // Create a new instance
         Event_Model::$instances = new Event_Model();
     }
     return Event_Model::$instances;
 }
Esempio n. 4
0
 public function editevent($id)
 {
     $event = new Event_Model($id);
     $user = Auth::instance()->get_user();
     if ($event->loaded && $event->user->id == $user->id) {
         if ($post = $this->input->post()) {
             $validation = new Validation($post);
             $validation->add_rules('title', 'required')->add_rules('location', 'required')->add_rules('start_date', 'required')->add_rules('end_date', 'required')->add_rules('tipul', 'required');
             $event->validate($validation, true);
             url::redirect('day/' . date('Y-m-d', strtotime($event->start_date)));
         }
         $this->template->content = new View('calendar/editevent');
         $this->template->content->event = $event;
         $this->template->title = 'Edit event ' . $event->title;
     } else {
         // add not found thingie;
     }
 }
 public function render_events_joined()
 {
     if (is_user_logged_in()) {
         require_once WPPR_PLUGIN_DIR . '/models/event-model.php';
         $model = new Event_Model();
         $events = array();
         $user_id = get_current_user_id();
         $events_joined = $model->get_events_joined($user_id);
         foreach ($events_joined as $event) {
             $events[] = $event->event_id;
         }
         $this->events_joined = $events;
         require_once dirname(__DIR__) . '/views/events-joined.php';
     } else {
         //redirect to login page
         PR_Membership::pr_redirect(home_url());
     }
 }
Esempio n. 6
0
 /**
  * 
  * 格式化活动状态
  * @param int $start_time
  * @param int $end_time
  */
 private function _check_event_status($start_time, $end_time, $status, $eid, $deadline = 0, $update = true)
 {
     $now = time();
     $current_status = $status;
     if ($now <= $deadline) {
         $current_status = 1;
     } elseif ($now > $deadline) {
         $current_status = 2;
         if ($end_time && $now > $end_time) {
             $current_status = 3;
         }
     }
     if ($update && $status != $current_status) {
         $this->model->update($eid, array('status' => $current_status));
     }
     return $current_status;
 }
Esempio n. 7
0
 public function events($params)
 {
     $this->setView('events.php');
     $is_logged = isset(User_Model::$auth_data);
     $is_student = $is_logged && isset(User_Model::$auth_data['student_number']);
     $is_admin = $is_logged && User_Model::$auth_data['admin'] == '1';
     // Group
     if (isset($params['group'])) {
         try {
             $group_model = new Group_Model();
             $group = $group_model->getInfoByName($params['group']);
             $this->set('group', $group);
         } catch (Exception $e) {
             throw new ActionException('Page', 'error404');
         }
     }
     $year = (int) $params['year'];
     $month = (int) $params['month'];
     $day = isset($params['day']) ? (int) $params['day'] : null;
     $event_model = new Event_Model();
     $events = $event_model->getByMonth($year, $month, array('group_id' => isset($group) ? $group['id'] : null, 'official' => $is_logged ? null : true, 'show_private' => $is_student));
     $post_ids = array();
     if (isset($day)) {
         $day_time = mktime(0, 0, 0, $month, $day, $year);
         for ($j = 0; $j < count($events); $j++) {
             $event =& $events[$j];
             if ($event['date_start'] >= $day_time && $event['date_start'] <= $day_time + 86400 - 1 || $event['date_end'] >= $day_time && $event['date_end'] <= $day_time + 86400 - 1 && !(date('H', $event['date_end']) < 12 && date('Y-m-d', $event['date_end']) != date('Y-m-d', $event['date_start']))) {
                 $post_ids[] = (int) $event['post_id'];
             }
         }
     } else {
         foreach ($events as &$event) {
             $post_ids[] = (int) $event['post_id'];
         }
     }
     $this->setTitle((isset($group) ? $group['name'] . ' - ' : '') . (isset($day_time) ? Date::dateMonth($day_time) : Date::getMonthByNum($month) . ' ' . $year));
     $this->set(array('is_logged' => $is_logged, 'is_student' => $is_student, 'is_admin' => $is_admin, 'groups_auth' => $is_logged ? Group_Model::getAuth() : array(), 'posts' => count($post_ids) == 0 ? array() : $this->model->getPosts(array('restricted' => true, 'show_private' => $is_student, 'ids' => $post_ids), 1000, 0), 'events' => $events, 'calendar_month' => $month, 'calendar_year' => $year, 'day_time' => isset($day_time) ? $day_time : null));
     if ($is_logged) {
         $this->set(array('username' => User_Model::$auth_data['username']));
     }
     if ($is_student) {
         $this->set(array('firstname' => User_Model::$auth_data['firstname'], 'lastname' => User_Model::$auth_data['lastname'], 'avatar_url' => User_Model::$auth_data['avatar_url']));
     }
 }
Esempio n. 8
0
function is_member_joined($event_id)
{
    require_once WP_PLUGIN_DIR . '/pr-membership/models/event-model.php';
    $model = new Event_Model();
    $user_id = get_current_user_id();
    $result = $model->check_event_joins($event_id, $user_id);
    if ($result) {
        return true;
    } else {
        return false;
    }
}
Esempio n. 9
0
 /**
  * Edit event
  *
  * @param  int|string  $event_id
  */
 public function _event_edit($event_id = false)
 {
     $this->history = false;
     $event = new Event_Model((int) $event_id);
     // For authenticated users only
     if (!$this->user || !$event->is_author() && !$this->visitor->logged_in(array('admin', 'event moderator'))) {
         url::back('/events');
     }
     $errors = $form_errors = array();
     $form_values = $event->as_array();
     $form_values['start_date'] = '';
     $form_values['start_hour'] = '';
     $form_values['end_hour'] = '';
     /***** CHECK POST *****/
     if (request::method() == 'post') {
         $post = array_merge($this->input->post(), $_FILES);
         $extra = array('start_time' => date::unix2sql(strtotime($post['start_date'] . ' ' . date::time_24h($post['start_hour']))));
         if (!empty($post['end_hour'])) {
             $end_time = strtotime($post['start_date']);
             // end hour is earlier than start hour = event ends the next day
             if ($post['end_hour'] < $post['start_hour']) {
                 $end_time = strtotime('+1 day', $end_time);
             }
             $extra['end_time'] = date('Y-m-d', $end_time) . ' ' . date::time_24h($post['end_hour']) . ':00';
         }
         // update
         $editing = (bool) $event->id;
         if ($editing) {
             $extra['modified'] = date::unix2sql(time());
             $extra['modifies'] = (int) $event->modifies + 1;
         } else {
             $extra['author_id'] = $this->user->id;
         }
         $city = ORM::factory('city', $post['city_id']);
         if ($city) {
             $extra['country_id'] = $city->country_id;
         }
         if (csrf::valid() && $event->validate($post, true, $extra)) {
             // Update tags
             $event->remove(ORM::factory('tag'));
             if (!empty($post['tags'])) {
                 foreach ($post['tags'] as $tag_id => $tag) {
                     $event->add(ORM::factory('tag', $tag_id));
                 }
                 $event->save();
             }
             // Handle flyer uploads
             foreach (array('flyer_front_image_id' => $post->flyer_front, 'flyer_back_image_id' => $post->flyer_back) as $image_id => $flyer) {
                 if (isset($flyer) && empty($flyer['error'])) {
                     $image = Image_Model::factory('events.flyer', $flyer, $this->user->id);
                     if ($image->id) {
                         $event->add($image);
                         $event->{$image_id} = $image->id;
                         $event->save();
                     }
                 }
             }
             if (!$editing) {
                 newsfeeditem_events::event($this->user, $event);
             }
             url::redirect(url::model($event));
         } else {
             $form_errors = $post->errors();
         }
         $form_values = arr::overwrite($form_values, $post->as_array());
     }
     /***** /CHECK POST *****/
     /***** SHOW FORM *****/
     if ($event->id) {
         $this->page_actions[] = array('link' => url::model($event) . '/delete/?token=' . csrf::token(), 'text' => __('Delete event'), 'class' => 'event-delete');
         $this->page_title = text::title($event->name);
         $this->page_subtitle = __('Edit event');
         list($form_values['start_date'], $form_values['start_hour']) = explode(' ', date('Y-m-d H', strtotime($event->start_time)));
         if (!empty($event->end_time)) {
             list($temp, $form_values['end_hour']) = explode(' ', date('Y-m-d H', strtotime($event->end_time)));
         }
     } else {
         $this->page_title = __('New event');
     }
     $form = $event->get_form();
     // Tags
     if ($tag_group = Kohana::config('events.tag_group')) {
         $form['tags'] = $form_values['tags'] = array();
         $tags = ORM::factory('tag_group', $tag_group);
         foreach ($tags->tags as $tag) {
             $form['tags'][$tag->id] = $tag->name;
             if ($event->has($tag)) {
                 $form_values['tags'][$tag->id] = $tag->name;
             }
         }
     }
     // City autocomplete
     $this->_autocomplete_city('city_name');
     // Venue autocomplete
     $venues = ORM::factory('venue')->where('event_host', '=', 1)->find_all();
     $hosts = array();
     foreach ($venues as $venue) {
         $hosts[] = "{ id: '" . $venue->id . "', text: '" . html::chars($venue->name) . "' }";
     }
     widget::add('foot', html::script_source('var venues = [' . implode(', ', $hosts) . "];\n\$('input[name=venue_name]').autocomplete(venues, {\n\tformatItem: function(item) {\n\t\treturn item.text;\n\t}\n}).result(function(event, item) {\n\t\$('input[name=venue_id]').val(item.id);\n});"));
     // Date pickers
     widget::add('foot', html::script_source("\$('input#start_date').datepicker({ dateFormat: 'd.m.yy', firstDay: 1, changeFirstDay: false, showOtherMonths: true, showWeeks: true, showStatus: true, showOn: 'both' });"));
     if (empty($errors)) {
         widget::add('main', View::factory('events/event_edit', array('form' => $form, 'values' => $form_values, 'errors' => $form_errors)));
     } else {
         //			$this->_error(Kohana::lang('generic.error'), $errors);
     }
     /***** /SHOW FORM *****/
     $this->_side_views();
 }