public function action_edit() { $submitted = false; $id = $this->request->param('id'); if (!$id) { Request::current()->redirect('course'); } $course = ORM::factory('course', $id); if ($this->request->method() === 'POST' && $this->request->post()) { if (Arr::get($this->request->post(), 'save') !== null) { $submitted = true; $validator = $course->validator($this->request->post()); $validator->bind(':course', $course); $validator->bind(':start_date', $this->request->post('start_date')); if ($validator->check()) { $course->name = $this->request->post('name'); $course->description = $this->request->post('description'); $course->access_code = $this->request->post('access_code'); $course->start_date = $this->request->post('start_date'); $course->end_date = $this->request->post('end_date'); $course->save(); Session::instance()->set('success', 'Cources edited successfully.'); Model_Course::assign_users($course, $this->request->post('selected')); Request::current()->redirect('course'); exit; } else { $this->_errors = $validator->errors('course'); } } } $saved_data = array('name' => $course->name, 'description' => $course->description, 'access_code' => $course->access_code, 'start_date' => $course->start_date, 'end_date' => $course->end_date); $form = $this->form('course/edit/id/' . $id, $submitted, $saved_data); $data = Model_Course::get_students($course); $cacheimage = CacheImage::instance(); $user_ids = $data->as_array(NULL, 'id'); $count = $course->users->count_all(); $users = View::factory('course/assign')->bind('data', $data)->bind('count', $count)->bind('cacheimage', $cacheimage)->bind('user_ids', $user_ids); $teachers = Model_Role::get_users('teacher'); $assigned_teachers = Model_Course::get_teachers($course)->as_array(null, 'id'); $teachers_table = View::factory('course/teachers')->bind('teachers', $teachers)->bind('cacheimage', $cacheimage)->bind('assigned_teachers', $assigned_teachers); $batches = ORM::factory('batch')->find_all(); $view = View::factory('course/form')->bind('form', $form)->bind('users', $users)->bind('batches', $batches)->bind('teachers_table', $teachers_table)->bind('course_id', $id); Breadcrumbs::add(array('Courses', Url::site('course'))); Breadcrumbs::add(array($course->name, Url::site('course/edit/id/' . $id))); $this->content = $view; }
private function form($action, $submitted = false, $saved_data = array()) { $courses = ORM::factory('course')->find_all()->as_array('id', 'name'); $users = array(); foreach (Model_Role::get_users('teacher') as $user) { $users[$user->id] = $user->firstname . ' ' . $user->lastname; } $rooms = array(); foreach (ORM::factory('room')->find_all() as $room) { $rooms[$room->id] = $room->room_number . ', ' . $room->room_name; } $form = new Stickyform($action, array(), $submitted ? $this->_errors : array()); $form->default_data = array('name' => '', 'user_id' => '', 'course_id' => '', 'room_id' => '', 'once_date' => '', 'repeat_from' => '', 'repeat_to' => '', 'type' => 'once'); $form->saved_data = $saved_data; $form->posted_data = $submitted ? Stickyform::ungroup_params($this->request->post()) : array(); $form->append('Name', 'name', 'text'); $form->append('Type', 'type', 'radio'); $form->append('Date:', 'once_date', 'text', array('attributes' => array('class' => 'date', 'name' => 'once[date]'))); $form->append('From:', 'repeat_from', 'text', array('attributes' => array('class' => 'date', 'name' => 'repeat[from]'))); $form->append('To:', 'repeat_to', 'text', array('attributes' => array('class' => 'date', 'name' => 'repeat[to]'))); $form->append('Lecturer', 'user_id', 'select', array('options' => $users)); $form->append('Course', 'course_id', 'select', array('options' => $courses)); $form->append('Room', 'room_id', 'select', array('options' => $rooms)); $form->append('Save', 'save', 'submit', array('attributes' => array('class' => 'button'))); $form->process(); return $form; }