Beispiel #1
0
 /**
  * Generic function just to keep the code DRY
  */
 public static function notice_exam_email($exam, $subject, $template)
 {
     $users = Model_Course::get_users($exam->course_id);
     $recipients = Notice::email_recipients($users);
     $view = View::factory($template)->set('exam', $exam);
     $body = $view->render();
     $subject = 'Kodelearn Exam Notice: ' . $subject;
     Notice::email($recipients, $subject, $body);
 }
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;
 }