Browse Source

When entering an exercise check if there are distributions to load see BT#6718

Julio Montoya 11 years ago
parent
commit
34bdbbf0b2

+ 39 - 0
main/exercice/exercise.class.php

@@ -5455,6 +5455,45 @@ class Exercise
     {
         // Getting question list.
         $questionList = $this->selectQuestionList(true);
+
+        // Looking for distributions
+        $trackExercises = Database::get_main_table(TABLE_STATISTIC_TRACK_E_EXERCICES);
+
+        $sessionId = api_get_session_id();
+        $result = Database::query("SELECT count(exe_id) as count FROM $trackExercises WHERE session_id = $sessionId");
+
+        if (Database::num_rows($result)) {
+            $result = Database::fetch_array($result);
+            $count = $result['count'];
+            global $app;
+            /** @var \Doctrine\manager $em */
+            $em = $app['orm.em'];
+
+            $params = array(
+                'exerciseId' => $this->id,
+                'sessionId' => $sessionId,
+                'cId' => $this->course_id
+            );
+
+            $quizDistributionRelSessions = $em->getRepository("Entity\CQuizDistributionRelSession")->findBy($params);
+            if ($quizDistributionRelSessions) {
+                $formToUse = $count % (count($quizDistributionRelSessions));
+                /** @var \Entity\CQuizDistributionRelSession  $quizDistributionRelSession */
+                if (isset($quizDistributionRelSessions[$formToUse])) {
+                    $quizDistributionRelSession = $quizDistributionRelSessions[$formToUse];
+
+                    $distribution = $quizDistributionRelSession->getDistribution();
+                    $dataTracking = $distribution->getDataTracking();
+                    if (!empty($dataTracking)) {
+                        $questionList = explode(',', $dataTracking);
+                        if (!empty($questionList)) {
+                            shuffle($questionList);
+                        }
+                    }
+                }
+            }
+        }
+
         $this->setMediaList($questionList);
 
         $this->questionList = $this->transformQuestionListWithMedias($questionList, false);

+ 14 - 0
main/inc/Entity/CQuizDistributionRelSession.php

@@ -51,6 +51,20 @@ class CQuizDistributionRelSession
      */
     private $quizDistributionId;
 
+    /**
+     * @ORM\ManyToOne(targetEntity="CQuizDistribution")
+     * @ORM\JoinColumn(name="quiz_distribution_id", referencedColumnName="id")
+     */
+    private $distribution;
+
+    /**
+     * @return \Entity\CQuizDistribution
+     */
+    public function getDistribution()
+    {
+        return $this->distribution;
+    }
+
     /**
      * Get id
      *

+ 0 - 2
main/inc/Entity/CQuizRelQuestion.php

@@ -67,8 +67,6 @@ class CQuizRelQuestion
      */
     //private $question;
 
-
-
     /**
      * Set cId
      *