/** * Method to update the courses in which the user is added depending upon the list of selected course ids * Will be used incase of both add and edit */ protected function update_courses($user, $selected) { $current_courses = $user->courses->find_all()->as_array(null, 'id'); $added = array_values(array_diff($selected, $current_courses)); $removed = array_values(array_diff($current_courses, $selected)); // removing to be done before adding if ($removed) { //removing the previous courses assigned $user->remove('courses'); foreach ($removed as $course_id) { $feed = new Feed_Course(); $feed->set_action('student_remove'); $feed->set_course_id('0'); $feed->set_respective_id($course_id); $feed->set_actor_id(Auth::instance()->get_user()->id); $feed->streams(array('user_id' => $user->id)); $feed->save(); } } if ($added) { foreach ($added as $course_id) { $course = ORM::factory('course', $course_id); $user->add('courses', $course); $feed = new Feed_Course(); $feed->set_action('student_add'); $feed->set_course_id('0'); $feed->set_respective_id($course_id); $feed->set_actor_id(Auth::instance()->get_user()->id); $feed->streams(array('user_id' => $user->id)); $feed->save(); } } }
/** * Method to save the user to course assignments * @param Model_Course $course * @param Array $user_ids - Array of user_ids * @return null */ public static function assign_users($course, $user_ids) { if ($user_ids) { $feed_exists = ORM::factory('feed')->where('type', '=', 'course')->where('action', '=', 'student_add')->where('respective_id', '=', $course->id)->where('actor_id', '=', Auth::instance()->get_user()->id)->find(); if ($feed_exists->id !== null) { $feed = new Feed_Course($feed_exists->id); $feed->streams(array('user_id' => $user_ids))->update_streams(); } else { $feed = new Feed_Course(); $feed->set_action('student_add'); $feed->set_course_id('0'); $feed->set_respective_id($course->id); $feed->set_actor_id(Auth::instance()->get_user()->id); $feed->streams(array('user_id' => $user_ids)); $feed->save(); } $course->remove('users'); foreach ($user_ids as $user_id) { $course->add('users', ORM::factory('user', $user_id)); } } else { $course->remove('users'); } }