Beispiel #1
0
 /**
  * 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;
 }
Beispiel #2
0
 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;
 }
Beispiel #3
0
 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));
 }