Commit | Line | Data |
---|---|---|
3ddf2584 FB |
1 | <?php |
2 | /*************************************************************************** | |
3 | * Copyright (C) 2003-2011 Polytechnique.org * | |
4 | * http://opensource.polytechnique.org/ * | |
5 | * * | |
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. * | |
10 | * * | |
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. * | |
15 | * * | |
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 * | |
18 | * Foundation, Inc., * | |
19 | * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * | |
20 | ***************************************************************************/ | |
21 | ||
22 | class SurveyQuestionMultiple extends SurveyQuestion | |
23 | { | |
24 | public function __construct(Survey $survey) | |
25 | { | |
26 | parent::__construct($survey); | |
27 | $this->type = "multiple"; | |
28 | } | |
29 | ||
30 | protected function buildAnswer(SurveyAnswer $answer, PlDict $data) | |
31 | { | |
32 | $content = $data->v($this->qid); | |
2f854773 | 33 | $value = $content['answers']; |
3ddf2584 FB |
34 | if (empty($value)) { |
35 | $answer->answer = null; | |
36 | return true; | |
37 | } | |
2f854773 FB |
38 | if ($this->parameters['subtype'] == 'radio') { |
39 | if (count($value) > 1) { | |
40 | throw new Exception("You cannot select more than one answer"); | |
3ddf2584 | 41 | } |
2f854773 FB |
42 | } |
43 | $answers = array(); | |
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"); | |
50 | } | |
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'] = ''; | |
58 | } else { | |
59 | $answers['other'] = $content['other']; | |
3ddf2584 | 60 | } |
2f854773 FB |
61 | } |
62 | if (empty($value)) { | |
63 | $answer->answer = null; | |
64 | return false; | |
3ddf2584 | 65 | } else { |
2f854773 | 66 | $answer->answer = $answers; |
3ddf2584 FB |
67 | } |
68 | return true; | |
69 | } | |
70 | } | |
71 | ||
72 | ?> |