diff --git a/main/badge/assertion.php b/main/badge/assertion.php index 0380f7ddd9..3de57a6c83 100644 --- a/main/badge/assertion.php +++ b/main/badge/assertion.php @@ -11,6 +11,8 @@ require_once '../inc/global.inc.php'; $userId = isset($_GET['user']) ? intval($_GET['user']) : 0; $skillId = isset($_GET['skill']) ? intval($_GET['skill']) : 0; +$courseId = isset($_GET['course']) ? intval($_GET['course']) : 0; +$sessionId = isset($_GET['session']) ? intval($_GET['session']) : 0; if ($userId === 0 || $skillId === 0) { exit; @@ -18,12 +20,12 @@ if ($userId === 0 || $skillId === 0) { $objSkill = new Skill(); -if (!$objSkill->user_has_skill($userId, $skillId)) { +if (!$objSkill->user_has_skill($userId, $skillId, $courseId, $sessionId)) { exit; } $objSkillRelUser = new SkillRelUser(); -$userSkill = $objSkillRelUser->getByUserAndSkill($userId, $skillId); +$userSkill = $objSkillRelUser->getByUserAndSkill($userId, $skillId, $courseId, $sessionId); if ($userSkill == false) { exit; @@ -42,7 +44,12 @@ $json = array( 'badge' => api_get_path(WEB_CODE_PATH) . "badge/class.php?id=$skillId", 'verify' => array( 'type' => 'hosted', - 'url' => api_get_path(WEB_CODE_PATH) . "badge/assertion.php?user=$userId&skill=$skillId" + 'url' => api_get_path(WEB_CODE_PATH) . "badge/assertion.php?" . http_build_query(array( + 'user' => $userId, + 'skill' => $skillId, + 'course' => $courseId, + 'session' => $sessionId + )) ) ); diff --git a/main/gradebook/get_badges.php b/main/gradebook/get_badges.php index db7f716dba..e7f7e0bb79 100644 --- a/main/gradebook/get_badges.php +++ b/main/gradebook/get_badges.php @@ -5,18 +5,18 @@ * @author Angel Fernando Quiroz Campos * @package chamilo.badge */ -$cidReset = true; - require_once '../inc/global.inc.php'; $userId = isset($_GET['user']) ? intval($_GET['user']) : 0; +$courseId = api_get_course_int_id(); +$sessionId = api_get_session_id(); if ($userId === 0) { exit; } $objSkillRelUser = new SkillRelUser(); -$userSkills = $objSkillRelUser->get_user_skills($userId); +$userSkills = $objSkillRelUser->get_user_skills($userId, $courseId, $sessionId); if (empty($userSkills)) { exit; @@ -27,7 +27,15 @@ $assertions = array(); foreach ($userSkills as $skill) { $skillId = current($skill); - $assertions[] = api_get_path(WEB_CODE_PATH) . "badge/assertion.php?user=$userId&skill=$skillId"; + $assertionUrl = api_get_path(WEB_CODE_PATH) . "badge/assertion.php?"; + $assertionUrl .= http_build_query(array( + 'user' => $userId, + 'skill' => $skillId, + 'course' => $courseId, + 'session' => $sessionId + )); + + $assertions[] = $assertionUrl; } $backpack = 'https://backpack.openbadges.org/'; diff --git a/main/inc/lib/skill.lib.php b/main/inc/lib/skill.lib.php index 664ceb39cc..2cc17cf436 100755 --- a/main/inc/lib/skill.lib.php +++ b/main/inc/lib/skill.lib.php @@ -358,7 +358,7 @@ class SkillRelUser extends Model return $users; } - public function get_user_skills($user_id) + public function get_user_skills($user_id, $courseId, $sessionId = 0) { if (empty($user_id)) { return array(); @@ -366,7 +366,15 @@ class SkillRelUser extends Model $result = Database::select( 'skill_id', $this->table, - array('where' => array('user_id = ?' => intval($user_id))), + array( + 'where' => array( + 'user_id = ? AND course_id = ? AND session_id = ?' => array( + intval($user_id), + intval($courseId), + intval($sessionId) + ) + ) + ), 'all' ); return $result; @@ -378,10 +386,15 @@ class SkillRelUser extends Model * @param int $skillId The skill id * @return array The relation data. Otherwise return false */ - public function getByUserAndSkill($userId, $skillId) + public function getByUserAndSkill($userId, $skillId, $courseId, $sessionId = 0) { $where = array( - 'user_id = ? AND skill_id = ?' => array($userId, $skillId) + 'user_id = ? AND skill_id = ? AND course_id = ? AND session_id = ?' => array( + intval($userId), + intval($skillId), + intval($courseId), + intval($sessionId) + ) ); return Database::select('*', $this->table, array( @@ -1002,16 +1015,13 @@ class Skill extends Model * * @return bool */ - public function user_has_skill($user_id, $skill_id, $courseId = 0, $sessionId = 0) + public function user_has_skill($user_id, $skill_id, $courseId, $sessionId = 0) { - $courseId = intval($courseId); - $sessionId = intval($sessionId); - $whereConditions = array( - 'user_id = ? ' => $user_id, - 'AND skill_id = ? ' => $skill_id, - 'AND course_id = ? ' => $courseId, - 'AND session_id = ? ' => $sessionId + 'user_id = ? ' => intval($user_id), + 'AND skill_id = ? ' => intval($skill_id), + 'AND course_id = ? ' => intval($courseId), + 'AND session_id = ? ' => intval($sessionId) ); $result = Database::select('COUNT(1) AS qty', $this->table_skill_rel_user, array(