mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 20:29:29 +00:00
353 lines
11 KiB
PHP
353 lines
11 KiB
PHP
<?php
|
|
/* Copyright (C) 2006 Technikum-Wien
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as
|
|
* published by the Free Software Foundation; either version 2 of the
|
|
* License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
|
*
|
|
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
|
|
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
|
|
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
|
|
*/
|
|
// Formular zum beantworten der Fragen
|
|
require_once('../config.inc.php');
|
|
require_once('../../include/functions.inc.php');
|
|
require_once('../../include/frage.class.php');
|
|
require_once('../../include/vorschlag.class.php');
|
|
require_once('../../include/antwort.class.php');
|
|
|
|
session_start();
|
|
//testumgebung
|
|
//$_SESSION['pruefling_id']=1;
|
|
|
|
//Connection Herstellen
|
|
if(!$conn = pg_pconnect(CONN_STRING))
|
|
die('Fehler beim oeffnen der Datenbankverbindung');
|
|
|
|
if(isset($_GET['gebiet_id']))
|
|
$gebiet_id = $_GET['gebiet_id'];
|
|
else
|
|
die('Gebiet muss uebergeben werden');
|
|
|
|
if(isset($_GET['frage_id']))
|
|
$frage_id = $_GET['frage_id'];
|
|
else
|
|
$frage_id = '';
|
|
|
|
$MAX_VORSCHLAEGE_PRO_ZEILE=4;
|
|
|
|
?>
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
|
<link href="../../skin/cis.css" rel="stylesheet" type="text/css">
|
|
<script language="Javascript">
|
|
function count_down(zeit)
|
|
{
|
|
if(zeit<=0)
|
|
{
|
|
document.location.href='gebietfertig.php';
|
|
//alert('finish');
|
|
}
|
|
else
|
|
{
|
|
zeit = zeit-1;
|
|
minuten = parseInt((zeit/60));
|
|
if(minuten<10)
|
|
minuten = '0'+minuten;
|
|
sekunden = zeit-minuten*60;
|
|
if(sekunden<10)
|
|
sekunden = '0'+sekunden;
|
|
document.getElementById('counter').innerHTML = minuten+':'+sekunden;
|
|
window.setTimeout('count_down('+zeit+')',1000);
|
|
}
|
|
}
|
|
|
|
function checkantwort()
|
|
{
|
|
val = document.getElementById('antwort').value;
|
|
if(val.length>1)
|
|
{
|
|
alert('Antwort darf nur 1 Buchstabe sein');
|
|
return false;
|
|
}
|
|
if(val.length==0)
|
|
return true;
|
|
if(val.toUpperCase()<'A' || val.toUpperCase>'Z')
|
|
{
|
|
alert('Antwort darf nur ein Buchstabe von A-Z sein');
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
</script>
|
|
</head>
|
|
|
|
<body>
|
|
<?php
|
|
if(!isset($_SESSION['pruefling_id']))
|
|
die('Bitte zuerst anmelden!');
|
|
|
|
//Gruppe des Prueflings holen
|
|
$qry = "SELECT * FROM testtool.tbl_pruefling WHERE pruefling_id='".addslashes($_SESSION['pruefling_id'])."'";
|
|
|
|
if($result = pg_query($conn, $qry))
|
|
{
|
|
if($row = pg_fetch_object($result))
|
|
{
|
|
$gruppe = $row->gruppe_kurzbz;
|
|
}
|
|
else
|
|
die('Pruefling wurde nicht gefunden');
|
|
}
|
|
else
|
|
die('Pruefling wurde nicht gefunden');
|
|
|
|
//Start des Pruefungsvorganges
|
|
if(isset($_GET['start']))
|
|
{
|
|
//Erste Frage holen und Begintime eintragen
|
|
$qry = "SELECT frage_id FROM testtool.tbl_frage WHERE gebiet_id='".addslashes($gebiet_id)."' AND gruppe_kurzbz='$gruppe' AND demo=false AND nummer>0 ORDER BY nummer ASC LIMIT 1";
|
|
$result = pg_query($conn, $qry);
|
|
$row = pg_fetch_object($result);
|
|
$antwort = new antwort($conn);
|
|
$antwort->frage_id = $row->frage_id;
|
|
$antwort->pruefling_id = $_SESSION['pruefling_id'];
|
|
$antwort->begintime = date('Y-m-d H:i:s');
|
|
$antwort->new = true;
|
|
if(!$antwort->save())
|
|
die('Fehler beim Startvorgang');
|
|
}
|
|
|
|
//Speichern einer Antwort
|
|
if(isset($_POST['submitantwort']) && isset($_GET['frage_id']))
|
|
{
|
|
$antwort = new antwort($conn);
|
|
if($_POST['antwort_id']!='')
|
|
{
|
|
if(!$antwort->load($_POST['antwort_id']))
|
|
die('Antwort konnte nicht geladen werden');
|
|
else
|
|
{
|
|
$antwort->new = false;
|
|
$antwort->antwort_id = $_POST['antwort_id'];
|
|
}
|
|
}
|
|
else
|
|
$antwort->new = true;
|
|
|
|
$antwort->frage_id = $_GET['frage_id'];
|
|
$antwort->pruefling_id = $_SESSION['pruefling_id'];
|
|
$antwort->antwort = trim(strtoupper($_POST['antwort']));
|
|
$antwort->endtime = date('Y-m-d H:i:s');
|
|
if(!$antwort->save())
|
|
die('Fehler beim Speichern');
|
|
else
|
|
{
|
|
$frage = new frage($conn);
|
|
$frage_id = $frage->getNextFrage($gebiet_id, $gruppe, $frage_id);
|
|
}
|
|
}
|
|
|
|
//Schauen ob dieses Gebiet schon gestartet wurde
|
|
$qry = "SELECT count(*) as anzahl FROM testtool.tbl_antwort JOIN testtool.tbl_frage USING(frage_id) WHERE pruefling_id='".addslashes($_SESSION['pruefling_id'])."' AND gebiet_id='".addslashes($gebiet_id)."'";
|
|
|
|
if($result = pg_query($conn, $qry))
|
|
{
|
|
if($row = pg_fetch_object($result))
|
|
{
|
|
if($row->anzahl>0)
|
|
{
|
|
//Hat bereits Fragen beantwortet -> Frage anzeigen
|
|
$demo=false;
|
|
}
|
|
else
|
|
{
|
|
//Demo anzeigen
|
|
$demo=true;
|
|
}
|
|
}
|
|
else
|
|
die('error');
|
|
}
|
|
else
|
|
die('error');
|
|
|
|
//Zeit des Gebietes holen
|
|
echo '<table width="100%"><tr><td align="right">';
|
|
|
|
$qry = "SELECT zeit FROM testtool.tbl_gebiet WHERE gebiet_id='".addslashes($gebiet_id)."'";
|
|
|
|
$result = pg_query($conn, $qry);
|
|
if(!$row = pg_fetch_object($result))
|
|
die('Gebiet wurde nicht gefunden');
|
|
list($stunde, $minute, $sekunde) = split(':',$row->zeit);
|
|
|
|
if($demo)
|
|
{
|
|
//Wenn es sich um ein Demobeispiel handelt, dann wird die Maximale Gesamtzeit angezeigt
|
|
echo $minute.':'.$sekunde.' Minuten ';
|
|
echo "<input type=\"button\" value=\"Start\" onclick=\"document.location.href='$PHP_SELF?gebiet_id=$gebiet_id&start=true'\">";
|
|
}
|
|
else
|
|
{
|
|
//Wenn es sich um eine Testfrage handelt, dann wird die verbleibende Zeit angezeigt
|
|
$qry = "SELECT '$row->zeit'-(now()-min(begintime)) as time FROM testtool.tbl_antwort JOIN testtool.tbl_frage USING(frage_id) WHERE gebiet_id='".addslashes($gebiet_id)."' AND pruefling_id='".addslashes($_SESSION['pruefling_id'])."'";
|
|
$result = pg_query($conn, $qry);
|
|
$row = pg_fetch_object($result);
|
|
//Zeit in Sekunden umrechnen
|
|
list($stunde, $minute, $sekunde) = split(':',$row->time);
|
|
$zeit = (int) ($stunde*60*60+$minute*60+$sekunde);
|
|
//Wenn die Zeit negativ ist und die Stunde 0 ist,
|
|
//dann muss die Zeit mit -1 multipliziert werden
|
|
if(substr($stunde,0,1)=='-' && $stunde==0)
|
|
{
|
|
$zeit = $zeit*-1;
|
|
}
|
|
|
|
echo '<span id="counter"></span> Minuten';
|
|
echo "<script>count_down($zeit)</script>";
|
|
}
|
|
echo '</td></tr>';
|
|
echo '</table>';
|
|
|
|
//Laden der Frage
|
|
$frage = new frage($conn);
|
|
|
|
if($frage_id!='') //Frage wurde uebergeben
|
|
{
|
|
$frage->load($frage_id);
|
|
}
|
|
else
|
|
{
|
|
if($demo) //Demofrage wird angezeigt
|
|
{
|
|
$qry = "SELECT frage_id FROM testtool.tbl_frage WHERE gebiet_id='".addslashes($gebiet_id)."' AND gruppe_kurzbz='$gruppe' AND demo=true ORDER BY nummer ASC LIMIT 1";
|
|
$result = pg_query($conn, $qry);
|
|
if($row = pg_fetch_object($result))
|
|
$frage->load($row->frage_id);
|
|
}
|
|
else //Testfrage wird angezeigt
|
|
{
|
|
$qry ="SELECT frage_id FROM testtool.tbl_frage WHERE gebiet_id='".addslashes($gebiet_id)."' AND gruppe_kurzbz='$gruppe' AND nummer>0 AND demo=false ORDER BY nummer ASC LIMIT 1";
|
|
$result = pg_query($conn, $qry);
|
|
if($row = pg_fetch_object($result))
|
|
$frage->load($row->frage_id);
|
|
}
|
|
}
|
|
|
|
//Anzeigen der Frage
|
|
if($frage->frage_id!='')
|
|
{
|
|
$frage_id = $frage->frage_id;
|
|
|
|
if(!$demo)
|
|
{
|
|
//Nachschauen ob diese Frage bereits angesehen wurde
|
|
$antwort = new antwort($conn);
|
|
if(!$antwort->getAntwort($_SESSION['pruefling_id'],$frage_id))
|
|
{
|
|
//wenn diese noch nicht angesehen wurde, dann wird die begintime gesetzt
|
|
$antwort = new antwort($conn);
|
|
$antwort->begintime = date('Y-m-d H:i:s');
|
|
$antwort->pruefling_id = $_SESSION['pruefling_id'];
|
|
$antwort->frage_id = $frage_id;
|
|
$antwort->new = true;
|
|
if(!$antwort->save())
|
|
echo 'Fehler beim Speichern der Erstansicht';
|
|
}
|
|
}
|
|
echo '<br><br><center>';
|
|
//Bild und Text der Frage anzeigen
|
|
if($frage->bild!='')
|
|
echo "<img src='bild.php?src=frage&frage_id=$frage->frage_id'><br><br>\n";
|
|
echo "$frage->text<br><br>\n";
|
|
|
|
//Vorschlaege laden
|
|
$vs = new vorschlag($conn);
|
|
$vs->getVorschlag($frage->frage_id);
|
|
echo '<table cellspacing="30px">';
|
|
echo '<tr>';
|
|
$anzahl = 1;
|
|
//Vorschlaege anzeigen
|
|
foreach ($vs->result as $vorschlag)
|
|
{
|
|
echo "\n<td align=center>";
|
|
echo "$vorschlag->antwort<br>";
|
|
if($vorschlag->bild!='')
|
|
echo "<img src='bild.php?src=vorschlag&vorschlag_id=$vorschlag->vorschlag_id'><br>";
|
|
if($vorschlag->text!='')
|
|
echo $vorschlag->text.'<br>';
|
|
echo "</td>";
|
|
$anzahl++;
|
|
|
|
if($anzahl>$MAX_VORSCHLAEGE_PRO_ZEILE)
|
|
{
|
|
echo '</tr><tr>';
|
|
$anzahl=1;
|
|
}
|
|
}
|
|
echo '</tr></table>';
|
|
//Antwort laden falls bereits vorhanden
|
|
$antwort = new antwort($conn);
|
|
$antwort->getAntwort($_SESSION['pruefling_id'],$frage->frage_id);
|
|
echo "<form action=\"$PHP_SELF?gebiet_id=$gebiet_id&frage_id=$frage->frage_id\" method=\"POST\">";
|
|
echo "<input type=\"hidden\" name=\"antwort_id\" value=\"$antwort->antwort_id\">";
|
|
echo "Antwort: <input type=\"text\" size=\"1\" id=\"antwort\" name=\"antwort\" value=\"".htmlentities(addslashes($antwort->antwort))."\"> <input ".($demo?'type="button"':'type="submit"')." name=\"submitantwort\" onclick=\"return checkantwort()\" value=\"Speichern\">";
|
|
echo "</form>";
|
|
|
|
echo '<br><br><br>';
|
|
//Fusszeile mit Weiter Button und Sprung direkt zu einer Frage
|
|
if(!$demo)
|
|
{
|
|
$qry = "SELECT nummer, frage_id FROM testtool.tbl_frage WHERE gebiet_id='".addslashes($gebiet_id)."' AND gruppe_kurzbz='$gruppe' AND demo=false ORDER BY nummer";
|
|
|
|
//Nummern der Fragen Anzeigen
|
|
$result = pg_query($conn, $qry);
|
|
while($row = pg_fetch_object($result))
|
|
{
|
|
if($row->frage_id==$frage_id)
|
|
echo " <u>$row->nummer</u> -";
|
|
else
|
|
echo " <a href='$PHP_SELF?gebiet_id=$gebiet_id&frage_id=$row->frage_id' class='Item'>$row->nummer</a> -";
|
|
}
|
|
}
|
|
|
|
//Naechste Frage holen und Weiter-Button anzeigen
|
|
$frage = new frage($conn);
|
|
$nextfrage = $frage->getNextFrage($gebiet_id, $gruppe, $frage_id, $demo);
|
|
if($nextfrage)
|
|
{
|
|
echo " <a href='$PHP_SELF?gebiet_id=$gebiet_id&frage_id=$nextfrage' class='Item'>Weiter >></a>";
|
|
}
|
|
else
|
|
{
|
|
//Wenns der letzte Eintrag ist, wieder zum ersten springen
|
|
echo " <a href='$PHP_SELF?gebiet_id=$gebiet_id' class='Item'>Weiter >></a>";
|
|
}
|
|
|
|
echo '</center>';
|
|
}
|
|
else
|
|
{
|
|
//Wenn kein Demo vorhanden ist
|
|
echo "<br><br><br><center><b>Start drücken um zu beginnen</b></center>";
|
|
}
|
|
?>
|
|
|
|
</body>
|
|
</html>
|