X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fsurvey%2Fsurvey.inc.php;h=6d8a41028df2e7b01ad5f166f299fafba8e764e9;hb=1bf36cd12647c3d2eb8f9ec2a1f0eaad0b5f7e81;hp=c50cc12eb6461f5d89330452987621b27a33df5b;hpb=25fe4c85de79aa601948d788b5754b5b6070080d;p=platal.git diff --git a/modules/survey/survey.inc.php b/modules/survey/survey.inc.php index c50cc12..6d8a410 100644 --- a/modules/survey/survey.inc.php +++ b/modules/survey/survey.inc.php @@ -1,6 +1,6 @@ mode == self::MODE_ALL) { $args['promos'] = ''; } + $args['promos'] = str_replace(' ', '', $args['promos']); $this->promos = ($args['promos'] == '' || preg_match('#^(\d{4}-?|(\d{4})?-\d{4})(,(\d{4}-?|(\d{4})?-\d{4}))*$#', $args['promos']))? $args['promos'] : '#'; } // }}} @@ -189,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.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 @@ -207,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_++; @@ -239,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; @@ -347,7 +341,7 @@ class Survey return null; } $sql = 'SELECT id, title, end, mode - FROM survey_surveys + FROM surveys WHERE '.$where.' ORDER BY end DESC;'; if ($tpl) { @@ -362,7 +356,7 @@ class Survey public static function retrieveSurvey($sid) { $sql = 'SELECT questions, title, description, end, mode, promos - FROM survey_surveys + FROM surveys WHERE id={?}'; $res = XDB::query($sql, $sid); $data = $res->fetchOneAssoc(); @@ -378,7 +372,7 @@ class Survey public static function retrieveSurveyInfo($sid) { $sql = 'SELECT title, description, end, mode, promos - FROM survey_surveys + FROM surveys WHERE id={?}'; $res = XDB::query($sql, $sid); return $res->fetchOneAssoc(); @@ -416,7 +410,7 @@ class Survey public function updateSurvey() { if ($this->valid) { - $sql = 'UPDATE survey_surveys + $sql = 'UPDATE surveys SET questions={?}, title={?}, description={?}, @@ -439,8 +433,8 @@ class Survey // {{{ functions vote() and hasVoted() : handles vote to a survey public function vote($uid, $args) { - XDB::execute('INSERT INTO survey_votes - SET survey_id={?}, user_id={?};', $this->id, $uid); // notes the user as having voted + XDB::execute('INSERT INTO survey_votes + SET survey_id = {?}, uid = {?};', $this->id, $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]); @@ -457,9 +451,9 @@ class Survey public function hasVoted($uid) { - $res = XDB::query('SELECT id - FROM survey_votes - WHERE survey_id={?} AND user_id={?};', $this->id, $uid); // checks whether the user has already voted + $res = XDB::query('SELECT id + FROM survey_votes + WHERE survey_id = {?} AND uid = {?};', $this->id, $uid); // checks whether the user has already voted return ($res->numRows() != 0); } // }}} @@ -468,7 +462,7 @@ class Survey public static function deleteSurvey($sid) { $sql = 'DELETE s.*, v.*, a.* - FROM survey_surveys AS s + FROM surveys AS s LEFT JOIN survey_votes AS v ON v.survey_id=s.id LEFT JOIN survey_answers AS a