Fix get the user skills regardless course and sessions - refs BT#9082

1.10.x
Angel Fernando Quiroz Campos 10 years ago
parent 5e6695e3ab
commit 5a4a8431c2
  1. 50
      main/inc/lib/skill.lib.php

@ -361,26 +361,33 @@ class SkillRelUser extends Model
/**
* Get the achieved skills for the user
* @param int $userId
* @param int $courseId The course id
* @param int $courseId Optional. The course id
* @param int $sessionId Optional. The session id
* @return array The skill list. Otherwise return false
*/
public function get_user_skills($userId, $courseId, $sessionId = 0)
public function get_user_skills($userId, $courseId = 0, $sessionId = 0)
{
if (empty($userId)) {
return array();
}
$courseId = intval($courseId);
$sessionId = intval($sessionId);
$whereConditions = array(
'user_id = ? ' => intval($userId)
);
if ($courseId > 0) {
$whereConditions['AND course_id = ? '] = $courseId;
$whereConditions['AND session_id = ?'] = $sessionId;
}
$result = Database::select(
'skill_id',
$this->table,
array(
'where' => array(
'user_id = ? AND course_id = ? AND session_id = ?' => array(
intval($userId),
intval($courseId),
intval($sessionId)
)
)
'where' => $whereConditions
),
'all'
);
@ -644,9 +651,6 @@ class Skill extends Model
public function add_skill_to_user($user_id, $gradebook_id, $courseId = 0, $sessionId = 0)
{
$courseId = intval($courseId);
$sessionId = intval($sessionId);
$skill_gradebook = new SkillRelGradebook();
$skill_rel_user = new SkillRelUser();
@ -659,8 +663,8 @@ class Skill extends Model
'user_id' => $user_id,
'skill_id' => $skill_gradebook['skill_id'],
'acquired_skill_at' => api_get_utc_datetime(),
'course_id' => $courseId,
'session_id' => $sessionId
'course_id' => intval($courseId),
'session_id' => intval($sessionId)
);
$skill_rel_user->save($params);
@ -1019,19 +1023,25 @@ class Skill extends Model
* Check if the user has the skill
* @param int $userId The user id
* @param int $skillId The skill id
* @param int $courseId The course id
* @param int $courseId Optional. The course id
* @param int $sessionId Optional. The session id
* @return boolean Wheter the user has the skill return true. Otherwise return false
*/
public function user_has_skill($userId, $skillId, $courseId, $sessionId = 0)
{
public function user_has_skill($userId, $skillId, $courseId = 0, $sessionId = 0)
{
$courseId = intval($courseId);
$sessionId = intval($sessionId);
$whereConditions = array(
'user_id = ? ' => intval($userId),
'AND skill_id = ? ' => intval($skillId),
'AND course_id = ? ' => intval($courseId),
'AND session_id = ? ' => intval($sessionId)
'AND skill_id = ? ' => intval($skillId)
);
if ($courseId > 0) {
$whereConditions['AND course_id = ? '] = $courseId;
$whereConditions['AND session_id = ? '] = $sessionId;
}
$result = Database::select('COUNT(1) AS qty', $this->table_skill_rel_user, array(
'where' => $whereConditions
), 'first');

Loading…
Cancel
Save