<?php
/***************************************************************************
- * Copyright (C) 2003-2009 Polytechnique.org *
+ * Copyright (C) 2003-2010 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
if ($this->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'] : '#';
}
// }}}
if ((preg_match('#^\d{4}$#', $p) && $p == $promo) ||
(preg_match('#^\d{4}-$#', $p) && intval(substr($p, 0, 4)) <= $promo) ||
(preg_match('#^-\d{4}$#', $p) && intval(substr($p, 1)) >= $promo) ||
- (preg_match('#^\d{4}-\d{4}$#', $p) && intval(substr($p, 0, 4)) <= $promo && intval(substr($p, 5)) >= $promo)) {
+ (preg_match('#^\d{4}-\d{4}$#', $p) &&
+ (intval(substr($p, 0, 4)) <= $promo && intval(substr($p, 5)) >= $promo ||
+ intval(substr($p, 0, 4)) >= $promo && intval(substr($p, 5)) <= $promo ))) {
return true;
}
}
$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.user_id
+ $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',
}
$sql = 'SELECT v.id AS vid, a.question_id AS qid, a.answer AS answer
FROM survey_votes AS v
- LEFT JOIN survey_answers AS a
- ON a.vote_id=v.id
+ INNER JOIN survey_answers AS a ON a.vote_id=v.id
WHERE v.survey_id={?}
- ORDER BY vid ASC, qid ASC, answer ASC;';
+ ORDER BY vid ASC, qid ASC, answer ASC';
$res = XDB::iterator($sql, $this->id); // retrieves all answers from database
$vid = -1;
$vid_ = 0;
return null;
}
$sql = 'SELECT id, title, end, mode
- FROM survey_surveys
+ FROM surveys
WHERE '.$where.'
ORDER BY end DESC;';
if ($tpl) {
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();
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();
public function updateSurvey()
{
if ($this->valid) {
- $sql = 'UPDATE survey_surveys
+ $sql = 'UPDATE surveys
SET questions={?},
title={?},
description={?},
// {{{ 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]);
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);
}
// }}}
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