Esempio n. 1
0
 public function action_edit()
 {
     if ($this->request->method() === 'POST' && $this->request->post()) {
         $event = ORM::factory('event', $this->request->post('event_id'));
         $validator = $event->validator($this->request->post());
         $lecture = ORM::factory('lecture', $this->request->post('lecture_id'));
         if ($validator->check()) {
             $from = strtotime($this->request->post('date')) + $this->request->post('from') * 60;
             $to = strtotime($this->request->post('date')) + $this->request->post('to') * 60;
             $event->room_id = $this->request->post('room_id');
             $event->eventstart = $from;
             $event->eventend = $to;
             $event->cancel = (int) $this->request->post('cancel');
             $event->save();
             $lecture->start_date = $from;
             $lecture->end_date = $to;
             $lecture->save();
             if ($this->request->post('cancel')) {
                 $feed = new Feed_Lecture();
                 $feed->set_action('canceled');
                 $feed->set_course_id($event->course_id);
                 $feed->set_respective_id($event->id);
                 $feed->set_actor_id(Auth::instance()->get_user()->id);
                 $feed->save();
                 $feed->subscribe_users();
             }
             $json = array('success' => 1, 'message' => array('Event is edited successfully'));
         } else {
             $json = array('success' => 0, 'errors' => array_values($validator->errors('exam')));
         }
         echo json_encode($json);
         exit;
     }
     $id = $this->request->param('id');
     $lecture_id = $this->request->param('lectId');
     $event = ORM::factory('event', $id);
     $form = new Stickyform('', array(), array());
     $form->default_data = array('date' => '', 'room_id' => '', 'from' => '', 'to' => '', 'cancel' => '1');
     $conflict_event = $event->get_conflict_event();
     $event_details = array();
     if ($conflict_event) {
         $class = 'Event_' . $conflict_event->eventtype;
         $dynamic_object = new $class($conflict_event->id);
         $event_details = $dynamic_object->get_event_details();
     }
     $form->saved_data = array('date' => date('Y-m-d', $event->eventstart), 'cancel' => $event->cancel);
     $form->append('Date', 'date', 'text', array('attributes' => array('class' => 'date')));
     $form->append('Room', 'room_id', 'select', array('options' => array()));
     $form->append('From', 'from', 'hidden', array('attributes' => array('id' => 'slider-range_from')));
     $form->append('To', 'to', 'hidden', array('attributes' => array('id' => 'slider-range_to')));
     $form->append('Cancel', 'cancel', 'checkbox', array('attributes' => array('value' => 1)));
     $form->process();
     $slider = array('start' => ($event->eventstart - strtotime(date('Y-m-d', $event->eventstart))) / 60, 'end' => ($event->eventend - strtotime(date('Y-m-d', $event->eventend))) / 60);
     $view = View::factory('event/edit')->bind('event', $event)->bind('form', $form)->bind('slider', $slider)->bind('conflict_event', $conflict_event)->bind('event_details', $event_details)->bind('lecture_id', $lecture_id);
     echo json_encode(array('success' => 1, 'html' => $view->render()));
     exit;
 }
Esempio n. 2
0
 public function action_add()
 {
     $submitted = FALSE;
     if ($this->request->method() === 'POST' && $this->request->post()) {
         if (Arr::get($this->request->post(), 'save') !== null) {
             $data = Stickyform::ungroup_params($this->request->post());
             $submitted = true;
             if ($this->validate($data)) {
                 if ($this->request->post('type') == 'once') {
                     $data['when'] = '';
                     $data['start_date'] = strtotime($data['once_date']) + $data['once_from'] * 60;
                     $data['end_date'] = strtotime($data['once_date']) + $data['once_to'] * 60;
                 } else {
                     $date_range = $this->request->post('repeat');
                     $data['start_date'] = strtotime($date_range['from']);
                     $data['end_date'] = strtotime($date_range['to']);
                     $days = array();
                     foreach ($this->request->post('days') as $day => $value) {
                         $time = $this->request->post(strtolower($day));
                         $days[$day] = $time['from'] . ':' . $time['to'];
                     }
                     $data['when'] = serialize($days);
                 }
                 $lecture = ORM::factory('lecture');
                 $lecture->values($data);
                 $lecture->save();
                 $feed = new Feed_Lecture();
                 $feed->set_action('add');
                 $feed->set_course_id($this->request->post('course_id'));
                 $feed->set_respective_id($lecture->id);
                 $feed->set_actor_id(Auth::instance()->get_user()->id);
                 $feed->streams(array('course_id' => (int) $this->request->post('course_id')));
                 $feed->save();
                 $this->remove_events($lecture);
                 $this->create_events(array_merge($this->request->post(), $data), $lecture);
                 Request::current()->redirect('lecture');
                 exit;
             }
         }
     }
     $form = $this->form('lecture/add', $submitted);
     $days = $this->request->post('days') ? $this->request->post('days') : array();
     $slider = array('once_slider' => array('from' => 420, 'to' => 660), 'monday_slider' => $this->request->post('monday') ? $this->request->post('monday') : array('from' => 420, 'to' => 660), 'tuesday_slider' => $this->request->post('tuesday') ? $this->request->post('tuesday') : array('from' => 420, 'to' => 660), 'wednesday_slider' => $this->request->post('wednesday') ? $this->request->post('wednesday') : array('from' => 420, 'to' => 660), 'thursday_slider' => $this->request->post('thursday') ? $this->request->post('thursday') : array('from' => 420, 'to' => 660), 'friday_slider' => $this->request->post('friday') ? $this->request->post('friday') : array('from' => 420, 'to' => 660), 'saturday_slider' => $this->request->post('saturday') ? $this->request->post('saturday') : array('from' => 420, 'to' => 660), 'sunday_slider' => $this->request->post('sunday') ? $this->request->post('sunday') : array('from' => 420, 'to' => 660));
     $view = View::factory('lecture/form')->bind('form', $form)->bind('errors', $this->_errors)->bind('slider', $slider)->bind('days', $days);
     Breadcrumbs::add(array('Lectures', Url::site('lecture')));
     Breadcrumbs::add(array('Create', Url::site('lecture/add')));
     $this->content = $view;
 }