Browse Source

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

Angel Fernando Quiroz Campos 10 years ago
parent
commit
5a4a8431c2
1 changed files with 30 additions and 20 deletions
  1. 30 20
      main/inc/lib/skill.lib.php

+ 30 - 20
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');