Merge css files.
[platal.git] / modules / survey.php
CommitLineData
8fe81c50 1<?php
2/***************************************************************************
5e1513f6 3 * Copyright (C) 2003-2011 Polytechnique.org *
8fe81c50 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
22class SurveyModule extends PLModule
23{
8fe81c50 24 function handlers()
25 {
26 return array(
2f4b93be
FB
27 'survey' => $this->make_hook('index', AUTH_COOKIE),
28 'survey/vote' => $this->make_hook('vote', AUTH_COOKIE),
eb5a266d 29 'survey/edit' => $this->make_hook('edit', AUTH_COOKIE),
d0b836c9
FB
30 /*
31 'survey/result' => $this->make_hook('result', AUTH_COOKIE),
eb5a266d
SJ
32 'survey/ajax' => $this->make_hook('ajax', AUTH_COOKIE),
33 'survey/admin' => $this->make_hook('admin', AUTH_MDP, 'admin'),
34 'survey/admin/edit' => $this->make_hook('adminEdit', AUTH_MDP, 'admin'),
8fe81c50 35 'survey/admin/valid' => $this->make_hook('adminValidate', AUTH_MDP, 'admin'),
eb5a266d 36 'survey/admin/del' => $this->make_hook('adminDelete', AUTH_MDP, 'admin'),
2f4b93be 37 */ );
8fe81c50 38 }
8fe81c50 39
22264cd4 40 private function setup_page(PlPage $page)
8fe81c50 41 {
460d8f55 42 $this->load('survey.inc.php');
b7bad73e 43 $page->addJsLink('jquery.ui.xorg.js');
22264cd4
FB
44 $page->addJsLink('survey.js');
45 }
46
47 function handler_index(&$page, $action = null)
48 {
49 $this->setup_page($page);
5c6e38d7 50
2f4b93be
FB
51 $page->changeTpl('survey/index.tpl');
52 $page->assign('active', Survey::iterActive());
56c6950a 53 }
56c6950a 54
2f4b93be 55 function handler_vote(PlPage $page, $name)
9f01f40b 56 {
22264cd4 57 $this->setup_page($page);
2f4b93be 58 $page->changeTpl('survey/vote.tpl');
22264cd4 59
2f4b93be
FB
60 $survey = Survey::get($name);
61 if (is_null($survey)) {
62 return PL_NOT_FOUND;
12678e90 63 }
2f4b93be
FB
64 if (!$survey->canSee(S::user())) {
65 return PL_FORBIDDEN;
95fb3c74 66 }
90343d1e
FB
67 if (Post::has('vote')) {
68 $answers = Post::v('qid');
69 $vote = $survey->vote(S::user(), $answers);
70 if (is_null($vote)) {
71 $page->kill("Tu n'as pas le droit de voter à ce sondage.");
72 } else if ($vote->inError()) {
73 $page->trigError("Certaines réponses sont invalides et doivent être corrigées");
74 } else {
75 $vote->insert(true);
76 $page->trigSuccess("Ton vote a été enregistré");
77 }
78 }
2f4b93be 79 $page->assign('survey', $survey);
8fe81c50 80 }
d0b836c9
FB
81
82 function handler_edit(PlPage $page, $name = null)
83 {
22264cd4 84 $this->setup_page($page);
d0b836c9
FB
85 $page->changeTpl('survey/edit.tpl');
86
87 if (!is_null($name)) {
88 $survey = Survey::get($name);
89 } else {
90 $survey = new Survey();
91 $survey->id = null;
92 $survey->uid = S::user()->id();
93 }
99ec711f
FB
94 if (Post::has('valid')) {
95 $survey->title = Post::t('title');
96 $survey->shortname = Post::t('shortname');
97 $survey->description = Post::t('description');
98 $survey->begin = Post::t('begin');
99 $survey->end = Post::t('end');
100 $survey->flags = 'validated';
22264cd4 101 $survey->flags->addFlag('anonymous', Post::b('anonymous'));
99ec711f
FB
102
103 $q_edit = Post::v('q_edit');
104 $qs = array();
3ddf2584 105 $survey->clearQuestions();
99ec711f
FB
106 foreach ($q_edit as $qid => $q_desc) {
107 if (isset($q_desc['parent'])) {
108 $parent = $qs[$q_desc['parent']];
109 } else {
110 $parent = $survey;
111 }
112 $question = $parent->newQuestion($q_desc['type']);
113 $question->label = $q_desc['label'];
114 unset($q_desc['type']);
115 unset($q_desc['parent']);
116 unset($q_desc['label']);
117 $question->parameters = $q_desc;
118 $qs[$qid] = $question;
119 }
120 $survey->insert('true');
d0b836c9
FB
121 }
122 $page->assign('survey', $survey);
123 }
8fe81c50 124}
125
8602c852 126// vim:set et sw=4 sts=4 ts=4 foldmethod=marker enc=utf-8:
8fe81c50 127?>