Example #1
0
 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;
 }
Example #2
0
 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;
 }