public function action_index() { $view = View::factory('question/list')->bind('table', $table)->bind('total', $total)->bind('links', $links)->bind('success', $success)->bind('filter_url', $filter_url)->bind('filter_type', $filter_type)->bind('types', $types); $filter_type = (string) $this->request->param('filter_type', ''); $course_id = Session::instance()->get('course_id'); $course = ORM::factory('course', (int) $course_id); $criteria = array('filter_type' => $this->request->param('filter_type', ''), 'course_id' => $course_id); $questions = Model_Question::get_questions($criteria); $total = Model_Question::get_total_question_count($criteria); $sortables = new Sort(array('Question' => '', 'Type' => '', 'Actions' => '')); $headings = $sortables->render(); $table = array('headings' => $headings, 'data' => $questions); $types = array_combine(Model_Question::$TYPES, array_map('ucfirst', Model_Question::$TYPES)); $filter_url = URL::site('question/index'); $links = array('add' => Html::anchor('/question/add/', 'Create a question', array('class' => 'createButton l')), 'delete' => URL::site('/question/delete/')); $success = Session::instance()->get_once('success'); $this->content = $view; }
public function action_edit() { $view = View::factory('exercise/form')->bind('form', $form)->bind('questions', $questions)->bind('selected_questions', $selected_questions)->bind('exercise_questions', $exercise_questions)->bind('error_notif', $error_notif); $submitted = false; $course = ORM::factory('course', Session::instance()->get('course_id')); $error_notif = array(); $exercise_id = (int) $this->request->param('id'); $exercise = ORM::factory('exercise', $exercise_id); if ($this->request->method() === 'POST' && $this->request->post()) { $submitted = true; $safepost = Arr::map('Security::xss_clean', $this->request->post()); $validator = $exercise->validator($safepost); if ($validator->check() && $this->validate_form($safepost)) { $exercise->values(array_merge($safepost, array('course_id' => $course->id, 'slug' => Text::limit_chars(Inflector::underscore($safepost['title'])), 'modified_at' => date('Y-m-d H:i:s', time())))); $exercise->save(); $zip_ques = Arr::zip($safepost['selected'], $safepost['marks']); $exercise->delete_questions()->add_questions($zip_ques); if ($safepost['pub_status'] == '1') { $exist = ORM::factory('feed'); $exist->where('type', ' = ', 'exercise'); $exist->where('action', ' = ', 'add'); $exist->where('respective_id', ' = ', $exercise->id); $exist->where('course_id', ' = ', Session::instance()->get('course_id')); $exists = $exist->find_all(); if (count($exists) == 0) { $feed = new Feed_Exercise(); $feed->set_action('add'); $feed->set_course_id(Session::instance()->get('course_id')); $feed->set_respective_id($exercise->id); $feed->set_actor_id(Auth::instance()->get_user()->id); $feed->streams(array('course_id' => (int) Session::instance()->get('course_id'))); $feed->save(); } } Session::instance()->set('success', 'Exercise edited successfully.'); Request::current()->redirect('exercise'); exit; } else { $this->_errors = array_merge($this->_errors, $validator->errors('exercise')); $error_notif = Arr::get($this->_errors, 'questions', ''); } } $exercise_questions = $exercise->questions()->as_array('question_id', 'marks'); $selected_questions = array_keys($exercise_questions); $saved_data = $exercise->as_array(); $form = $this->form('exercise/edit/id/' . $exercise->id, $submitted, $saved_data); Breadcrumbs::add(array('Edit', '')); // set content $questions = Model_Question::get_questions(array('course_id' => $course->id)); $this->content = $view; }