43 require_once(
"../config.php");
44 require_once(
"../inc/user.class.php");
45 require_once(
"../inc/tools.php");
46 require_once(
"../inc/check_login.php");
48 require_once(
"../inc/db.class.php");
49 require_once(
"../inc/config.class.php");
50 require_once(
"../inc/auth.class.php");
52 require_once(
"../inc/poll.class.php");
53 require_once(
"../inc/messages.class.php");
54 require_once(
"../inc/html.class.php");
56 $db=
new db( DB_USER, DB_PASS, DB_DATABASE, DB_HOST );
68 if( (isset($_GET[
"action"])) AND ($_GET[
"action"] ==
"import_XML_poll") ){
71 if( (! isset($_POST[
"add_poll"])) AND (! isset(
$t)) ){
81 header(
"Location: index.php");
93 if( (isset($_GET[
"action"])) AND ($_GET[
"action"] ==
"duplicate") AND ($poll->status ==
STATUS_SHARED_TEMPLATE) ){
94 if( $poll->is_group_in_groups( $_SESSION[
"user"]->group) ){
95 $dup_poll =
$db->duplicate_poll($poll->ID);
99 $db->garbage_collect_result_table($dup_poll);
100 if( (in_array($_SESSION[
"user"]->group,explode(
",",TEACHER_GROUP)) ) ){
102 $db->klassenliste(
$au,$dup_poll);
104 header(
"location: index.php");
110 if( (!isset($_POST[
"add_poll"])) AND !( (isset($_GET[
"action"])) AND ($_GET[
"action"] ==
"import_XML_poll")) ){
111 if( (intval($_SESSION[
"user"]->ID) !== intval($poll->owner) ) AND
112 ( !in_array(
"{$_SESSION["user"]->ID}",explode(
",",SUPER_ADMIN) )) ){
113 die(
"Umfrage Bearbeiten nicht erlaubt.");
117 if( isset($_GET[
"action"]) ){
120 if( ($_GET[
"action"] ==
"rm") AND (isset($_POST[
"rmpoll_confirm"])) ){
121 $old_status = $poll->status;
124 header(
"location: index.php?page=archive");
126 header(
"location: index.php?page=templates");
128 header(
"location: index.php");
131 }
else if( ($_GET[
"action"] ==
"rm") AND (isset($_POST[
"cancel_action"])) ){
132 header(
"location: index.php");
134 }
else if( ($_GET[
"action"] ==
"rm") ){
135 $edit=
"confirm poll remove";
138 }
else if( ($_GET[
"action"] ==
"share") AND (isset($_POST[
"share_confirm"])) ){
140 $_SESSION[
"last_poll_edit"] = $poll->ID;
141 header(
"location: index.php?page=templates#poll{$poll->ID}");
143 }
else if( ($_GET[
"action"] ==
"share") AND (isset($_POST[
"cancel_action"])) ){
144 header(
"location: index.php?page=templates");
146 }
else if( ($_GET[
"action"] ==
"share") ){
147 $edit=
"confirm poll share";
150 }
else if( ($_GET[
"action"] ==
"unshare") ){
152 $_SESSION[
"last_poll_edit"] = $poll->ID;
153 header(
"location: index.php?page=templates#poll{$poll->ID}");
157 }
else if( ($_GET[
"action"] ==
"archive") ){
159 header(
"location: index.php");
163 }
else if( ($_GET[
"action"] ==
"unarchive") ){
165 $_SESSION[
"last_poll_edit"] = $poll->ID;
166 header(
"location: index.php#poll{$poll->ID}");
170 }
else if( ($_GET[
"action"] ==
"export") ){
171 $db->garbage_collect_result_table($poll);
172 if( isset($_GET[
"export_poll_dl"]) ){
173 $poll->handle_export_edit(
$db,
true);
175 }
else if(isset($_GET[
"export_poll_show"])){
176 $poll->handle_export_edit(
$db,
false);
178 }
else if(isset($_GET[
"export_poll_show_html"])){
179 $edit =
"show html results";
183 }
else if( ($_GET[
"action"] ==
"duplicate") ){
184 $dup_poll =
$db->duplicate_poll($poll->ID);
186 $db->update_poll_field($dup_poll->ID,
"name",
"Kopie von ".$dup_poll->name);
187 $db->garbage_collect_result_table($dup_poll);
188 if( (in_array($_SESSION[
"user"]->group,explode(
",",TEACHER_GROUP)) ) ){
190 $db->klassenliste(
$au,$dup_poll);
192 $_SESSION[
"last_poll_edit"] = $dup_poll->ID;
193 header(
"location: index.php#poll{$dup_poll->ID}");
197 }
else if( ($_GET[
"action"] ==
"set_template") ){
198 $p =
$db->duplicate_poll($poll->ID);
200 $_SESSION[
"last_poll_edit"] = $p->ID;
201 header(
"location: index.php?page=templates#poll{$p->ID}");
205 }
else if( ($_GET[
"action"] ==
"regenerate_link") ){
206 $r = $poll->make_id_hash();
207 $db->update_poll_field($poll->ID,
"hashID",
$r);
208 header(
"Location: edit.php?pollID={$poll->ID}" );
212 }
else if( ($_GET[
"action"] ==
"toggle_polltype") AND (isset($_POST[
"toggle_polltype_confirm"])) ){
214 $db->convert_polltype_A2S($poll);
216 $db->convert_polltype_S2A($poll);
218 header(
"location: edit.php?pollID={$poll->ID}");
220 }
else if( ($_GET[
"action"] ==
"toggle_polltype") AND (isset($_POST[
"cancel_action"])) ){
221 header(
"location: edit.php?pollID={$poll->ID}");
223 }
else if( ($_GET[
"action"] ==
"toggle_polltype") ){
224 $edit=
"confirm toggle polltype";
227 }
else if( $_GET[
"action"] ==
"toggle_anonymous" ){
231 if( $poll->anonymous ===
false ){
233 }
else if($poll->anonymous ===
true){
239 header(
"Location: edit.php?pollID={$poll->ID}" );
243 }
else if( $_GET[
"action"] ==
"toggle_public" ){
247 if( $poll->is_public ===
false ){
249 if( $poll->anonymous ==
false ){
250 $err2 = $poll->set_anonymous(
$db,
$au,
true);
256 }
else if($poll->is_public ===
true){
262 header(
"Location: edit.php?pollID={$poll->ID}" );
266 }
else if( ($_GET[
"action"] ==
"export_XML_poll") ){
267 require_once(
"../inc/xml.class.php");
269 $fn =
"Umfrage-".$poll->ID;
270 if( (isset($poll->name)) AND ($poll->name !=
"") ){
271 $fn = preg_replace(array(
'/\s/',
'/\.[\.]+/',
'/[^\w_\.\-]/'), array(
'_',
'.',
''), $poll->name);
274 header(
'Content-type: text/xml; charset="utf-8"');
275 header(
"Content-Disposition: attachment; filename=$fn.xml");
276 header(
"Expires: 0");
277 header(
"Cache-Control: must-revalidate, post-check=0, pre-check=0");
279 $xml = $xmlobj->export($poll);
281 $dom =
new DOMDocument(
'1.0',
"UTF-8");
282 $dom->preserveWhiteSpace =
false;
283 $dom->formatOutput =
true;
285 echo $dom->saveXML();
290 else if( ($_GET[
"action"] ==
"import_XML_poll") ){
291 if( isset($_FILES[
"pollxmlfile"]) ){
292 $finfo =
new finfo();
293 $mime = $finfo->file($_FILES[
"pollxmlfile"][
"tmp_name"],FILEINFO_MIME_TYPE);
294 if( ($mime ===
"application/xml") OR ($mime ===
"application/xml") ){
295 require_once(
"../inc/xml.class.php");
296 $xml = file_get_contents( $_FILES[
"pollxmlfile"][
"tmp_name"] );
302 $poll->owner = $_SESSION[
"user"]->ID;
303 $poll->owner_fn = $_SESSION[
"user"]->fullName;
304 $db->insert_poll($poll);
306 $md = $poll->make_id_hash();
307 $db->update_poll_field($poll->ID,
"hashID",$md);
308 $db->update_poll_field($poll->ID,
"timeout",$poll->timeout);
309 $db->update_poll_field($poll->ID,
"active_since",$poll->active_since);
310 $poll->save_groups(
$db);
312 $poll->save_noDisplay(
$db);
314 foreach( $poll->widget_list as
$widget ){
315 $widget->pollID = $poll->ID;
316 if( is_numeric($widget->name) ){
320 $childs = $widget->get_all_childs();
321 foreach( $childs as $child ){
322 $child->pollID = $poll->ID;
326 $db->insert_widget($widget,$poll->type);
329 $messages->add_message(
new errorMessage(
"Diese XML-Datei enthält keine Umfragenbeschreibung (oder ist kaputt). Bitte eine gültige Datei hochladen.") );
332 $messages->add_message(
new errorMessage(
"Dies ist keine gültige XML-Datei. Bitte eine xml-Datei, die die Beschreibung einer Umfrage enthält zum Hochladen angeben.") );
335 $_SESSION[
"last_poll_edit"] = $poll->ID;
337 header(
"Location: index.php");
341 $messages->add_message(
new errorMessage(
"Bitte eine xml-Datei, die die Beschreibung einer Umfrage enthält zum Hochladen angeben.") );
349 }
else if( isset($_POST[
"add_poll"]) ){
351 $r = $poll->handle_name_edit();
354 $poll->owner = $_SESSION[
"user"]->ID;
355 $poll->owner_fn = $_SESSION[
"user"]->fullName;
356 if( isset($_POST[
"poll_type"]) ){
357 if($_POST[
"poll_type"] ==
"simple"){
359 }
else if ($_POST[
"poll_type"] ==
"advanced"){
368 $poll->handle_anonymous_edit();
370 $db->insert_poll($poll);
371 header(
"Location: edit.php?pollID={$poll->ID}");
374 header(
"Location: index.php");
384 $navbar = array( 0 => array(
"name"=>
"Backend",
"href"=>
"index.php",
"onclick"=>
"") );
385 $navbar[] = array(
"name"=>
"Umfrage {$poll->ID} Bearbeiten" ,
"href"=>
"" ,
"onclick"=>
"");
396 if(
$edit ==
"confirm poll remove"){
397 print_warning(
"Umfrage <b>{$poll->name}</b> mit der ID <b>{$poll->ID}</b> wirklich löschen?");
398 echo
"<form method='POST' action=''>";
399 echo
"<input type='submit' name='cancel_action' value='Abbrechen' />";
400 echo
"<input type='submit' name='rmpoll_confirm' value='Ja, wirklich' />";
404 }
else if(
$edit ==
"confirm poll share"){
407 $map =
$au->get_gid_to_name_mapping();
408 unset(
$au); $gr =
"";
409 if( in_array(
"*",$poll->groups) ){
410 $gr =
"<li>Alle Klassen</li>";
412 foreach( $poll->groups as $group ){
413 if( isset($map[$group]) ){
414 $gr = $gr.
"<li>{$map[$group]}</li>";
418 $text =
"Umfrage <b>{$poll->name}</b> mit der ID <b>{$poll->ID}</b> wirklich mit folgenden Klassen teilen? <br/> <ul>$gr</ul>";
420 echo
"<p>Die Klassenbeschränkung der Umfrage gibt vor, mit welchen Klassen diese Umfrage geteilt wird.</p>";
421 echo
"<p> <a href='edit.php?pollID={$poll->ID}'>Klassen ändern</a></p>";
422 echo
"<form method='POST' action=''>";
423 echo
"<input type='submit' name='cancel_action' value='Abbrechen' />";
424 echo
"<input type='submit' name='share_confirm' value='teilen' />";
428 }
else if(
$edit ==
"confirm toggle polltype"){
430 echo
"<p>Das konvertieren der Umfrage in den erweiterten Modus dient zur Unterstützung und erleicherung externer Datenbankabfragen.</p>";
431 echo
"<p>Es tauchen in den Frageeinstellungen weitere Optionen für die Datenbank auf.</p>";
432 $text =
"Umfrage in den erweiterten Modus konvertieren?";
434 echo
"<p>Das Konvertieren der Umfrage in den einfachen Modus löscht die vergebenden Datenbanknamen der Fragen.</p>";
435 echo
"<p>Externe Programme, die auf die Datenbank zugriff haben könnten nicht mehr richtig mit der Umfragesoftware zusammen funktionieren.</p>";
436 $text =
"Umfrage in den einfachen Modus konvertieren und eingestellte Datenbanknamen der Fragen überschreiben?";
439 echo
"<form method='POST' action=''>";
440 echo
"<input type='submit' name='cancel_action' value='Abbrechen' />";
441 echo
"<input type='submit' name='toggle_polltype_confirm' value='Konvertieren' />";