/** * 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); }
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; }