/** * Sends a notification to all the students studying the course * @param int $course_id Id of the course teacher is teaching * @param int $classroom_id Id of the classroom in which the teacher is teaching * @before _secure, _teacher */ public function students($course_id, $classroom_id) { $this->JSONView(); $view = $this->getActionView(); $found = false; $teaches = TeacherService::$_teaches; foreach ($teaches as $t) { if ($t->course_id == $course_id && $t->classroom_id == $classroom_id) { $found = true; break; } } if (!$found) { self::redirect("/404"); } if (RequestMethods::post("action") == "notifyStudents") { $classroom = TeacherService::$_classes[$classroom_id]; $service = new Shared\Services\Classroom(); $users = $service->enrollments($classroom, array('only_user' => true)); $content = RequestMethods::post("message"); $course = TeacherService::$_courses[$course_id]; $content .= ' Subject: ' . $course->title . ', Teacher: ' . $this->user->name; $this->_save(array('type' => 'course', 'type_id' => $course_id, 'url' => ''), $content, $users); if (RequestMethods::post("redirect")) { Registry::get("session")->set('Notification\\Students:$sent', true); self::redirect($_SERVER['HTTP_REFERER']); } $view->set("message", "Notification sent to students!!"); } else { $view->set("message", "Invalid Request! Something went wrong"); } }
/** * Teacher can create a new conversation * @before _secure, _teacher */ public function create() { $this->JSONView(); $view = $this->getActionView(); $classrooms = TeacherService::$_classes; $service = new Shared\Services\Classroom(); $students = array(); foreach ($classrooms as $c) { $s = $service->enrollments($c, array('conversation' => true)); $students = array_merge($students, $s); } $view->set("students", $students); $this->_create(); }
/** * @todo move to services * Grade the students for each week * @before _secure, _teacher */ public function weeklyStudentsPerf($course_id, $classroom_id) { $this->setSEO(array("title" => "Grade Students Weekly Performance | Teacher")); $view = $this->getActionView(); $session = Registry::get("session"); if (!$course_id || !$classroom_id) { self::redirect("/404"); } $teach = Teach::first(array("course_id = ?" => $course_id, "classroom_id = ?" => $classroom_id, "user_id = ?" => $this->user->id)); if (!$teach) { self::redirect("/404"); } $service = new Shared\Services\Classroom(); $return = $service->weeklyPerformance($teach); $view->set($return); $classroom = TeacherService::$_classes[$teach->classroom_id]; $course = TeacherService::$_courses[$teach->course_id]; $enrollments = $service->enrollments($classroom, array('table' => 'performance', 'teach' => $teach)); $scale = array(); for ($i = 1; $i <= 10; $i++) { $scale[] = $i; } $view->set(array("students" => $enrollments, "class" => $classroom->grade . " - " . $classroom->section, "course" => $course->title, "scale" => $scale)); }
/** * @before _secure, _teacher */ public function gradeIt($assignment_id) { $this->setSEO(array("title" => "Grade assignments | Teacher")); $view = $this->getActionView(); $assignment = Assignment::first(array("id = ?" => $assignment_id)); if (!$assignment || $assignment->user_id != $this->user->id) { self::redirect("/404"); } $classroom = TeacherService::$_classes[$assignment->classroom_id]; $service = new Shared\Services\Classroom(); $return = $this->_grade($assignment); $students = $service->enrollments($classroom, array('table' => 'submission', 'assignment_id' => $assignment->id)); $view->set($return)->set("class", $classroom)->set("assignment", $assignment)->set('scale', array(0, 1, 2, 3, 4, 5))->set("students", $students); }