2 /***************************************************************************
3 * Copyright (C) 2003-2011 Polytechnique.org *
4 * http://opensource.polytechnique.org/ *
6 * This program is free software; you can redistribute it and/or modify *
7 * it under the terms of the GNU General Public License as published by *
8 * the Free Software Foundation; either version 2 of the License, or *
9 * (at your option) any later version. *
11 * This program is distributed in the hope that it will be useful, *
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
14 * GNU General Public License for more details. *
16 * You should have received a copy of the GNU General Public License *
17 * along with this program; if not, write to the Free Software *
19 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
20 ***************************************************************************/
22 class SurveyQuestionMultiple
extends SurveyQuestion
24 public function __construct(Survey
$survey)
26 parent
::__construct($survey);
27 $this->type
= "multiple";
30 protected function buildAnswer(SurveyAnswer
$answer, PlDict
$data)
32 $content = $data->v($this->qid
);
33 $value = $content['answers'];
35 $answer->answer
= null
;
38 if ($this->parameters
['subtype'] == 'radio') {
39 if (count($value) > 1) {
40 throw new Exception("You cannot select more than one answer");
44 $answers['answers'] = array();
45 foreach ($value as $key=>$text) {
46 if (can_convert_to_integer($key)) {
47 $key = to_integer($key);
48 if ($text != $this->parameters
['answers'][$key]) {
49 throw new Exception("Answer text does not match");
51 $answers['answers'][] = $key;
52 } else if ($key != 'other') {
53 throw new Exception("Unsupported answer id $key");
54 } else if (!$this->parameters
['allow_other']) {
55 throw new Exception("Got 'Other' answer while not supported");
56 } else if (!isset($content['other'])) {
57 $answers['other'] = '';
59 $answers['other'] = $content['other'];
63 $answer->answer
= null
;
66 $answer->answer
= $answers;