Allow achieve badges in session courses - refs BT#9082

1.10.x
Angel Fernando Quiroz Campos 10 years ago
parent 7a612ecc63
commit 02afaf033b
  1. 13
      main/badge/assertion.php
  2. 16
      main/gradebook/get_badges.php
  3. 34
      main/inc/lib/skill.lib.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
))
)
);

@ -5,18 +5,18 @@
* @author Angel Fernando Quiroz Campos <angel.quiroz@beeznest.com>
* @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/';

@ -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(

Loading…
Cancel
Save