X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fsurvey%2Fsurvey.inc.php;h=299b7fb0495e866cf2fcf6c0c8383899338429e4;hb=245923e335d0da5bec9495991a7846be9f0563ab;hp=6d8a41028df2e7b01ad5f166f299fafba8e764e9;hpb=00ca0ad5370df5be4a0272364fb16a4385ffabfe;p=platal.git diff --git a/modules/survey/survey.inc.php b/modules/survey/survey.inc.php index 6d8a410..299b7fb 100644 --- a/modules/survey/survey.inc.php +++ b/modules/survey/survey.inc.php @@ -65,6 +65,7 @@ class Survey private $promos; private $valid; private $questions; + private $creator; public function __construct($args, $id = -1, $valid = false, $questions = null) { @@ -79,13 +80,19 @@ class Survey $this->title = $args['title']; $this->description = $args['description']; $this->end = $args['end']; - $this->mode = (isset($args['mode']))? $args['mode'] : self::MODE_ALL; + $this->mode = (isset($args['mode']))? $args['mode'] : self::MODE_ALL; + $this->creator = $args['uid']; 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'] : '#'; } + + public function canSeeEarlyResults(User $user) + { + return $user->id() == $this->creator || $user->checkPerms('admin'); + } // }}} // {{{ functions to access general information @@ -104,7 +111,9 @@ class Survey 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; } } @@ -198,10 +207,9 @@ class Survey } $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; @@ -355,7 +363,7 @@ class Survey // {{{ static function retrieveSurvey() : gets a survey in database (and unserialize the survey object structure) public static function retrieveSurvey($sid) { - $sql = 'SELECT questions, title, description, end, mode, promos + $sql = 'SELECT questions, title, description, end, mode, promos, uid FROM surveys WHERE id={?}'; $res = XDB::query($sql, $sid); @@ -382,7 +390,6 @@ class Survey // {{{ static function retrieveSurveyReq() : gets a survey request to validate public static function retrieveSurveyReq($id) { - require_once 'validations.inc.php'; $surveyreq = Validate::get_request_by_id($id); if ($surveyreq == null) { return null; @@ -400,7 +407,6 @@ class Survey // {{{ function proposeSurvey() : stores a proposition of survey in database (before validation) public function proposeSurvey() { - require_once 'validations.inc.php'; $surveyreq = new SurveyReq($this->title, $this->description, $this->end, $this->mode, $this->promos, $this->questions, S::user()); return $surveyreq->submit(); } @@ -420,7 +426,6 @@ class Survey WHERE id={?};'; return XDB::execute($sql, serialize($this->questions), $this->title, $this->description, $this->end, $this->mode, $this->promos, $this->id); } else { - require_once 'validations.inc.php'; $surveyreq = Validate::get_request_by_id($this->id); if ($surveyreq == null) { return false;