/** * Method to get all users for an examgroup * @param int $examgroup_id * @param string $return_type (array|object) * @return array eg. (array(10 => 'Students Name') | array of user objects) */ public static function get_students($examgroup_id, $return_type = 'array') { $exams = self::get_exams($examgroup_id); // handle the cas_e that no exam is added to this exam group yet if (!$exams->as_array()) { // echo 'No exams found for the examgroup #' . $examgroup_id; return array(); } $course_assoc = $exams->as_array('id', 'course_id'); // get the courses $courses = ORM::factory('course')->where('id', ' IN ', array_values($course_assoc))->find_all(); $students = array(); $students_object = array(); foreach ($courses as $course) { $users = Model_Course::get_students($course); $course_students = array(); foreach ($users as $user) { $course_students[$user->id] = $user->firstname . ' ' . $user->lastname; $students_object[] = $user; } // concat arrays with students instead of array_merge // so that re-indexing doesn't happen $students = $students + $course_students; } if ($return_type == 'array') { return $students; } return $students_object; }
public function action_add() { if ($this->request->method() === 'POST' && $this->request->post('selected')) { $event_id = $this->request->post('id'); $course_id = $this->request->post('course_id'); $users = Model_Course::get_users($course_id, 'student'); $marked_users = $this->request->post('selected'); DB::delete('attendances')->where('event_id', '=', $event_id)->execute(Database::instance()); foreach ($users as $user) { $attendance = ORM::factory('attendance'); if (in_array($user->id, $this->request->post('selected'))) { $attendance->user_id = $user->id; $attendance->event_id = $event_id; $attendance->present = '1'; $attendance->save(); } else { $attendance->user_id = $user->id; $attendance->event_id = $event_id; $attendance->present = '0'; $attendance->save(); } } // find an existing feed $feed_exists = ORM::factory('feed')->where('type', '=', 'attendance')->where('action', '=', 'mark')->where('respective_id', '=', $event_id)->where('actor_id', '=', Auth::instance()->get_user()->id)->find(); if ($feed_exists->id !== null) { $feed = new Feed_Attendance($feed_exists->id); $feed->streams(array('user_id' => $marked_users))->update_streams(); } else { $feed = new Feed_Attendance(); $feed->set_action('mark'); $feed->set_respective_id($event_id); $feed->set_actor_id(Auth::instance()->get_user()->id); $feed->streams(array('user_id' => $marked_users)); $feed->save(); } Session::instance()->set('success', 'Attendance marked successfully.'); } $id = $this->request->param('id'); $type = $this->request->param('type'); $param_event_id = $this->request->param('event_id'); if (!$id || !$type || !$param_event_id) { Request::current()->redirect('attendance'); } if ($type == 'exam') { $exam = ORM::factory('exam', $id); $cid = $exam->course_id; $event = $exam->name; } if ($type == 'lecture') { $lecture = ORM::factory('lecture', $id); $cid = $lecture->course_id; $event = $lecture->name; } $course = ORM::factory('course', $cid); $users = Model_Course::get_students($course); /* $user = ORM::factory('user'); $user->join('courses_users','left') ->on('courses_users.user_id','=','id'); $user->where('courses_users.course_id','=',$cid); $users = $user->find_all();*/ $page_title = Kohana::message('page_title', 'attendance_add.title'); $page_title = str_replace('{event}', $event, $page_title); $assigned_attendance = ORM::factory('attendance'); $assigned_attendance->where('event_id', '=', $param_event_id); $assigned_attendances = $assigned_attendance->find_all()->as_array('user_id', 'present'); $data = array('add' => URL::site('/attendance/add'), 'id' => $id, 'course_id' => $cid, 'event_id' => $param_event_id); $view = View::factory('attendance/form')->bind('users', $users)->bind('page_title', $page_title)->bind('assigned_attendances', $assigned_attendances)->bind('data', $data); Breadcrumbs::add(array('Attendance', Url::site('attendance'))); $this->content = $view; }
public function action_get_students() { if (!$this->request->post('course_id')) { $response = '<p>No Course Selected</p>'; echo json_encode(array('html' => $response)); exit; } $course = ORM::factory('course', $this->request->post('course_id')); $users = Model_Course::get_students($course); $cacheimage = CacheImage::instance(); $view = View::factory('course/ajax_show_students')->bind('cacheimage', $cacheimage)->bind('course', $course)->bind('users', $users); $response = $this->response->body($view)->body(); echo json_encode(array('html' => $response)); }