public function update_skills_to_gradebook($gradebook_id, $skill_list) { if (!empty($skill_list)) { //Cleaning skills $skill_list = array_map('intval', $skill_list); $skill_list = array_filter($skill_list); $skill_gradebook = new SkillRelGradebook(); $skill_gradebooks_source = $skill_gradebook->get_all(array('where' => array('gradebook_id = ?' => $gradebook_id))); $clean_gradebook = array(); if (!empty($skill_gradebooks_source)) { foreach ($skill_gradebooks_source as $source) { $clean_gradebook[] = $source['skill_id']; } } if (!empty($clean_gradebook)) { $skill_to_remove = array_diff($clean_gradebook, $skill_list); } foreach ($skill_list as $skill_id) { $params = array(); $params['gradebook_id'] = $gradebook_id; $params['skill_id'] = $skill_id; if (!$skill_gradebook->exists_gradebook_skill($gradebook_id, $skill_id)) { $skill_gradebook->save($params); } } if (!empty($skill_to_remove)) { foreach ($skill_to_remove as $remove) { $skill_item = $skill_gradebook->get_skill_info($remove, $gradebook_id); $skill_gradebook->delete($skill_item['id']); } } return true; } return false; }
/** * @param int $user_id * @param int $gradebook_id * @param int $courseId * @param int $sessionId */ public function add_skill_to_user($user_id, $gradebook_id, $courseId = 0, $sessionId = 0) { $skill_gradebook = new SkillRelGradebook(); $skill_rel_user = new SkillRelUser(); $skill_gradebooks = $skill_gradebook->get_all(array('where' => array('gradebook_id = ?' => $gradebook_id))); if (!empty($skill_gradebooks)) { foreach ($skill_gradebooks as $skill_gradebook) { $user_has_skill = $this->user_has_skill($user_id, $skill_gradebook['skill_id'], $courseId, $sessionId); if (!$user_has_skill) { $params = array('user_id' => $user_id, 'skill_id' => $skill_gradebook['skill_id'], 'acquired_skill_at' => api_get_utc_datetime(), 'course_id' => intval($courseId)); if (!empty($sessionId)) { $params['session_id'] = $sessionId; } $skill_rel_user->save($params); } } } }