Эх сурвалжийг харах

Merge branch '1.11.x' of https://github.com/chamilo/chamilo-lms into 1.11.x

Alex Aragón 6 жил өмнө
parent
commit
07185d2c7e

+ 23 - 0
main/gradebook/lib/be/result.class.php

@@ -290,4 +290,27 @@ class Result
             Database::query($sql);
         }
     }
+
+    /**
+     * Check if exists a result with its user and evaluation.
+     *
+     * @throws \Doctrine\ORM\Query\QueryException
+     *
+     * @return bool
+     */
+    public function exists()
+    {
+        $em = Database::getManager();
+
+        $result = $em
+            ->createQuery(
+                'SELECT COUNT(gr) FROM ChamiloCoreBundle:GradebookResult gr
+                WHERE gr.evaluationId = :eval_id AND gr.userId = :user_id'
+            )
+            ->setParameters(['eval_id' => $this->evaluation, 'user_id' => $this->user_id])
+            ->getSingleScalarResult();
+        $count = (int) $result;
+
+        return $count > 0;
+    }
 }

+ 9 - 5
main/inc/lib/course.lib.php

@@ -1063,6 +1063,7 @@ class CourseManager
      * @param int    $user_id
      * @param string $course_code  , if this parameter is null, it'll check for all courses
      * @param bool   $in_a_session True for checking inside sessions too, by default is not checked
+     * @param int    $session_id
      *
      * @return bool $session_id true if the user is registered in the course, false otherwise
      */
@@ -1072,12 +1073,12 @@ class CourseManager
         $in_a_session = false,
         $session_id = 0
     ) {
-        $user_id = intval($user_id);
+        $user_id = (int) $user_id;
 
         if (empty($session_id)) {
             $session_id = api_get_session_id();
         } else {
-            $session_id = intval($session_id);
+            $session_id = (int) $session_id;
         }
 
         $condition_course = '';
@@ -1109,13 +1110,16 @@ class CourseManager
         }
 
         $tableSessionCourseUser = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
-        $sql = 'SELECT 1 FROM '.$tableSessionCourseUser.
-            ' WHERE user_id = '.$user_id.' '.$condition_course;
+        $sql = 'SELECT 1 FROM '.$tableSessionCourseUser.'
+            WHERE user_id = '.$user_id.' AND session_id = '.$session_id.' '.$condition_course;
+
         if (Database::num_rows(Database::query($sql)) > 0) {
             return true;
         }
 
-        $sql = 'SELECT 1 FROM '.$tableSessionCourseUser.' WHERE user_id = '.$user_id.' AND status = 2 '.$condition_course;
+        $sql = 'SELECT 1 FROM '.$tableSessionCourseUser.'
+            WHERE user_id = '.$user_id.' AND session_id = '.$session_id.' AND status = 2 '.$condition_course;
+
         if (Database::num_rows(Database::query($sql)) > 0) {
             return true;
         }

+ 1 - 0
main/inc/local.inc.php

@@ -969,6 +969,7 @@ if ($checkFromDatabase && !empty($sessionIdFromGet)) {
         Session::write('id_session', $sessionInfo['id']);
     } else {
         $cidReset = true;
+        $gidReset = true;
         Session::erase('session_name');
         Session::erase('id_session');
 

+ 6 - 0
src/Chamilo/CourseBundle/Component/CourseCopy/CourseBuilder.php

@@ -1096,8 +1096,14 @@ class CourseBuilder
         $table_opt = Database::get_course_table(TABLE_SURVEY_QUESTION_OPTION);
 
         $courseId = (int) $courseId;
+        $idList = isset($this->specific_id_list['surveys']) ? $this->specific_id_list['surveys'] : [];
 
         $sql = 'SELECT * FROM '.$table_que.' WHERE c_id = '.$courseId.'  ';
+
+        if (!empty($idList)) {
+            $sql .= " AND survey_id IN (".implode(', ', $idList).")";
+        }
+
         $db_result = Database::query($sql);
         $is_required = 0;
         while ($obj = Database::fetch_object($db_result)) {