Fix French typo: s/formatté/formaté/
[platal.git] / modules / survey / survey.inc.php
index 299b7fb..784dd89 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2010 Polytechnique.org                              *
+ *  Copyright (C) 2003-2014 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
@@ -199,11 +199,11 @@ class Survey
         $nbf = count($line);
         $users = array();
         if ($this->isMode(self::MODE_XIDENT)) { // if the mode is non anonymous
-            $users = User::getBulkUsersWithUIDs(XDB::fetchAllAssoc('vid', 'SELECT  v.id AS vid, v.uid
-                                                                             FROM  survey_votes AS v
-                                                                            WHERE  v.survey_id = {?}
-                                                                         ORDER BY  vid ASC',
-                                                                    $this->id));
+            $users = XDB::fetchAllAssoc('vid', 'SELECT  v.id AS vid, v.uid
+                                                  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
@@ -221,9 +221,10 @@ class Survey
                 $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)) { // 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();
+                        $user=PlUser::getWithUID($users[$vid]);
+                        $line[1] = $user->lastName(); // adds the user data (in the first fields of the line)
+                        $line[2] = $user->firstName();
+                        $line[3] = $user->promo();
                     }
                 }
                 $vid_++;
@@ -314,7 +315,7 @@ class Survey
     // {{{ function checkSyntax() : checks syntax of the questions (currently the root only) before storing the survey in database
     private static $errorMessages = array(
         "datepassed"  => "la date de fin de sondage est déjà dépassée : vous devez préciser une date future",
-        "promoformat" => "les restrictions à certaines promotions sont mal formattées"
+        "promoformat" => "les restrictions à certaines promotions sont mal formatées"
     );
 
     public function checkSyntax()
@@ -348,7 +349,10 @@ class Survey
         default:
             return null;
         }
-        $sql = 'SELECT id, title, end, mode
+        if (!S::user()->checkPerms(PERMS_USER)) {
+            $where .=  XDB::format(' AND mode = {?}', self::MODE_ALL);
+        }
+        $sql = 'SELECT id, title, uid, end, mode
                   FROM surveys
                  WHERE '.$where.'
               ORDER BY end DESC;';
@@ -439,7 +443,8 @@ class Survey
     public function vote($uid, $args)
     {
         XDB::execute('INSERT INTO  survey_votes
-                              SET  survey_id = {?}, uid = {?};', $this->id, $uid); // notes the user as having voted
+                              SET  survey_id = {?}, uid = {?}',
+                     $this->id, ($uid == 0) ? null : $uid); // notes the user as having voted
         $vid = XDB::insertId();
         for ($i = 0; $i < count($this->questions); $i++) {
             $ans = $this->questions[$i]->checkAnswer($args[$i]);
@@ -818,5 +823,5 @@ class SurveyCheckboxTable extends SurveyTable
 // }}}
 // }}}
 
-// vim:set et sw=4 sts=4 ts=4 foldmethod=marker enc=utf-8:
+// vim:set et sw=4 sts=4 ts=4 foldmethod=marker fenc=utf-8:
 ?>