Merge commit 'origin/master' into account
[platal.git] / modules / survey / survey.inc.php
index 0e051a3..91f0505 100644 (file)
@@ -190,16 +190,11 @@ class Survey
         $nbf = count($line);
         $users = array();
         if ($this->isMode(self::MODE_XIDENT)) { // if the mode is non anonymous
-            $sql = 'SELECT v.id AS vid, a.nom, a.prenom, a.promo
-                      FROM survey_votes AS v
-                INNER JOIN auth_user_md5 AS a
-                        ON a.user_id=v.user_id
-                     WHERE v.survey_id={?}
-                  ORDER BY vid ASC;';
-            $res = XDB::iterator($sql, $this->id); // retrieves all users data
-            for ($u = $res->next(); $u != null; $u = $res->next()) {
-                $users[$u['vid']] = array('nom' => $u['nom'], 'prenom' => $u['prenom'], 'promo' => $u['promo']);
-            }
+            $users = User::getBulkUsersWithUIDs(XDB::fetchAllAssoc('vid', 'SELECT  v.id AS vid, v.user_id
+                                                                             FROM  survey_votes AS v
+                                                                            WHERE  v.survey_id = {?}
+                                                                         ORDER BY  vid ASC',
+                                                                    $this->id));
         }
         $sql = 'SELECT v.id AS vid, a.question_id AS qid, a.answer AS answer
                   FROM survey_votes AS v
@@ -208,20 +203,19 @@ class Survey
                  WHERE v.survey_id={?}
               ORDER BY vid ASC, qid ASC, answer ASC;';
         $res = XDB::iterator($sql, $this->id); // retrieves all answers from database
-        $cur = $res->next();
         $vid = -1;
         $vid_ = 0;
-        while ($cur != null) {
+        while (($cur = $res->next()) != null) {
             if ($vid != $cur['vid']) { // if the vote id changes, then starts a new line
                 fputcsv($csv, $line, $sep, $enc); // stores the former line into $csv_output
                 $vid = $cur['vid'];
                 $line = array_fill(0, $nbf, ''); // creates an array full of empty string
                 $line[0] = $vid_; // the first field is a 'clean' vote id (not the one stored in database)
                 if ($this->isMode(self::MODE_XIDENT)) { // if the mode is non anonymous
-                    if (array_key_exists($vid, $users) && is_array($users[$vid])) { // and if the user data can be found
-                        $line[1] = $users[$vid]['nom']; // adds the user data (in the first fields of the line)
-                        $line[2] = $users[$vid]['prenom'];
-                        $line[3] = $users[$vid]['promo'];
+                    if (array_key_exists($vid, $users)) { // and if the user data can be found
+                        $line[1] = $users[$vid]->lastName(); // adds the user data (in the first fields of the line)
+                        $line[2] = $users[$vid]->firstName();;
+                        $line[3] = $users[$vid]->promo();
                     }
                 }
                 $vid_++;
@@ -240,7 +234,6 @@ class Survey
                 }
                 $line[$fid] .= $a; // adds the current answer to the correct field
             }
-            $cur = $res->next(); // gets next answer
         }
         fputcsv($csv, $line, $sep, $enc); // stores the last line into $csv_output
         return $csv_output;