Neues Testtool - Run Script system/testtool_aktualisierung.php

This commit is contained in:
Andreas Österreicher
2009-03-05 12:21:49 +00:00
parent 454e9b5012
commit 4b1b014c2e
46 changed files with 7848 additions and 5461 deletions
@@ -530,8 +530,8 @@ else
<!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">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
<link href="../../../../skin/style.css.php" rel="stylesheet" type="text/css">
<title>Kreuzerltool</title>
<script language="Javascript">
function addUser(student_uid)
@@ -35,9 +35,9 @@ require_once('../../../../include/datum.class.php');
<!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">
<title>Kreuzerltool</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
<link href="../../../../skin/style.css.php" rel="stylesheet" type="text/css">
<title>Benotungstool</title>
<script language="JavaScript">
<!--
function MM_jumpMenu(targ, selObj, restore)
@@ -102,7 +102,7 @@ $uebung_id = (isset($_GET['uebung_id'])?$_GET['uebung_id']:'');
echo '<table class="tabcontent">';
echo ' <tr>';
echo '<td class="tdwidth10">&nbsp;</td>';
echo '<td class="ContentHeader"><font class="ContentHeader">&nbsp;Benotungsool';
echo '<td class="ContentHeader"><font class="ContentHeader">&nbsp;Benotungstool';
echo '</font></td><td class="ContentHeader" align="right">'."\n";
//Studiensemester laden
@@ -38,8 +38,8 @@ require_once('../../../../include/legesamtnote.class.php');
<!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">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
<link href="../../../../skin/style.css.php" rel="stylesheet" type="text/css">
<title>Kreuzerltool</title>
<script language="JavaScript">
<!--
@@ -45,8 +45,8 @@ require_once('../../../../include/mail.class.php');
<!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">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
<link href="../../../../skin/style.css.php" rel="stylesheet" type="text/css">
<title>Kreuzerltool</title>
<STYLE TYPE="text/css">
@@ -99,8 +99,8 @@ $text .= "Updated: ".$upgedated."<br>";
<!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">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
<link href="../../../../skin/style.css.php" rel="stylesheet" type="text/css">
<title>Benotungstool</title>
<?php
echo $text;
@@ -35,8 +35,8 @@ require_once('../../../../include/datum.class.php');
<!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">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
<link href="../../../../skin/style.css.php" rel="stylesheet" type="text/css">
<title>Kreuzerltool</title>
<script language="JavaScript">
<!--
@@ -122,8 +122,8 @@ if (isset($_GET["download"])){
<!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">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
<link href="../../../../skin/style.css.php" rel="stylesheet" type="text/css">
<title>Kreuzerltool</title>
<script language="JavaScript">
<!--
@@ -164,9 +164,9 @@ else
<!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">
<title>Kreuzerltool</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
<link href="../../../../skin/style.css.php" rel="stylesheet" type="text/css">
<title>Benotungstool</title>
<script language="JavaScript">
<!--
function MM_jumpMenu(targ, selObj, restore)
@@ -194,7 +194,7 @@ else
echo '<table class="tabcontent" height="100%">';
echo ' <tr>';
echo '<td class="tdwidth10">&nbsp;</td>';
echo '<td class="ContentHeader"><font class="ContentHeader">&nbsp;Benotungsool';
echo '<td class="ContentHeader"><font class="ContentHeader">&nbsp;Benotungstool';
echo '</font></td><td class="ContentHeader" align="right">'."\n";
//Studiensemester laden
@@ -41,8 +41,8 @@ $time = microtime_float();
<!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">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
<link href="../../../../skin/style.css.php" rel="stylesheet" type="text/css">
<title>Kreuzerltool</title>
<script language="JavaScript">
<!--
@@ -76,8 +76,8 @@ if (isset($_GET["download"])){
<!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">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
<link href="../../../../skin/style.css.php" rel="stylesheet" type="text/css">
<title>Kreuzerltool</title>
<script language="JavaScript">
<!--
@@ -1,5 +1,5 @@
<?php
/* Copyright (C) 2006 Technikum-Wien
/* Copyright (C) 2009 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
@@ -16,13 +16,14 @@
* 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>.
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>,
* Rudolf Hangl <rudolf.hangl@technikum-wien.at> and
* Gerald Simane-Sequens <gerald.simane-sequens@technikum-wien.at>.
*/
require_once('../config.inc.php');
require_once('../../include/functions.inc.php');
require_once('../../include/studiengang.class.php');
require_once('../../config.inc.php');
require_once('../../../include/functions.inc.php');
require_once('../../../include/studiengang.class.php');
function sortByField($multArray,$sortField,$desc=true)
{
@@ -67,6 +68,7 @@ if (!$conn = pg_connect(CONN_STRING))
die("Es konnte keine Verbindung zum Server aufgebaut werden.");
$ergebnis='';
$gebiet=array();
$kategorie=array();
$erg_kat=array();
@@ -90,7 +92,10 @@ while ($row=pg_fetch_object($result))
if (isset($_POST['reihungstest']))
{
// Vorkommende Gebiete laden
$sql_query="SELECT DISTINCT gebiet_id, gebiet FROM testtool.vw_auswertung";
$sql_query="SELECT DISTINCT gebiet_id, gebiet FROM testtool.vw_auswertung WHERE reihungstest_id='".addslashes($_POST['reihungstest'])."'";
if(isset($_POST['studiengang']) && $_POST['studiengang']!='')
$sql_query.=" AND tbl_prestudent.studiengang_kz='".addslashes($_POST['studiengang'])."'";
//echo $sql_query;
if(!($result=pg_query($conn, $sql_query)))
die(pg_errormessage($conn));
@@ -100,12 +105,15 @@ if (isset($_POST['reihungstest']))
$gebiet[$row->gebiet_id]->gebiet_id=$row->gebiet_id;
}
// Ergebnisse laden
$sql_query="SELECT vw_auswertung.* FROM testtool.vw_auswertung";
if (isset($_POST['reihungstest']))
$sql_query.=' JOIN public.tbl_prestudent USING (prestudent_id) WHERE reihungstest_id='.$_POST['reihungstest'];
// Alle Personen des Reihungstests laden
$sql_query="SELECT
*
FROM
testtool.vw_auswertung
WHERE
reihungstest_id='".addslashes($_POST['reihungstest'])."'";
if(isset($_POST['studiengang']) && $_POST['studiengang']!='')
$sql_query.=" AND tbl_prestudent.studiengang_kz='".$_POST['studiengang']."'";
$sql_query.=" AND tbl_prestudent.studiengang_kz='".addslashes($_POST['studiengang'])."'";
//echo $sql_query;
if(!($result=pg_query($conn, $sql_query)))
@@ -122,49 +130,62 @@ if (isset($_POST['reihungstest']))
$ergebnis[$row->pruefling_id]->registriert=$row->registriert;
$ergebnis[$row->pruefling_id]->stg_kurzbz=$row->stg_kurzbz;
$ergebnis[$row->pruefling_id]->stg_bez=$row->stg_bez;
$ergebnis[$row->pruefling_id]->gruppe=$row->gruppe_kurzbz;
$ergebnis[$row->pruefling_id]->semester=$row->semester;
$ergebnis[$row->pruefling_id]->gebiet[$row->gebiet_id]->name=$row->gebiet;
$ergebnis[$row->pruefling_id]->gebiet[$row->gebiet_id]->anz_fragen=$row->anz_fragen;
$ergebnis[$row->pruefling_id]->gebiet[$row->gebiet_id]->abzug=$row->abzug;
$ergebnis[$row->pruefling_id]->gebiet[$row->gebiet_id]->anz_richtig=$row->anz_richtig;
$ergebnis[$row->pruefling_id]->gebiet[$row->gebiet_id]->anz_antworten=$row->anz_antworten;
$ergebnis[$row->pruefling_id]->gebiet[$row->gebiet_id]->anz_falsch=$row->anz_falsch;
$ergebnis[$row->pruefling_id]->gebiet[$row->gebiet_id]->punkte=$row->punkte;
$ergebnis[$row->pruefling_id]->gebiet[$row->gebiet_id]->prozent=$row->prozent;
if (isset($ergebnis[$row->pruefling_id]->gesamt))
$ergebnis[$row->pruefling_id]->gesamt+=$row->prozent;
$ergebnis[$row->pruefling_id]->gebiet[$row->gebiet_id]->punkte=(($row->punkte>=$row->maxpunkte)?$row->maxpunkte:$row->punkte);
//wenn maxpunkte ueberschritten wurde -> 100%
if($row->punkte>=$row->maxpunkte)
$prozent=100;
else
$ergebnis[$row->pruefling_id]->gesamt=$row->prozent;
$prozent = ($row->punkte/$row->maxpunkte)*100;
$ergebnis[$row->pruefling_id]->gebiet[$row->gebiet_id]->prozent=$prozent;
if (isset($ergebnis[$row->pruefling_id]->gesamt))
$ergebnis[$row->pruefling_id]->gesamt+=$prozent*$row->gewicht;
else
$ergebnis[$row->pruefling_id]->gesamt=$prozent*$row->gewicht;
}
$ergb=sortByField($ergebnis,'gesamt');
// Vorkommende Kategorien laden
$sql_query="SELECT DISTINCT kategorie_kurzbz FROM testtool.vw_auswertung_kategorie";
if (isset($_POST['reihungstest']))
$sql_query.=' JOIN public.tbl_prestudent USING (prestudent_id) WHERE reihungstest_id='.$_POST['reihungstest'];
$sql_query="SELECT
DISTINCT kategorie_kurzbz,
(SELECT sum(punkte) FROM testtool.tbl_vorschlag JOIN testtool.tbl_frage USING(frage_id)
WHERE tbl_frage.kategorie_kurzbz=vw_auswertung_kategorie.kategorie_kurzbz) as gesamtpunkte
FROM testtool.vw_auswertung_kategorie
WHERE reihungstest_id='".addslashes($_POST['reihungstest'])."'";
if(isset($_POST['studiengang']) && $_POST['studiengang']!='')
$sql_query.=" AND tbl_prestudent.studiengang_kz='".$_POST['studiengang']."'";
//echo $sql_query;
if(!($result=pg_query($conn, $sql_query)))
die(pg_errormessage($conn));
$gesamtpunkte=array();
while ($row=pg_fetch_object($result))
{
$gesamtpunkte[$row->kategorie_kurzbz]=$row->gesamtpunkte;
$kategorie[$row->kategorie_kurzbz]->name=$row->kategorie_kurzbz;
}
// Ergebnisse laden
$sql_query="SELECT vw_auswertung_kategorie.*, tbl_kriterien.typ
FROM (testtool.vw_auswertung_kategorie JOIN testtool.tbl_kriterien USING (kategorie_kurzbz))";
if (isset($_POST['reihungstest']))
$sql_query.=' JOIN public.tbl_prestudent USING (prestudent_id)';
$sql_query.=" WHERE vw_auswertung_kategorie.gebiet_id=tbl_kriterien.gebiet_id AND tbl_kriterien.punkte=vw_auswertung_kategorie.richtig";
if (isset($_POST['reihungstest']))
$sql_query.=' AND reihungstest_id='.$_POST['reihungstest'];
$sql_query="
SELECT
vw_auswertung_kategorie.*,
(SELECT typ FROM testtool.tbl_kriterien
WHERE gebiet_id=vw_auswertung_kategorie.gebiet_id AND punkte=vw_auswertung_kategorie.punkte
AND kategorie_kurzbz=vw_auswertung_kategorie.kategorie_kurzbz) as typ
FROM testtool.vw_auswertung_kategorie
WHERE reihungstest_id='".addslashes($_POST['reihungstest'])."'";
if(isset($_POST['studiengang']) && $_POST['studiengang']!='')
$sql_query.=" AND tbl_prestudent.studiengang_kz='".$_POST['studiengang']."'";
$sql_query.=" AND studiengang_kz='".$_POST['studiengang']."'";
$sql_query.=" ORDER BY pruefling_id, kategorie_kurzbz";
$sql_query.=" ORDER BY nachname, vorname";
//echo $sql_query;
if(!($result=pg_query($conn, $sql_query)))
die(pg_errormessage($conn));
@@ -179,13 +200,9 @@ if (isset($_POST['reihungstest']))
$erg_kat[$row->pruefling_id]->registriert=$row->registriert;
$erg_kat[$row->pruefling_id]->stg_kurzbz=$row->stg_kurzbz;
$erg_kat[$row->pruefling_id]->stg_bez=$row->stg_bez;
$erg_kat[$row->pruefling_id]->gruppe=$row->gruppe_kurzbz;
$erg_kat[$row->pruefling_id]->kategorie[$row->kategorie_kurzbz]->name=$row->kategorie_kurzbz;
$erg_kat[$row->pruefling_id]->kategorie[$row->kategorie_kurzbz]->richtig=$row->richtig;
$erg_kat[$row->pruefling_id]->kategorie[$row->kategorie_kurzbz]->falsch=$row->falsch;
$erg_kat[$row->pruefling_id]->kategorie[$row->kategorie_kurzbz]->gesamt=$row->gesamt;
$erg_kat[$row->pruefling_id]->kategorie[$row->kategorie_kurzbz]->typ=$row->typ;
$erg_kat[$row->pruefling_id]->kategorie[$row->kategorie_kurzbz]->punkte=$row->richtig.'/'.$row->gesamt;
$erg_kat[$row->pruefling_id]->kategorie[$row->kategorie_kurzbz]->punkte=number_format($row->punkte,2).'/'.number_format($gesamtpunkte[$row->kategorie_kurzbz],2);
}
}
@@ -203,8 +220,8 @@ foreach($stg_obj->result as $row)
<head>
<title>Testtool - Auswertung</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="../../skin/cis.css">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
<link rel="stylesheet" href="../../../skin/style.css.php">
</head>
<body>
@@ -221,7 +238,7 @@ Reihungstest w&auml;hlen:&nbsp;
else
$selected = '';
echo '<OPTION value="'.$rt->reihungstest_id.'" '.$selected.'>'.(isset($stg_arr[$rt->studiengang_kz])?$stg_arr[$rt->studiengang_kz]:'').' '.$rt->ort_kurzbz.' '.$rt->anmerkung.' '.$rt->datum.' '.$prestd->rt."</OPTION>\n";
echo '<OPTION value="'.$rt->reihungstest_id.'" '.$selected.'>'.(isset($stg_arr[$rt->studiengang_kz])?$stg_arr[$rt->studiengang_kz]:'').' '.$rt->ort_kurzbz.' '.$rt->anmerkung.' '.$rt->datum."</OPTION>\n";
}
?>
</SELECT>
@@ -231,7 +248,7 @@ Studiengang:
<?php
foreach ($stg_arr as $kz=>$kurzbz)
{
if(isset($_POST['studiengang']) && $_POST['studiengang']==$kz)
if(isset($_POST['studiengang']) && $_POST['studiengang']==$kz && $_POST['studiengang']!='')
$selected='selected';
else
$selected='';
@@ -252,9 +269,9 @@ if (isset($_POST['reihungstest']))
<table id="zeitsperren">
<tr>
<th rowspan="2">ID</th><th rowspan="2">Nachname</th><th rowspan="2">Vornamen</th>
<th rowspan="2">GebDatum</th><th rowspan="2">G</th><th rowspan="2">IdNachweis</th>
<th rowspan="2">GebDatum</th><th rowspan="2">G</th>
<!--<th rowspan="2">IdNachweis</th>-->
<th rowspan="2">Registriert</th><th rowspan="2">STG</th><th rowspan="2">Studiengang</th>
<th rowspan="2">Grp</th>
<?php
foreach ($gebiet AS $gbt)
echo "<th colspan='2'>$gbt->name</th>";
@@ -274,7 +291,8 @@ if (isset($_POST['reihungstest']))
foreach ($ergb AS $erg)
{
echo "<tr><td>$erg->pruefling_id</td><td>$erg->nachname</td><td>$erg->vorname</td><td>$erg->gebdatum</td><td>$erg->geschlecht</td>
<td>$erg->idnachweis</td><td>$erg->registriert</td><td>$erg->stg_kurzbz</td><td>$erg->stg_bez</td><td>$erg->gruppe</td>";
<td>$erg->registriert</td><td>$erg->stg_kurzbz</td><td>$erg->stg_bez</td>";
//<td>$erg->idnachweis</td>
foreach ($gebiet AS $gbt)
if (isset($erg->gebiet[$gbt->gebiet_id]))
echo '<td>'.number_format($erg->gebiet[$gbt->gebiet_id]->punkte,2,',',' ').'</td><td nowrap>'.number_format($erg->gebiet[$gbt->gebiet_id]->prozent,2,',',' ').' %</td>';
@@ -292,9 +310,9 @@ if (isset($_POST['reihungstest']))
<table id="zeitsperren">
<tr>
<th rowspan="2">ID</th><th rowspan="2">Nachname</th><th rowspan="2">Vornamen</th>
<th rowspan="2">GebDatum</th><th rowspan="2">G</th><th rowspan="2">IdNachweis</th>
<th rowspan="2">GebDatum</th><th rowspan="2">G</th>
<!--<th rowspan="2">IdNachweis</th>-->
<th rowspan="2">Registriert</th><th rowspan="2">STG</th><th rowspan="2">Studiengang</th>
<th rowspan="2">Grp</th>
<?php
foreach ($kategorie AS $gbt)
echo "<th colspan='2'>$gbt->name</th>";
@@ -310,7 +328,8 @@ if (isset($_POST['reihungstest']))
foreach ($erg_kat AS $erg)
{
echo "<tr><td>$erg->pruefling_id</td><td>$erg->nachname</td><td>$erg->vorname</td><td>$erg->gebdatum</td><td>$erg->geschlecht</td>
<td>$erg->idnachweis</td><td>$erg->registriert</td><td>$erg->stg_kurzbz</td><td>$erg->stg_bez</td><td>$erg->gruppe</td>";
<td>$erg->registriert</td><td>$erg->stg_kurzbz</td><td>$erg->stg_bez</td>";
//<td>$erg->idnachweis</td>
foreach ($kategorie AS $gbt)
echo '<td>'.$erg->kategorie[$gbt->name]->punkte.'</td><td>'.$erg->kategorie[$gbt->name]->typ.'</td>';
echo '</tr>';
+179
View File
@@ -0,0 +1,179 @@
<?php
/* Copyright (C) 2009 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 <[email protected]>,
* Andreas Oesterreicher <[email protected]>,
* Rudolf Hangl <[email protected]> and
* Gerald Simane-Sequens <[email protected]>
*/
/**
* Seite zum Editieren von Testtool-Gebieten
*/
require_once('../../config.inc.php');
require_once('../../../include/functions.inc.php');
require_once('../../../include/gebiet.class.php');
require_once('../../../include/benutzerberechtigung.class.php');
if(!$conn = pg_pconnect(CONN_STRING))
die('Fehler beim Connecten zur DB');
$user = get_uid();
$rechte = new benutzerberechtigung($conn);
$rechte->getBerechtigungen($user);
echo '
<!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-15">
<link href="../../../skin/style.css.php" rel="stylesheet" type="text/css">
</head>
<body>
';
if(isset($_GET['gebiet_id']))
$gebiet_id=$_GET['gebiet_id'];
else
$gebiet_id='';
echo '<h1>&nbsp;Gebiet bearbeiten</h1>';
if(!$rechte->isBerechtigt('admin'))
die('Sie haben keine Berechtigung fuer diese Seite');
$gebiet = new gebiet($conn);
$gebiet->getAll();
echo '<a href="index.php?gebiet_id='.$gebiet_id.'" class="Item">Zurück zur Admin Seite</a><br /><br />';
//Liste der Gebiete anzeigen
echo '<form id="gebiet_form" action="'.$_SERVER['PHP_SELF'].'" method="GET">';
echo 'Gebiet: <SELECT name="gebiet_id" onchange="document.getElementById(\'gebiet_form\').submit();">';
foreach ($gebiet->result as $row)
{
if($gebiet_id=='')
$gebiet_id=$row->gebiet_id;
if($gebiet_id==$row->gebiet_id)
$selected='selected';
else
$selected='';
echo '<OPTION value="'.$row->gebiet_id.'" '.$selected.'>'.$row->bezeichnung.'</OPTION>';
}
echo '</SELECT>
<input type="submit" value="Bearbeiten">
</form>';
echo '<br /><br />';
//Speichern der Daten
if(isset($_POST['speichern']))
{
$gebiet = new gebiet($conn);
if($gebiet->load($gebiet_id))
{
$gebiet->kurzbz = $_POST['kurzbz'];
$gebiet->bezeichnung = $_POST['bezeichnung'];
$gebiet->beschreibung = $_POST['beschreibung'];
$gebiet->zeit = $_POST['zeit'];
$gebiet->multipleresponse = isset($_POST['multipleresponse']);
$gebiet->kategorien = isset($_POST['kategorien']);
$gebiet->zufallfrage = isset($_POST['zufallfrage']);
$gebiet->zufallvorschlag = isset($_POST['zufallvorschlag']);
$gebiet->levelgleichverteilung = isset($_POST['levelgleichverteilung']);
$gebiet->maxpunkte = $_POST['maxpunkte'];
$gebiet->maxfragen = $_POST['maxfragen'];
$gebiet->level_start = $_POST['level_start'];
$gebiet->level_sprung_auf = $_POST['level_sprung_auf'];
$gebiet->level_sprung_ab = $_POST['level_sprung_ab'];
$gebiet->updateamum = date('Y-m-d H:i:s');
$gebiet->updatevon = $user;
if($gebiet->save(false))
{
echo 'Daten erfolgreich gespeichert';
}
else
{
echo '<span class="error">Fehler beim Speichern: '.$gebiet->errormsg.'</span>';
}
}
else
{
echo '<span class="error">Fehler beim Laden des Gebiets</span>';
}
}
if($gebiet_id!='')
{
$gebiet = new gebiet($conn, $gebiet_id);
echo "<hr />";
echo '<form action="'.$_SERVER['PHP_SELF'].'?gebiet_id='.$gebiet_id.'" method="POST">';
echo '<table>';
echo '<tr>';
//Kurzbz
echo '<td>Kurzbz</td><td><input type="text" maxlength="10" size="10" name="kurzbz" value="'.htmlentities($gebiet->kurzbz).'"></td>';
echo '</tr><tr>';
//Bezeichnung
echo '<td>Bezeichnung</td><td><input type="text" maxlength="50" name="bezeichnung" value="'.htmlentities($gebiet->bezeichnung).'"></td>';
echo '</tr><tr>';
//Beschreibung
echo '<td>Beschreibung</td><td><textarea name="beschreibung">'.htmlentities($gebiet->beschreibung).'</textarea></td>';
echo '</tr><tr>';
//Zeit
echo '<td>Zeit</td><td><input type="text" name="zeit" size="8" maxlength="8" value="'.htmlentities($gebiet->zeit).'"> hh:mm:ss</td>';
echo '</tr><tr>';
echo '<td>Multiple Response</td><td><input type="checkbox" name="multipleresponse" '.($gebiet->multipleresponse?'checked="checked"':'').'></td>';
echo '</tr><tr>';
echo '<td>Kategorien</td><td><input type="checkbox" name="kategorien" '.($gebiet->kategorien?'checked="checked"':'').'></td>';
echo '</tr><tr>';
echo '<td>Zufällige Fragereihenfolge</td><td><input type="checkbox" name="zufallfrage" '.($gebiet->zufallfrage?'checked="checked"':'').'></td>';
echo '</tr><tr>';
echo '<td>Zufällige Vorschlagreihenfolge</td><td><input type="checkbox" name="zufallvorschlag" '.($gebiet->zufallvorschlag?'checked="checked"':'').'></td>';
echo '</tr><tr>';
echo '<td>Levelgleichverteilung</td><td><input type="checkbox" name="levelgleichverteilung" '.($gebiet->levelgleichverteilung?'checked="checked"':'').'></td>';
echo '</tr><tr>';
// empfohlene maximalpunkte berechnen und anzeigen
$maximalpunkte = $gebiet->berechneMaximalpunkte($gebiet_id);
if($gebiet->maxpunkte!=$maximalpunkte)
$hinweis = '<span class="error">empfohlene Maximalpunkteanzahl: '.$maximalpunkte.'</span>';
else
$hinweis ='';
echo '<td>Maximale Punkteanzahl</td><td><input type="text" size="5" maxlength="5" name="maxpunkte" value="'.htmlentities($gebiet->maxpunkte).'">'.$hinweis.'</td>';
echo '</tr><tr>';
echo '<td>Maximale Fragenanzahl</td><td><input type="text" size="5" maxlength="5" name="maxfragen" value="'.htmlentities($gebiet->maxfragen).'"></td>';
echo '</tr><tr>';
echo '<td>Start Level</td><td><input type="text" size="5" maxlength="5" name="level_start" value="'.htmlentities($gebiet->level_start).'"></td>';
echo '</tr><tr>';
echo '<td>Richtige Fragen bis Levelaufstieg</td><td><input type="text" size="5" maxlength="5" name="level_sprung_auf" value="'.htmlentities($gebiet->level_sprung_auf).'"></td>';
echo '</tr><tr>';
echo '<td>Falsche Fragen bis Levelabstieg</td><td><input type="text" size="5" maxlength="5" name="level_sprung_ab" value="'.htmlentities($gebiet->level_sprung_ab).'"></td>';
echo '</tr><tr>';
echo '<td></td><td><input type="submit" name="speichern" value="Speichern"></td>';
echo '</tr></table>';
echo '</form>';
}
echo '</body></html>';
?>
+320 -85
View File
@@ -19,22 +19,26 @@
* Andreas Oesterreicher <[email protected]> and
* Rudolf Hangl <[email protected]>.
*/
/**
* Administrationsseite fuer das Testtool
*/
header("Content-type: application/xhtml+xml");
header('Content-type: application/xhtml+xml');
// Oberflaeche zur Aenderung von Beispielen und Upload von Bildern
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/benutzerberechtigung.class.php');
$PHP_SELF=$_SERVER["PHP_SELF"];
$PHP_SELF=$_SERVER['PHP_SELF'];
session_start();
//wandelt einen String in HEX-Werte um
function strhex($string)
{
$hex="";
$hex='';
for ($i=0;$i<strlen($string);$i++)
$hex.=(strlen(dechex(ord($string[$i])))<2)? "0".dechex(ord($string[$i])): dechex(ord($string[$i]));
return $hex;
@@ -42,13 +46,13 @@ function strhex($string)
//Connection Herstellen
if(!$conn = pg_pconnect(CONN_STRING))
die('Fehler beim oeffnen der Datenbankverbindung');
die('Fehler beim Oeffnen der Datenbankverbindung');
//$user=get_uid();
//$rechte = new benutzerberechtigung($conn);
//$rechte->getBerechtigungen($user);
//if(!$rechte->isBerechtigt('admin'))
// die('Sie haben keine Berechtigung fuer diese Seite');
$user=get_uid();
$rechte = new benutzerberechtigung($conn);
$rechte->getBerechtigungen($user);
if(!$rechte->isBerechtigt('admin'))
die('Sie haben keine Berechtigung fuer diese Seite');
if(isset($_GET['gebiet_id']))
$gebiet_id = $_GET['gebiet_id'];
@@ -60,11 +64,6 @@ if(isset($_GET['nummer']))
else
$nummer = '';
if(isset($_GET['gruppe_kurzbz']))
$gruppe_kurzbz = $_GET['gruppe_kurzbz'];
else
$gruppe_kurzbz = '';
if(isset($_GET['frage_id']))
$frage_id = $_GET['frage_id'];
else
@@ -77,13 +76,14 @@ else
$save_vorschlag_error=false;
?>
<?xml version="1.0"?>
<?xml version="1.0" ?>
<?xml-stylesheet type="text/xsl" href="http://www.w3.org/Math/XSL/mathml.xsl"?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml; charset=iso-8859-1" />
<link href="../../../skin/cis.css" rel="stylesheet" type="text/css" />
<meta http-equiv="Content-Type" content="text/xhtml; charset=utf-8" />
<link href="../../../skin/style.css.php" rel="stylesheet" type="text/css" />
<script language="Javascript">
//Vorschau anzeigen
function preview()
@@ -91,11 +91,33 @@ function preview()
document.getElementById('vorschau').innerHTML = document.getElementById('text').value;
}
</script>
<style type="text/css">
textarea {
font-size: 10pt;
}
</style>
</head>
<body>
<h1>Admin - Fragen bearbeiten</h1>
<h1>
<div style="float:left">Testtool - Administrationsseite</div>
<div style="text-align:right"><a href="auswertung.php" class="Item">Auswertung</a></div>
</h1>
<?php
// aendern der Sprache
if(isset($_GET['type']) && $_GET['type']=='changesprache')
{
$_SESSION['sprache']=$_GET['sprache'];
}
if(!isset($_SESSION['sprache']))
$_SESSION['sprache']='German';
$sprache = $_SESSION['sprache'];
//Bei Upload des Bildes
if(isset($_POST['submitbild']))
{
@@ -108,10 +130,6 @@ if(isset($_POST['submitbild']))
//--check that it's a jpeg or gif or png
if ($ext=='gif' || $ext=='png' || $ext=='jpg' || $ext=='jpeg')
{
//Funktioniert nur mit Mozilla
//Wenn File ein Bild ist
//if (($_FILES['bild']['type']=="image/gif") || ($_FILES['bild']['type']=="image/jpeg") || ($_FILES['bild']['type']=="image/png"))
//{
$filename = $_FILES['bild']['tmp_name'];
//File oeffnen
$fp = fopen($filename,'r');
@@ -122,12 +140,12 @@ if(isset($_POST['submitbild']))
$content = strhex($content);
$frage = new frage($conn);
if($frage->load($_GET['frage_id']))
if($frage->getFrageSprache($_GET['frage_id'], $sprache))
{
//HEX Wert in die Datenbank speichern
$frage->bild = $content;
$frage->new = false;
if($frage->save())
if($frage->save_fragesprache())
echo "<b>Bild gespeichert</b><br />";
else
echo '<b>'.$frage->errormsg.'</b><br />';
@@ -139,6 +157,45 @@ if(isset($_POST['submitbild']))
echo "<b>File ist kein gueltiges Bild</b><br />";
}
}
//Bei Upload eines Audiofiles
if(isset($_POST['submitaudio']))
{
if(isset($_FILES['audio']['tmp_name']))
{
//Extension herausfiltern
$ext = explode('.',$_FILES['audio']['name']);
$ext = strtolower($ext[count($ext)-1]);
//--check that it's a mp3
if ($ext=='mp3' || $ext=='ogg')
{
$filename = $_FILES['audio']['tmp_name'];
//File oeffnen
$fp = fopen($filename,'r');
//auslesen
$content = fread($fp, filesize($filename));
fclose($fp);
//in HEX-Werte umrechnen
$content = strhex($content);
$frage = new frage($conn);
if($frage->getFrageSprache($_GET['frage_id'], $sprache))
{
//HEX Wert in die Datenbank speichern
$frage->audio = $content;
$frage->new = false;
if($frage->save_fragesprache())
echo "<b>Audio gespeichert</b><br />";
else
echo '<b>'.$frage->errormsg.'</b><br />';
}
else
echo '<b>'.$frage->errormsg.'</b><br />';
}
else
echo "<b>Es duerfen nur mp3 Dateien hochgeladen werden</b><br />";
}
}
//Speichern der Frage-Daten
if(isset($_POST['submitdata']))
@@ -146,13 +203,28 @@ if(isset($_POST['submitdata']))
$frage = new frage($conn);
if($frage->load($_GET['frage_id']))
{
$frage->text = $_POST['text'];
$frage->demo = (isset($_POST['demo'])?true:false);
$frage->loesung = $_POST['loesung'];
$frage->demo = isset($_POST['demo']);
$frage->nummer = $_POST['nummer'];
$frage->level = $_POST['level'];
$frage->new = false;
if($frage->save())
{
echo "<b>Daten gespeichert</b><br />";
if(!$frage->getFrageSprache($frage->frage_id, $sprache))
{
$frage->new=true;
}
$frage->text = $_POST['text'];
$frage->sprache = $sprache;
if($frage->save_fragesprache())
{
echo "<b>Daten gespeichert</b><br />";
$nummer = $frage->nummer;
}
else
echo '<b>Fehler:'.$frage->errormsg.'</b><br />';
}
else
echo '<b>'.$frage->errormsg.'</b><br />';
@@ -164,8 +236,8 @@ if(isset($_POST['submitdata']))
//Speichern eines Vorschlages
if(isset($_POST['submitvorschlag']))
{
$content='';
if(isset($_FILES['bild']['tmp_name']))
$bildcontent='';
if(isset($_FILES['bild']['tmp_name']) && is_uploaded_file($_FILES['bild']['tmp_name']))
{
//Extension herausfiltern
$ext = explode('.',$_FILES['bild']['name']);
@@ -178,19 +250,37 @@ if(isset($_POST['submitvorschlag']))
//File oeffnen
$fp = fopen($filename,'r');
//auslesen
$content = fread($fp, filesize($filename));
$bildcontent = fread($fp, filesize($filename));
fclose($fp);
//in HEX-Werte umrechnen
$content = strhex($content);
$bildcontent = strhex($bildcontent);
}
else
echo "<b>Datei ist kein Bild!</b><br />";
}
else
$audiocontent='';
if(isset($_FILES['audio']['tmp_name']) && is_uploaded_file($_FILES['audio']['tmp_name']))
{
echo "kein Bild";
}
//Extension herausfiltern
$ext = explode('.',$_FILES['audio']['name']);
$ext = strtolower($ext[count($ext)-1]);
//--check that it's a jpeg or gif or png
if ($ext=='mp3')
{
$filename = $_FILES['audio']['tmp_name'];
//File oeffnen
$fp = fopen($filename,'r');
//auslesen
$audiocontent = fread($fp, filesize($filename));
fclose($fp);
//in HEX-Werte umrechnen
$audiocontent = strhex($audiocontent);
}
else
echo "<b>Datei ist kein Bild!</b><br />";
}
$vorschlag = new vorschlag($conn);
$error=false;
@@ -208,7 +298,11 @@ if(isset($_POST['submitvorschlag']))
}
}
else
{
$vorschlag->new = true;
$vorschlag->insertamum = date('Y-m-d H:i:s');
$vorschlag->insertvon = $user;
}
if($_POST['nummer']=='' || !is_numeric($_POST['nummer']))
{
$error = true;
@@ -217,14 +311,28 @@ if(isset($_POST['submitvorschlag']))
if(!$error)
{
$vorschlag->bild = $content;
$vorschlag->bild = $bildcontent;
$vorschlag->audio = $audiocontent;
$vorschlag->frage_id = $_GET['frage_id'];
$vorschlag->nummer = $_POST['nummer'];
$vorschlag->antwort = strtoupper($_POST['antwort']);
$vorschlag->punkte = $_POST['punkte'];
$vorschlag->text = $_POST['text'];
$vorschlag->sprache = $sprache;
$vorschlag->updateamum = date('Y-m-d H:i:s');
$vorschlag->updatevon = $user;
if($vorschlag->save())
echo "<b>Vorschlag gespeichert</b><br />";
{
if($vorschlag->save_vorschlagsprache())
{
echo "<b>Vorschlag gespeichert</b><br />";
}
else
{
$save_vorschlag_error=true;
echo "Fehler beim Speichern von Vorschlagsprache: $vorschlag->errormsg<br />";
}
}
else
{
$save_vorschlag_error=true;
@@ -242,87 +350,201 @@ if(isset($_GET['type']) && $_GET['type']=='delete' && isset($_GET['vorschlag_id'
echo '<b>'.$vs->errormsg.'</b><br />';
$vorschlag_id='';
}
// anlegen einer neuen Frage
if(isset($_GET['type']) && $_GET['type']=='neuefrage')
{
$frage_obj = new frage($conn);
$frage_obj->gebiet_id = $_GET['gebiet_id'];
$frage_obj->nummer=999;
$frage_obj->demo=false;
$frage_obj->insertamum = date('Y-m-d H:i:s');
$frage_obj->insertvon = $user;
$frage_obj->sprache = $sprache;
$frage_obj->new = true;
if($frage_obj->save())
{
if($frage_obj->save_fragesprache())
{
echo 'Frage wurde erfolgreich angelegt';
$nummer=999;
}
else
{
echo '<span class="error">Fehler beim Speichern der FrageSprache: '.$frage_obj->errormsg.'</span>';
}
}
else
{
echo '<span class="error">Fehler beim Speichern der Frage: '.$frage_obj->errormsg.'</span>';
}
}
//Gebiet pruefen
if(isset($_GET['type']) && $_GET['type']=='gebietpruefen' && isset($_GET['gebiet_id']))
{
$gebiet = new gebiet($conn, $gebiet_id);
if($gebiet->check_gebiet($gebiet_id))
{
echo "<b>Das Gebiet $gebiet->bezeichnung wurde erfolgreich ueberprueft</b>";
}
else
{
echo "<b>Bei der Ueberpruefung des Gebiets '$gebiet->bezeichnung' sind folgende Fehler aufgetreten:<br /></b>";
echo nl2br($gebiet->errormsg);
echo '<br /><br />';
}
$maxpunkte = $gebiet->berechneMaximalpunkte($gebiet_id);
if($gebiet->maxpunkte!=$maxpunkte)
{
echo '<br /><span class="error">die empfohlene Punkteanzahl betraegt '.$maxpunkte.' Punkte anstatt '.$gebiet->maxpunkte.' Punkte</span>';
}
}
echo '<table width="100%"><tr><td>';
//Liste der Gebiete
$qry = "SELECT * FROM testtool.tbl_gebiet ORDER BY bezeichnung";
$result = pg_query($conn, $qry);
while($row = pg_fetch_object($result))
if($result = pg_query($conn, $qry))
{
if($gebiet_id=='')
$gebiet_id = $row->gebiet_id;
if($gebiet_id==$row->gebiet_id)
echo "<a href='$PHP_SELF?gebiet_id=$row->gebiet_id' class='Item'><u>$row->bezeichnung</u></a> -";
else
echo "<a href='$PHP_SELF?gebiet_id=$row->gebiet_id' class='Item'>$row->bezeichnung</a> -";
echo 'Gebiet: <select onchange="window.location.href=\''.$PHP_SELF.'?gebiet_id=\'+this.value;">';
while($row = pg_fetch_object($result))
{
if($gebiet_id=='')
$gebiet_id = $row->gebiet_id;
if($gebiet_id==$row->gebiet_id)
$selected='selected="selected"';
else
$selected='';
echo '<option value="'.$row->gebiet_id.'" '.$selected.'>'.$row->bezeichnung.'</option>'."\n";
}
echo '</select>';
}
echo '<br /><br />';
echo " <a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;nummer=$nummer&amp;type=gebietpruefen' class='Item'>Pruefen</a> | ";
echo " <a href='edit_gebiet.php?gebiet_id=$gebiet_id' class='Item'>Bearbeiten</a>";
echo '</td><td align="right">';
//Liste der Sprachen
$qry = "SELECT sprache FROM public.tbl_sprache ORDER BY sprache DESC";
if($result = pg_query($conn, $qry))
{
while($row = pg_fetch_object($result))
{
if($sprache=='')
$sprache = $row->sprache;
if($sprache==$row->sprache)
$selected='style="border:1px solid black;"';
else
$selected='';
echo " <a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;nummer=$nummer&amp;type=changesprache&amp;sprache=$row->sprache' class='Item' $selected><img src='../bild.php?src=flag&amp;sprache=$row->sprache' alt='$row->sprache' title='$row->sprache'/></a>";
}
}
echo '</td></tr></table>';
echo '<br />';
// Liste der Fragen
$qry = "SELECT distinct nummer FROM testtool.tbl_frage WHERE gebiet_id='".addslashes($gebiet_id)."' ORDER BY nummer";
if($result = pg_query($conn, $qry))
{
echo 'Nummer: ';
while($row = pg_fetch_object($result))
{
if($nummer=='')
$nummer = $row->nummer;
if($nummer==$row->nummer)
echo "<a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;nummer=$row->nummer&amp;gruppe_kurzbz=$gruppe_kurzbz' class='Item'><u>$row->nummer</u></a> -";
echo " <a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;nummer=$row->nummer' class='Item'><u>$row->nummer</u></a> -";
else
echo "<a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;nummer=$row->nummer&amp;gruppe_kurzbz=$gruppe_kurzbz' class='Item'>$row->nummer</a> -";
}
}
echo '<br /><br />';
//Liste der Gruppen
$qry = "SELECT gruppe_kurzbz FROM testtool.tbl_frage WHERE gebiet_id='".addslashes($gebiet_id)."' AND nummer='".addslashes($nummer)."' ORDER BY gruppe_kurzbz";
if($result = pg_query($conn, $qry))
{
while($row = pg_fetch_object($result))
{
if($gruppe_kurzbz=='')
$gruppe_kurzbz = $row->gruppe_kurzbz;
if($gruppe_kurzbz==$row->gruppe_kurzbz)
echo "<a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;nummer=$nummer&amp;gruppe_kurzbz=$row->gruppe_kurzbz' class='Item'><u>$row->gruppe_kurzbz</u></a> -";
else
echo "<a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;nummer=$nummer&amp;gruppe_kurzbz=$row->gruppe_kurzbz' class='Item'>$row->gruppe_kurzbz</a> -";
echo " <a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;nummer=$row->nummer' class='Item'>$row->nummer</a> -";
}
echo " <a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;type=neuefrage' class='Item'>neue Frage hinzufuegen</a>";
}
echo "\n\n<br />";
//Fragen holen
$frage = new frage($conn);
$frage->getFrage($gebiet_id, $nummer, $gruppe_kurzbz);
if($frage->frage_id!='')
$frage->getFragen($gebiet_id, $nummer);
if(count($frage->result)==1)
{
$frage_id = $frage->result[0]->frage_id;
}
else
{
//Wenn fuer diese Nummer mehrere Fragen vorhanden sind,
//koennen diese extra ausgewaehlt werden
echo 'FrageID: ';
foreach ($frage->result as $row)
{
if($frage_id=='')
$frage_id=$row->frage_id;
if($frage_id==$row->frage_id)
echo "<a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;nummer=$row->nummer&amp;frage_id=$row->frage_id' class='Item'><u>$row->frage_id</u></a> -";
else
echo "<a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;nummer=$row->nummer&amp;frage_id=$row->frage_id' class='Item'>$row->frage_id</a> -";
}
}
if($frage_id!='')
{
$frage->load($frage_id);
$frage->getFrageSprache($frage_id, $sprache);
echo "<table><tr><td>";
//Fragen
echo "<table>";
echo "<tr>";
//Upload Feld fuer Bild
echo "<td valign='bottom'>
<form method='POST' enctype='multipart/form-data' action='$PHP_SELF?gebiet_id=$gebiet_id&amp;nummer=$nummer&amp;gruppe_kurzbz=$gruppe_kurzbz&amp;frage_id=$frage->frage_id'>
<form method='POST' enctype='multipart/form-data' action='$PHP_SELF?gebiet_id=$gebiet_id&amp;nummer=$nummer&amp;frage_id=$frage->frage_id'>
Bild: <input type='file' name='bild' />
<input type='submit' name='submitbild' value='Upload' />
</form>
</td></tr>";
</td>
<td>
<form method='POST' enctype='multipart/form-data' action='$PHP_SELF?gebiet_id=$gebiet_id&amp;nummer=$nummer&amp;frage_id=$frage->frage_id'>
Audio: <input type='file' name='audio' />
<input type='submit' name='submitaudio' value='Upload' />
</form>
</td>
</tr>";
//Wenn ein Bild vorhanden ist, dann anzeigen
if($frage->bild!='')
{
echo "\n<tr><td width='400' height='300'><img src='../bild.php?src=frage&amp;frage_id=$frage->frage_id' width='400' height='300' /></td>";
echo "\n<tr><td width='400' height='300'><img src='../bild.php?src=frage&amp;frage_id=$frage->frage_id&amp;sprache=$sprache' width='400' height='300' />";
}
else
{
echo "\n<tr><td align='center' width='400' height='300' style='background: #DDDDDD;'>Kein Bild vorhanden</td>\n";
//echo "\n<tr><td align='center' width='400' height='300' style='background: #DDDDDD;'>Kein Bild vorhanden\n";
echo "\n<tr><td align='center' width='400' height='300' style='background: #DDDDDD;'>\n";
if($frage->audio=='')
echo "Kein Bild vorhanden\n";
}
if($frage->audio!='')
{
echo '<br /><embed autostart="false" src="../sound.php?src=frage&amp;frage_id='.$frage->frage_id.'&amp;sprache='.$sprache.'" height="20" width="250"/>';
}
echo '</td>';
//Zusaetzliche EingabeFelder anzeigen
echo "<td>";
echo "<form method='POST' action='$PHP_SELF?gebiet_id=$gebiet_id&amp;nummer=$nummer&amp;gruppe_kurzbz=$gruppe_kurzbz&amp;frage_id=$frage->frage_id'>";
echo "<form method='POST' action='$PHP_SELF?gebiet_id=$gebiet_id&amp;nummer=$nummer&amp;frage_id=$frage_id'>";
echo "<table>";
//Bei Aenderungen im Textfeld werden diese sofort in der Vorschau angezeigt
echo "<tr><td colspan='2'>\n<textarea name='text' id='text' cols='40' rows='20' oninput='preview()'><![CDATA[$frage->text]]></textarea>\n</td></tr>";
echo "<tr><td>Demo <input type='checkbox' name='demo' ".($frage->demo?'checked="true"':'')." />
Loesung <input type='text' name='loesung' value='$frage->loesung' size='1' /></td>
Level <input type='text' name='level' value='$frage->level' size='1' />
Nummer <input type='text' name='nummer' value='$frage->nummer' size='1' /></td>
<td align='right'><input type='submit' value='Speichern' name='submitdata' /></td>";
echo "</tr></table>";
echo "</form>";
@@ -335,49 +557,62 @@ if($frage->frage_id!='')
$vorschlag = new vorschlag($conn);
if($vorschlag_id!='')
if(!$vorschlag->load($vorschlag_id))
if(!$vorschlag->load($vorschlag_id, $sprache))
die($vorschlag->errormsg);
if($save_vorschlag_error)
{
$vorschlag->vorschlag_id = (isset($_POST['vorschlag_id'])?$_POST['vorschlag_id']:'');
$vorschlag->frage_id = $_GET['frage_id'];
$vorschlag->nummer = $_POST['nummer'];
$vorschlag->antwort = $_POST['antwort'];
$vorschlag->punkte = $_POST['punkte'];
$vorschlag->text = $_POST['text'];
$vorschlag->bild = '';
}
//Vorschlag
echo '<b>Vorschlag'.($vorschlag_id!=''?' Edit':'').'</b><br /><br />';
echo "<form method='POST' enctype='multipart/form-data' action='$PHP_SELF?gebiet_id=$gebiet_id&amp;nummer=$nummer&amp;gruppe_kurzbz=$gruppe_kurzbz&amp;frage_id=$frage->frage_id'>";
echo "<form method='POST' enctype='multipart/form-data' action='$PHP_SELF?gebiet_id=$gebiet_id&amp;nummer=$nummer&amp;frage_id=$frage_id'>";
echo "<input type='hidden' name='vorschlag_id' value='$vorschlag->vorschlag_id' />";
echo '<table>';
echo '<tr>';
echo "<td>Antwort</td><td><input type='text' size='1' name='antwort' value='$vorschlag->antwort' /></td>";
echo "<td>Punkte</td><td><input type='text' size='8' name='punkte' value='$vorschlag->punkte' /></td>";
echo '</tr>';
echo '<tr>';
echo '<td>Text:</td><td><textarea name="text" id="text" rows="20" cols="40" oninput="preview()"><![CDATA['.$vorschlag->text."]]></textarea>\n</td>";
echo '</tr><tr valign="top">';
//Upload Feld fuer Bild
echo "<td>Bild:</td><td><input type='file' name='bild' /></td>";
echo "</tr>";
echo '</tr>';
echo '<tr>';
//Upload Feld fuer Audio
echo "<td>Audio:</td><td><input type='file' name='audio' /></td></tr>";
echo "<tr><td>Nummer:</td><td><input type='text' name='nummer' size='3' value='$vorschlag->nummer' /></td></tr>";
echo "<tr><td colspan='2' align='right'><input type='submit' name='submitvorschlag' value='Speichern' />".($vorschlag_id!=''?"<input type='button' value='Abbrechen' onclick=\"document.location.href='$PHP_SELF?gebiet_id=$gebiet_id&amp;nummer=$nummer&amp;gruppe_kurzbz=$gruppe_kurzbz&amp;frage_id=$frage->frage_id'\" />":'')."</td></tr>";
echo "<tr><td colspan='2' align='right'><input type='submit' name='submitvorschlag' value='Speichern' />".($vorschlag_id!=''?"<input type='button' value='Abbrechen' onclick=\"document.location.href='$PHP_SELF?gebiet_id=$gebiet_id&amp;nummer=$nummer&amp;frage_id=$frage->frage_id'\" />":'')."</td></tr>";
echo "</table>";
echo "</form>";
echo '</td></tr></table>';
$vorschlag = new vorschlag($conn);
$vorschlag->getVorschlag($frage->frage_id);
$vorschlag->getVorschlag($frage_id, $sprache, false);
$i=0;
if(count($vorschlag->result)>0)
{
echo '<table><tr class="liste"><th>Nummer</th><th>Antwort</th><th>Text</th><th>Bild</th><th></th><th></th></tr>';
echo '<table><tr class="liste"><th>Nummer</th><th>Punkte</th><th>Text</th><th>Bild</th><th>Audio</th><th></th><th></th></tr>';
foreach ($vorschlag->result as $vs)
{
$i++;
echo "<tr class='liste".($i%2)."'><td>$vs->nummer</td><td>$vs->antwort</td><td>$vs->text</td><td><img src='../bild.php?src=vorschlag&amp;vorschlag_id=$vs->vorschlag_id' /></td><td><a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;nummer=$nummer&amp;gruppe_kurzbz=$gruppe_kurzbz&amp;frage_id=$frage->frage_id&amp;vorschlag_id=$vs->vorschlag_id'>edit</a></td><td><a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;nummer=$nummer&amp;gruppe_kurzbz=$gruppe_kurzbz&amp;frage_id=$frage->frage_id&amp;vorschlag_id=$vs->vorschlag_id&amp;type=delete' onclick=\"return confirm('Wollen Sie diesen Eintrag wirklich loeschen?')\">delete</a></td></tr>";
echo "<tr class='liste".($i%2)."'><td>$vs->nummer</td>
<td align='right'>$vs->punkte</td>
<td>$vs->text</td>
<td><img src='../bild.php?src=vorschlag&amp;vorschlag_id=$vs->vorschlag_id&amp;sprache=$sprache' /></td>
<td>";
if($vs->audio!='')
echo "<embed autostart='false' src='../sound.php?src=vorschlag&amp;vorschlag_id=".$vs->vorschlag_id."&amp;sprache=".$sprache."' height='20' width='150'/>";
echo " </td>
<td><a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;nummer=$nummer&amp;frage_id=$frage->frage_id&amp;vorschlag_id=$vs->vorschlag_id'>edit</a></td>
<td><a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;nummer=$nummer&amp;frage_id=$frage->frage_id&amp;vorschlag_id=$vs->vorschlag_id&amp;type=delete' onclick=\"return confirm('Wollen Sie diesen Eintrag wirklich loeschen?')\">delete</a></td>
</tr>";
}
echo '</table>';
}
-178
View File
@@ -1,178 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="style/stylesheet.css">
</head>
<body>
<table width="90%" border="1" cellspacing="0" bordercolor="#CCCCCC">
<tr>
<td><table width="100%" border="0">
<tr bgcolor="#CCCCCC">
<td height="20" colspan="11" align="center"><strong>Auswertung</strong></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td nowrap>&nbsp;</td>
<td colspan="3" align="center" nowrap>vor Gef&auml;hrdungen</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td width="1%" nowrap>&nbsp;</td>
<td width="1%">&nbsp;</td>
<td align="center" width="1%"><strong>Punkte</strong></td>
<td align="center" width="1%" nowrap><strong>Max-Punkte</strong></td>
<td align="center" width="1%" nowrap><strong>Anzahl der Gefährdungen</strong></td>
<td align="center" width="1%">&nbsp;</td>
<td align="center" width="1%"><strong>gesch&uuml;tzt</strong></td>
<td align="center" width="1%" nowrap ><strong>teilweise gesch&uuml;tzt</strong></td>
<td align="center" width="1%" nowrap><strong>nicht gesch&uuml;tzt</strong></td>
<td >&nbsp;</td>
<td >&nbsp;</td>
</tr>
<tr>
<td nowrap>IT-Grundschutz</td>
<td nowrap>IT-Sicherheitsmanagement &nbsp;</td>
<td align="center">10</td>
<td align="center">20</td>
<td align="center">10</td>
<td align="center">&nbsp;</td>
<td align="center">4</td>
<td align="center">2</td>
<td align="center">4</td>
<td bgcolor="#FF0000">&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>Organisation</td>
<td align="center">38</td>
<td align="center">40</td>
<td align="center">20</td>
<td align="center">&nbsp;</td>
<td align="center">18</td>
<td align="center">2</td>
<td align="center">0</td>
<td bgcolor="#00FF00">&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>Personal</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>Notfallvorsorge-Konzept</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>Datensicherungskonzept</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="11"><hr></td>
</tr>
<tr>
<td>Gef&auml;hrdungen</td>
<td>&nbsp;</td>
<td align="center"><strong>Punkte</strong></td>
<td align="center" nowrap><strong>Max-Punkte</strong></td>
<td align="center" nowrap><strong>Anzahl der Gefährdungen</strong></td>
<td align="center">&nbsp;</td>
<td align="center"><strong>gesch&uuml;tzt</strong></td>
<td align="center" nowrap ><strong>teilweise gesch&uuml;tzt</strong></td>
<td align="center" nowrap><strong>nicht gesch&uuml;tzt</strong></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>Feuer</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>Wasser</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table></td>
</tr>
</table>
&nbsp;
</body>
</html>
+7 -2
View File
@@ -41,12 +41,17 @@ if(!$conn = pg_pconnect(CONN_STRING))
$qry = '';
if(isset($_GET['src']) && $_GET['src']=='frage' && isset($_GET['frage_id']))
{
$qry = "SELECT bild FROM testtool.tbl_frage WHERE frage_id='".addslashes($_GET['frage_id'])."'";
$qry = "SELECT bild FROM testtool.tbl_frage_sprache WHERE frage_id='".addslashes($_GET['frage_id'])."' AND sprache='".addslashes($_GET['sprache'])."'";
}
elseif(isset($_GET['src']) && $_GET['src']=='vorschlag' && isset($_GET['vorschlag_id']))
{
$qry = "SELECT bild FROM testtool.tbl_vorschlag WHERE vorschlag_id='".addslashes($_GET['vorschlag_id'])."'";
$qry = "SELECT bild FROM testtool.tbl_vorschlag_sprache WHERE vorschlag_id='".addslashes($_GET['vorschlag_id'])."' AND sprache='".addslashes($_GET['sprache'])."'";
}
elseif(isset($_GET['src']) && $_GET['src']=='flag' && isset($_GET['sprache']))
{
$qry = "SELECT flagge as bild FROM public.tbl_sprache WHERE sprache='".addslashes($_GET['sprache'])."'";
}
else
echo 'Unkown type';
+220 -108
View File
@@ -1,5 +1,5 @@
<?php
/* Copyright (C) 2006 Technikum-Wien
/* Copyright (C) 2009 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
@@ -16,28 +16,30 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <[email protected]>,
* Andreas Oesterreicher <[email protected]> and
* Rudolf Hangl <[email protected]>.
* Andreas Oesterreicher <[email protected]>,
* Rudolf Hangl <[email protected]> and
* Gerald Simane-Sequens <[email protected]>
*/
/**
* Formular zum Beantworten der Fragen
*/
header("Content-type: application/xhtml+xml");
// 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');
require_once('../../include/gebiet.class.php');
$PHP_SELF=$_SERVER["PHP_SELF"];
session_start();
//testumgebung
//$_SESSION['pruefling_id']=1;
//Connection Herstellen
if(!$conn = pg_pconnect(CONN_STRING))
die('Fehler beim oeffnen der Datenbankverbindung');
die('Fehler beim Oeffnen der Datenbankverbindung');
if(isset($_GET['gebiet_id']))
$gebiet_id = $_GET['gebiet_id'];
@@ -56,8 +58,8 @@ $MAX_VORSCHLAEGE_PRO_ZEILE=4;
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml; charset=iso-8859-1" />
<link href="../../skin/cis.css" rel="stylesheet" type="text/css" />
<meta http-equiv="Content-Type" content="text/xhtml; charset=iso-8859-15" />
<link href="../../skin/style.css.php" rel="stylesheet" type="text/css" />
<script language="Javascript" type="text/javascript">
//<![CDATA[
function killChildNodes(an_element)
@@ -135,75 +137,135 @@ $MAX_VORSCHLAEGE_PRO_ZEILE=4;
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'])."'";
$gebiet = new gebiet($conn, $gebiet_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');
if($gebiet->level_start!='')
$levelgebiet=true;
else
$levelgebiet=false;
list($stunde, $minute, $sekunde) = split(':',$gebiet->zeit);
//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())
//Fragenpool generieren
$frage = new frage($conn);
if(!$frage->generateFragenpool($_SESSION['pruefling_id'], $gebiet_id))
die('Fehler beim Generieren des Fragenpools:'.$frage->errormsg);
//Erste Frage des Pools holen
if(!$frage_id = $frage->getNextFrage($gebiet_id, $_SESSION['pruefling_id']))
die('Es wurde keine Frage gefunden');
//Beginnzeit Speichern
$prueflingfrage = new frage($conn);
if(!$prueflingfrage->getPrueflingfrage($_SESSION['pruefling_id'], $frage_id))
die('Fehler:'.$prueflingfrage->errormsg);
$prueflingfrage->begintime = date('Y-m-d H:i:s');
if(!$prueflingfrage->save_prueflingfrage(false))
die('Fehler beim Startvorgang');
}
//Speichern einer Antwort
if(isset($_POST['submitantwort']) && isset($_GET['frage_id']))
{
$antwort = new antwort($conn);
if($_POST['antwort_id']!='')
// vor dem Speichern der Antworten, alle Antworten zu der Frage loeschen
// und die Antworten neu anlegen
// Unterscheidung ob mehrere oder nur eine Antwort uebergeben wird
$error=false;
pg_query($conn, 'BEGIN;');
// alle vorhandenen Antworten zu dieser Frage loeschen
$qry = "DELETE FROM testtool.tbl_antwort WHERE antwort_id in(
SELECT antwort_id FROM testtool.tbl_antwort JOIN testtool.tbl_vorschlag USING(vorschlag_id)
WHERE frage_id='".addslashes($_GET['frage_id'])."' AND pruefling_id='".addslashes($_SESSION['pruefling_id'])."')";
pg_query($conn, $qry);
// Antwort nur Speichern wenn eine Antwort gewaehlt wurde
if(isset($_POST['vorschlag_id']) && $_POST['vorschlag_id']!='')
{
if(!$antwort->load($_POST['antwort_id']))
die('Antwort konnte nicht geladen werden');
else
$vorschlaege = array();
//Falls nur eine einzelne Antwort kommt, diese auch in ein Array packen
if(!is_array($_POST['vorschlag_id']))
$vorschlaege[0]=$_POST['vorschlag_id'];
else
$vorschlaege = $_POST['vorschlag_id'];
//alle Antworten Speichern
foreach ($vorschlaege as $vorschlag_id)
{
$antwort->new = false;
$antwort->antwort_id = $_POST['antwort_id'];
if($vorschlag_id!='')
{
$antwort = new antwort($conn);
$antwort->new = true;
$antwort->vorschlag_id = $vorschlag_id;
$antwort->pruefling_id = $_SESSION['pruefling_id'];
if(!$antwort->save())
{
$errormsg = $antwort->errormsg;
$error=true;
}
}
}
if(!$error)
{
//Endzeit der Frage eintragen
$prueflingfrage = new frage($conn);
if(!$prueflingfrage->getPrueflingfrage($_SESSION['pruefling_id'], $frage_id))
{
$errormsg = $antwort->errormsg;
$error = true;
}
$prueflingfrage->endtime = date('Y-m-d H:i:s');
if(!$prueflingfrage->save_prueflingfrage(false))
{
$errormsg = $prueflingfrage->errormsg;
$error = true;
}
}
}
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
if($error)
{
$frage = new frage($conn);
$frage_id = $frage->getNextFrage($gebiet_id, $gruppe, $frage_id);
pg_query($conn, 'ROLLBACK;');
die('Fehler:'.$errormsg);
}
else
{
pg_query($conn, 'COMMIT;');
}
$frage = new frage($conn);
if($levelgebiet)
{
//bei gelevelten Fragen die naechste Frage holen
$frage->generateFragenpool($_SESSION['pruefling_id'], $gebiet_id);
}
$frage_id = $frage->getNextFrage($gebiet_id, $_SESSION['pruefling_id'], $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)."'";
$qry = "SELECT begintime
FROM
testtool.tbl_pruefling_frage JOIN testtool.tbl_frage USING(frage_id)
WHERE pruefling_id='".addslashes($_SESSION['pruefling_id'])."' AND gebiet_id='".addslashes($gebiet_id)."'
ORDER BY begintime ASC LIMIT 1";
if($result = pg_query($conn, $qry))
{
if($row = pg_fetch_object($result))
{
if($row->anzahl>0)
if($row->begintime!='')
{
//Hat bereits Fragen beantwortet -> Frage anzeigen
$demo=false;
@@ -215,31 +277,28 @@ if($result = pg_query($conn, $qry))
}
}
else
die('error');
$demo=true;
}
else
die('error');
$info='';
$qry_pruefling = "SELECT vorname, nachname, stg_bez, gruppe_kurzbz FROM testtool.vw_pruefling WHERE pruefling_id='".$_SESSION['pruefling_id']."'";
//Name und Studiengang anzeigen
$qry_pruefling = "SELECT vorname, nachname, stg_bez FROM testtool.vw_pruefling
WHERE pruefling_id='".addslashes($_SESSION['pruefling_id'])."'";
if($result_pruefling = pg_query($conn, $qry_pruefling))
{
if($row_pruefling = pg_fetch_object($result_pruefling))
{
$info = "$row_pruefling->vorname $row_pruefling->nachname, $row_pruefling->stg_bez, Gruppe $row_pruefling->gruppe_kurzbz";
$info = "$row_pruefling->vorname $row_pruefling->nachname, $row_pruefling->stg_bez";
}
}
//Zeit des Gebietes holen
echo '<table width="100%"><tr><td>'.$info.'</td><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
@@ -249,7 +308,9 @@ if($demo)
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'])."'";
$qry = "SELECT '$gebiet->zeit'-(now()-min(begintime)) as time
FROM testtool.tbl_pruefling_frage 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
@@ -277,62 +338,103 @@ if($frage_id!='') //Frage wurde uebergeben
}
else
{
if($demo) //Demofrage wird angezeigt
if($levelgebiet)
{
$qry = "SELECT frage_id FROM testtool.tbl_frage WHERE gebiet_id='".addslashes($gebiet_id)."' AND gruppe_kurzbz='$gruppe' AND demo=true ORDER BY nummer DESC LIMIT 1";
// wenn keine Frage uebergeben wurde und die maximale Fragenanzahl erreicht wurde
// dann ist das Gebiet fertig
$qry = "SELECT count(*) as anzahl FROM testtool.tbl_pruefling_frage 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);
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);
$row = pg_fetch_object($result);
if($row->anzahl>=$gebiet->maxfragen)
{
die("<script>document.location.href='gebietfertig.php';</script>");
}
}
$frage_id = $frage->getNextFrage($gebiet_id, $_SESSION['pruefling_id'], null, $demo);
$frage->load($frage_id);
}
//Anzeigen der Frage
if($frage->frage_id!='')
{
$frage_id = $frage->frage_id;
$frage->getFrageSprache($frage_id, $_SESSION['sprache']);
if(!$demo)
{
//Nachschauen ob diese Frage bereits angesehen wurde
$antwort = new antwort($conn);
if(!$antwort->getAntwort($_SESSION['pruefling_id'],$frage_id))
$antwort->getAntwort($_SESSION['pruefling_id'],$frage_id);
if(count($antwort->result)==0)
{
//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';
$prueflingfrage = new frage($conn);
if(!$prueflingfrage->getPrueflingfrage($_SESSION['pruefling_id'], $frage_id))
die('Diese Frage ist nicht fuer Sie bestimmt');
if($prueflingfrage->begintime=='')
{
$prueflingfrage->begintime = date('Y-m-d H:i:s');
$prueflingfrage->new = false;
if(!$prueflingfrage->save_prueflingfrage())
echo 'Fehler beim Speichern der Erstansicht';
}
}
}
echo '<br/><br/><center>';
//Bild und Text der Frage anzeigen
if($frage->bild!='')
echo "<img class='testtoolfrage' src='bild.php?src=frage&amp;frage_id=$frage->frage_id' /><br/><br/>\n";
echo "<img class='testtoolfrage' src='bild.php?src=frage&amp;frage_id=$frage->frage_id&amp;sprache=".$sprache."' /><br/><br/>\n";
//Sound einbinden
if($frage->audio!='')
echo '<embed autostart="false" src="sound.php?src=frage&amp;frage_id='.$frage->frage_id.'&amp;sprache='.$sprache.'" height="20" width="250"/><br />';
echo "$frage->text<br/><br/>\n";
//Vorschlaege laden
$vs = new vorschlag($conn);
$vs->getVorschlag($frage->frage_id);
$vs->getVorschlag($frage->frage_id, $_SESSION['sprache'], $gebiet->zufallvorschlag);
echo "<form action=\"$PHP_SELF?gebiet_id=$gebiet_id&amp;frage_id=$frage->frage_id\" method=\"POST\">";
echo '<table cellspacing="30px">';
echo '<tr>';
$anzahl = 1;
//Antworten laden falls bereits vorhanden
$antwort = new antwort($conn);
$antwort->getAntwort($_SESSION['pruefling_id'],$frage->frage_id);
//Vorschlaege anzeigen
foreach ($vs->result as $vorschlag)
{
echo "\n<td align='center'>";
echo "$vorschlag->antwort<br/>";
echo "\n<td align='center' valign='top'>";
//Bei multipleresponse checkboxen anzeigen ansonsten radiobuttons
if($gebiet->multipleresponse)
$type='checkbox';
else
$type='radio';
//Antworten markieren wenn die Frage bereits beantwortet wurde
$checked=false;
reset($antwort->result);
foreach ($antwort->result as $answer)
{
if($vorschlag->vorschlag_id==$answer->vorschlag_id)
{
$checked='checked="checked"';
}
}
echo '<input type="'.$type.'" name="vorschlag_id[]" value="'.$vorschlag->vorschlag_id.'" '.$checked.'/>';
echo '<br/>';
if($vorschlag->bild!='')
echo "<img class='testtoolvorschlag' src='bild.php?src=vorschlag&amp;vorschlag_id=$vorschlag->vorschlag_id' /><br/>";
echo "<img class='testtoolvorschlag' src='bild.php?src=vorschlag&amp;vorschlag_id=$vorschlag->vorschlag_id&amp;sprache=$sprache' /><br/>";
if($vorschlag->audio!='')
echo '<embed autostart="false" src="sound.php?src=vorschlag&amp;vorschlag_id='.$vorschlag->vorschlag_id.'&amp;sprache='.$sprache.'" height="20" width="100"/><br />';
if($vorschlag->text!='')
echo $vorschlag->text.'<br/>';
echo "</td>";
@@ -344,22 +446,28 @@ if($frage->frage_id!='')
$anzahl=1;
}
}
//wenn singleresponse und keine Levels und vorschlaege vorhanden sind, dann gibt es auch die
//moeglichkeit fuer keine Antwort
if(!$gebiet->multipleresponse && !$levelgebiet && count($vs->result)>0)
{
echo "<td align='center' valign='top'>";
echo '<input type="radio" name="vorschlag_id[]" value="" /><br />keine Antwort</td>';
}
echo '</tr></table>';
//Antwort laden falls bereits vorhanden
$antwort = new antwort($conn);
$antwort->getAntwort($_SESSION['pruefling_id'],$frage->frage_id);
if(!$demo)
{
echo "<form action=\"$PHP_SELF?gebiet_id=$gebiet_id&amp;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 type=\"submit\" name=\"submitantwort\" onclick=\"return checkantwort()\" value=\"Speichern\" />";
echo "</form>";
echo "<input type=\"submit\" name=\"submitantwort\" value=\"Speichern\" />";
}
echo "</form>";
echo '<br/><br/><br/>';
//Fusszeile mit Weiter Button und Sprung direkt zu einer Frage
if(!$demo)
if(!$demo && !$levelgebiet)
{
$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";
$qry = "SELECT tbl_pruefling_frage.nummer, tbl_pruefling_frage.frage_id
FROM testtool.tbl_pruefling_frage JOIN testtool.tbl_frage USING(frage_id)
WHERE gebiet_id='".addslashes($gebiet_id)."' AND pruefling_id='".addslashes($_SESSION['pruefling_id'])."' AND demo=false ORDER BY nummer";
//Nummern der Fragen Anzeigen
$result = pg_query($conn, $qry);
@@ -372,17 +480,21 @@ if($frage->frage_id!='')
}
}
//Naechste Frage holen und Weiter-Button anzeigen
$frage = new frage($conn);
$nextfrage = $frage->getNextFrage($gebiet_id, $gruppe, $frage_id, $demo);
if($nextfrage)
//Weiter Button nur bei nicht gelevelten Gebieten anzeigen
if(!$levelgebiet)
{
echo " <a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;frage_id=$nextfrage' class='Item'>Weiter &gt;&gt;</a>";
}
else
{
//Wenns der letzte Eintrag ist, wieder zum ersten springen
echo " <a href='$PHP_SELF?gebiet_id=$gebiet_id' class='Item'>Weiter &gt;&gt;</a>";
//Naechste Frage holen und Weiter-Button anzeigen
$frage = new frage($conn);
$nextfrage = $frage->getNextFrage($gebiet_id, $_SESSION['pruefling_id'], $frage_id, $demo);
if($nextfrage)
{
echo " <a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;frage_id=$nextfrage' class='Item'>Weiter &gt;&gt;</a>";
}
else
{
//Wenns der letzte Eintrag ist, wieder zum ersten springen
echo " <a href='$PHP_SELF?gebiet_id=$gebiet_id' class='Item'>Weiter &gt;&gt;</a>";
}
}
echo '</center>';
@@ -390,7 +502,7 @@ if($frage->frage_id!='')
else
{
//Wenn kein Demo vorhanden ist
echo "<br/><br/><br/><center><b>Start drücken um zu beginnen</b></center>";
echo "<br/><br/><br/><center><b>Start druecken um zu beginnen</b></center>";
}
?>
+2 -2
View File
@@ -24,8 +24,8 @@
<!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">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
<link href="../../../skin/style.css.php" rel="stylesheet" type="text/css">
</head>
+2 -2
View File
@@ -2,8 +2,8 @@
<html>
<head>
<title>TestTool - FH Technikum Wien</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="../../skin/cis.css" rel="stylesheet" type="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
<link href="../../skin/style.css.php" rel="stylesheet" type="text/css">
</head>
<frameset rows="77,*,1" cols="*" frameborder="NO" border="0" framespacing="0">
+108 -34
View File
@@ -21,36 +21,57 @@
*/
require_once('../config.inc.php');
//require_once('../../include/functions.inc.php');
require_once('../../include/person.class.php');
require_once('../../include/prestudent.class.php');
require_once('../../include/pruefling.class.php');
//require_once('../../include/lehrveranstaltung.class.php');
require_once('../../include/studiengang.class.php');
session_start();
$reload=false;
$reload_parent=false;
if (isset($_POST['logout']))
if (isset($_GET['logout']))
{
$reload = true;
session_destroy();
if(isset($_SESSION['prestudent_id']))
{
$reload = true;
session_destroy();
}
}
//Connection Herstellen
if(!$db_conn = pg_pconnect(CONN_STRING))
die('Fehler beim oeffnen der Datenbankverbindung');
die('Fehler beim Oeffnen der Datenbankverbindung');
if (isset($_POST['prestudent']) && isset($_POST['gebdatum']))
{
$ps=new prestudent($db_conn,$_POST['prestudent']);
if ($_POST['gebdatum']==$ps->gebdatum)
{
$pruefling = new pruefling($db_conn);
if($pruefling->getPruefling($ps->prestudent_id))
{
$studiengang = $pruefling->studiengang_kz;
$semester = $pruefling->semester;
}
else
{
$studiengang = $ps->studiengang_kz;
$ps->getLastStatus($ps->prestudent_id);
$semester = $ps->ausbildungssemester;
}
if($semester=='')
$semester=1;
$_SESSION['prestudent_id']=$_POST['prestudent'];
$_SESSION['studiengang_kz']=$ps->studiengang_kz;
$_SESSION['studiengang_kz']=$studiengang;
$_SESSION['nachname']=$ps->nachname;
$_SESSION['vorname']=$ps->vorname;
$_SESSION['gebdatum']=$ps->gebdatum;
$stg_obj = new studiengang($db_conn, $studiengang);
$_SESSION['sprache']=$stg_obj->sprache;
$_SESSION['semester']=$semester;
}
}
@@ -66,6 +87,33 @@ else
$ps->getPrestudentRT($datum);
}
if(isset($_GET['type']) && $_GET['type']=='sprachechange' && isset($_GET['sprache']))
{
$_SESSION['sprache']=$_GET['sprache'];
}
if(isset($_SESSION['prestudent_id']) && !isset($_SESSION['pruefling_id']))
{
$pruefling = new pruefling($db_conn);
if(!$pruefling->getPruefling($_SESSION['prestudent_id']))
{
$pruefling->new = true;
$pruefling->studiengang_kz = $_SESSION['studiengang_kz'];
$pruefling->semester = $_SESSION['semester'];
$pruefling->idnachweis = '';
$pruefling->registriert = date('Y-m-d H:i:s');
$pruefling->prestudent_id = $_SESSION['prestudent_id'];
if($pruefling->save())
{
$_SESSION['pruefling_id']=$pruefling->pruefling_id;
$reload_parent=true;
}
}
}
if(isset($_POST['save']) && isset($_SESSION['prestudent_id']))
{
$pruefling = new pruefling($db_conn);
@@ -81,10 +129,11 @@ if(isset($_POST['save']) && isset($_SESSION['prestudent_id']))
$pruefling->idnachweis = $_POST['idnachweis'];
$pruefling->registriert = date('Y-m-d H:i:s');
$pruefling->prestudent_id = $_SESSION['prestudent_id'];
$pruefling->gruppe_kurzbz = $_POST['gruppe'];
$pruefling->semester = $_POST['semester'];
if($pruefling->save())
{
$_SESSION['pruefling_id']=$pruefling->pruefling_id;
$_SESSION['semester']=$pruefling->semester;
$reload_parent=true;
}
}
@@ -92,8 +141,8 @@ if(isset($_POST['save']) && isset($_SESSION['prestudent_id']))
<!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">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
<link href="../../skin/style.css.php" rel="stylesheet" type="text/css">
<?php
if($reload_parent)
echo '<script language="Javascript">parent.menu.location.reload()</script>';
@@ -107,41 +156,66 @@ if(isset($_POST['save']) && isset($_SESSION['prestudent_id']))
<?php
if (isset($prestudent_id))
{
echo '<form method="post">';
echo '<form method="GET">';
echo '<br>Sie sind angemeldet als '.$_SESSION['vorname'].' '.$_SESSION['nachname'];
echo ' ('.$_SESSION['gebdatum'].') ID: '.$_SESSION['prestudent_id'];
echo '&nbsp; <INPUT type="submit" value="Logout" name="logout" />';
echo '</form>';
echo '<br><br>';
$prestudent = new prestudent($db_conn, $prestudent_id);
$stg_obj = new studiengang($db_conn, $prestudent->studiengang_kz);
$pruefling = new pruefling($db_conn);
$pruefling->getPruefling($prestudent_id);
if($pruefling->pruefling_id!='')
if($pruefling->getPruefling($prestudent_id))
{
$_SESSION['pruefling_id']=$pruefling->pruefling_id;
echo '<script language="Javascript">parent.menu.location.reload()</script>';
}
echo '<FORM METHOD="POST">';
echo '<input type="hidden" name="pruefling_id" value="'.$pruefling->pruefling_id.'">';
echo '<table>';
echo '<tr><td>Gruppe:</td><td><SELECT name="gruppe">';
$qry = "SELECT * FROM testtool.tbl_gruppe ORDER BY gruppe_kurzbz";
if($result = pg_query($db_conn, $qry))
{
while($row = pg_fetch_object($result))
echo '<FORM METHOD="POST">';
echo '<input type="hidden" name="pruefling_id" value="'.$pruefling->pruefling_id.'">';
echo '<table>';
echo '<tr><td>Semester:</td><td><input type="text" name="semester" size="1" maxlength="1" value="'.htmlentities($pruefling->semester).'"></td></tr>';
echo '<tr><td>ID Nachweis:</td><td><INPUT type="text" maxsize="50" name="idnachweis" value="'.htmlentities($pruefling->idnachweis).'"></td></tr>';
echo '<tr><td></td><td><input type="submit" name="save" value="OK"></td>';
echo '</table>';
echo '</FORM><br><br>';
//Wenn die Sprachwahl fuer diesen Studiengang aktiviert ist, dann die Sprachen anzeigen
if($stg_obj->testtool_sprachwahl)
{
if($row->gruppe_kurzbz==$pruefling->gruppe_kurzbz)
echo '<OPTION value="'.$row->gruppe_kurzbz.'" selected>'.$row->gruppe_kurzbz.'</OPTION>';
else
echo '<OPTION value="'.$row->gruppe_kurzbz.'" >'.$row->gruppe_kurzbz.'</OPTION>';
//Liste der Sprachen
$qry = "SELECT distinct sprache
FROM
testtool.tbl_pruefling
JOIN testtool.tbl_ablauf USING(studiengang_kz)
JOIN testtool.tbl_frage USING(gebiet_id)
JOIN testtool.tbl_frage_sprache USING(frage_id)
WHERE
tbl_pruefling.pruefling_id='".addslashes($pruefling->pruefling_id)."'
ORDER BY sprache DESC";
echo 'Sprache:';
if($result = pg_query($db_conn, $qry))
{
while($row = pg_fetch_object($result))
{
if($_SESSION['sprache']==$row->sprache)
$selected='style="border:1px solid black;"';
else
$selected='';
echo " <a href='".$_SERVER['PHP_SELF']."?type=sprachechange&sprache=$row->sprache' class='Item' $selected><img src='bild.php?src=flag&amp;sprache=$row->sprache' alt='$row->sprache' title='$row->sprache'/></a>";
}
}
}
if($pruefling->pruefling_id!='')
{
$_SESSION['pruefling_id']=$pruefling->pruefling_id;
echo '<script language="Javascript">parent.menu.location.reload()</script>';
}
}
echo '</SELECT></td></tr>';
echo '<tr><td>ID Nachweis:</td><td><INPUT type="text" maxsize="50" name="idnachweis" value="'.htmlentities($pruefling->idnachweis).'"></td></tr>';
echo '<tr><td></td><td><input type="submit" name="save" value="OK"></td>';
echo '</table>';
echo '</FORM>';
else
{
echo 'Kein Pueflingseintrag vorhanden';
}
}
else
{
+27 -9
View File
@@ -21,6 +21,7 @@
*/
require_once('../config.inc.php');
require_once('../../include/gebiet.class.php');
session_start();
@@ -32,8 +33,8 @@ if(!$db_conn = pg_pconnect(CONN_STRING))
<!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">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
<link href="../../skin/style.css.php" rel="stylesheet" type="text/css">
</head>
<body>
@@ -50,16 +51,33 @@ if (isset($_SESSION['pruefling_id']))
echo '<tr><td nowrap>';
echo '<table width="100%" border="0" cellspacing="0" cellpadding="0" id="Gebiet" style="display: visible;">';
$qry = 'SELECT * FROM testtool.vw_ablauf WHERE studiengang_kz='.$_SESSION['studiengang_kz'].' ORDER BY reihung';
$qry = "SELECT * FROM testtool.vw_ablauf WHERE studiengang_kz='".addslashes($_SESSION['studiengang_kz'])."' AND semester='".addslashes($_SESSION['semester'])."' ORDER BY reihung";
//echo $qry;
if($result = pg_query($db_conn, $qry))
{
while($row = pg_fetch_object($result))
echo '<tr>
<td width="10" nowrap>&nbsp;</td>
<td nowrap>
<a class="Item" href="frage.php?gebiet_id='.$row->gebiet_id.'" target="content"><img src="../../skin/images/menu_item.gif" width="7" height="9">&nbsp;'.$row->gebiet_bez.'</a>
</td>
</tr>';
{
$gebiet = new gebiet($db_conn);
if($gebiet->check_gebiet($row->gebiet_id))
{
echo '<tr>
<td width="10" nowrap>&nbsp;</td>
<td nowrap>
<a class="Item" href="frage.php?gebiet_id='.$row->gebiet_id.'" target="content"><img src="../../skin/images/menu_item.gif" width="7" height="9">&nbsp;'.$row->gebiet_bez.'</a>
</td>
</tr>';
}
else
{
echo '<tr>
<td width="10" nowrap>&nbsp;</td>
<td nowrap>
<span class="error"><img src="../../skin/images/menu_item.gif" width="7" height="9">&nbsp;'.$row->gebiet_bez.' (invalid)</span>
</td>
</tr>';
}
}
}
echo '</table>';
echo '</td></tr></table>';
}
+65
View File
@@ -0,0 +1,65 @@
<?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 <[email protected]>,
* Andreas Oesterreicher <[email protected]> and
* Rudolf Hangl <[email protected]>.
*/
// Holt den Hexcode eines Bildes aus der DB wandelt es in Zeichen
// um und gibt das ein Bild zurueck.
// Aufruf mit <img src='bild.php?src=frage&frage_id=1
require_once('../config.inc.php');
//Hexcode in String umwandeln
function hexstr($hex)
{
$string="";
for ($i=0;$i<strlen($hex)-1;$i+=2)
$string.=chr(hexdec($hex[$i].$hex[$i+1]));
return $string;
}
//Connection Herstellen
if(!$conn = pg_pconnect(CONN_STRING))
die('Fehler beim oeffnen der Datenbankverbindung');
//Hex Dump aus der DB holen
$qry = '';
if(isset($_GET['src']) && $_GET['src']=='frage' && isset($_GET['frage_id']))
{
$qry = "SELECT audio FROM testtool.tbl_frage_sprache WHERE frage_id='".addslashes($_GET['frage_id'])."' AND sprache='".addslashes($_GET['sprache'])."'";
}
elseif(isset($_GET['src']) && $_GET['src']=='vorschlag' && isset($_GET['vorschlag_id']))
{
$qry = "SELECT audio FROM testtool.tbl_vorschlag_sprache WHERE vorschlag_id='".addslashes($_GET['vorschlag_id'])."' AND sprache='".addslashes($_GET['sprache'])."'";
}
else
echo 'Unkown type';
if($qry!='')
{
//Header fuer Sound schicken
header("Content-type: audio/mpeg");
//header("Content-type: audio/wav");
$result = pg_query($conn, $qry);
$row = pg_fetch_object($result);
//HEX Werte in Zeichen umwandeln und ausgeben
echo hexstr($row->audio);
}
?>
+2 -2
View File
@@ -2,8 +2,8 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="../../skin/cis.css" rel="stylesheet" type="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
<link href="../../skin/style.css.php" rel="stylesheet" type="text/css">
</head>
<body>
+4932 -4798
View File
File diff suppressed because it is too large Load Diff
+16 -4
View File
@@ -78,8 +78,8 @@ unterteilen)<br>
<tr>
</tr>
<tr class="liste0">
<td>In den Details der Lehreinheit soll die Anzahl der
teilnehmenden Studenten angezeigt werden</td>
<td><br>
</td>
<td align="center"> <br>
</td>
<td align="center"> <br>
@@ -120,8 +120,10 @@ Projektarbeit nicht nach dem Sponsionsdatum liegt</td>
<tr>
</tr>
<tr class="liste1">
<td>RT-Punkte in FAS &uuml;bernehmen.(Button neben Eingabefeld)</td>
<td align="center">med </td>
<td><br>
</td>
<td align="center"> <br>
</td>
<td align="center"><br>
</td>
</tr>
@@ -465,6 +467,16 @@ nur eine am Zeugnis</td>
<h2>Erledigte Anforderungen</h2>
<br>
<ul>
<li>In den Details der Lehreinheit soll die Anzahl der
teilnehmenden Studenten angezeigt werden<br>
03.03.2009 oesi<br>
<br>
</li>
<li>RT-Punkte ins FAS &uuml;bernehmen - Symbol neben Punkte1 laedt
die Reihungstestpunkte<br>
03.2009 oesi<br>
<br>
</li>
<li>Handbuch Projektarbeit<br>
ruhan<br>
<br>
@@ -78,7 +78,7 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
</vbox>
<hbox>
<groupbox orientation="horizontal">
<caption label="Details" />
<caption id="lehrveranstaltung-detail-groupbox-caption" label="Details" />
<!--Details-->
<hbox>
<grid datasources="rdf:null"
@@ -776,6 +776,7 @@ function LeAuswahl()
anmerkung=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#anmerkung" ));
studiensemester=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#studiensemester_kurzbz" ));
lehrform=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#lehrform_kurzbz" ));
anzahl_studenten=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#anzahl_studenten" ));
//Lehrfach drop down setzen
@@ -830,6 +831,7 @@ function LeAuswahl()
document.getElementById('lehrveranstaltung-detail-menulist-lehrform').value=lehrform;
document.getElementById('lehrveranstaltung-detail-checkbox-new').checked=false;
document.getElementById('lehrveranstaltung-detail-textbox-lehreinheit_id').value=lehreinheit_id;
document.getElementById('lehrveranstaltung-detail-groupbox-caption').label='Details - Anzahl TeilnehmerInnen: '+anzahl_studenten;
//Lehreinheitmitarbeiter tree setzen
url='<?php echo APP_ROOT;?>rdf/lehreinheitmitarbeiter.rdf.php?lehreinheit_id='+lehreinheit_id+"&"+gettimestamp();
+13
View File
@@ -56,6 +56,7 @@ require_once('../../include/projektbetreuer.class.php');
require_once('../../include/lehrverband.class.php');
require_once('../../include/gruppe.class.php');
require_once('../../include/datum.class.php');
require_once('../../include/pruefling.class.php');
$user = get_uid();
@@ -394,6 +395,8 @@ if(!$error)
$prestudent->anmeldungreihungstest = $_POST['anmeldungreihungstest'];
$prestudent->reihungstestangetreten = ($_POST['reihungstestangetreten']=='true'?true:false);
$prestudent->punkte = str_replace(',','.',$_POST['punkte']);
$prestudent->rt_punkte1 = str_replace(',','.',$_POST['punkte1']);
$prestudent->rt_punkte2 = str_replace(',','.',$_POST['punkte2']);
$prestudent->bismelden = ($_POST['bismelden']=='true'?true:false);
$prestudent->dual = ($_POST['dual']=='true'?true:false);
$prestudent->anmerkung = $_POST['anmerkung'];
@@ -2969,6 +2972,16 @@ if(!$error)
$errormsg = 'Fehlerhafte Parameteruebergabe';
}
}
elseif(isset($_POST['type']) && $_POST['type']=='getReihungstestPunkte')
{
//Liefert die Reihungstestpunkte eines Prestudenten
if(isset($_POST['prestudent_id']))
{
$pruefling = new pruefling($conn);
$data = $pruefling->getReihungstestErgebnis($_POST['prestudent_id']);
$return = true;
}
}
elseif(isset($_POST['type']) && $_POST['type']=='getstundensatz')
{
if(isset($_POST['person_id']))
+11 -2
View File
@@ -349,8 +349,17 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<row>
<label value="Zum Reihungstest angetreten" control="student-prestudent-checkbox-reihungstestangetreten"/>
<checkbox id="student-prestudent-checkbox-reihungstestangetreten" checked="true" disabled="true"/>
<label value="Reihungstestpunkte" control="student-prestudent-textbox-punkte"/>
<hbox><textbox id="student-prestudent-textbox-punkte" disabled="true" maxlength="9" size="9" onchange="StudentReihungstestPunkteChange();"/></hbox>
<hbox>
<label value="Punkte1" control="student-prestudent-textbox-punkte1" />
<toolbarbutton id="student-prestudent-button-reihungstest-punktesync" image="../skin/images/transmit.png" tooltiptext="Reihungstest Ergebnis holen" onclick="StudentReihungstestPunkteTransmit()"/>
</hbox>
<hbox>
<textbox id="student-prestudent-textbox-punkte1" disabled="true" maxlength="9" size="9" onchange="StudentReihungstestPunkteChange();" oninput="StudentReihungstestPunkteSum();"/>
<label value="Punkte2" control="student-prestudent-textbox-punkte2"/>
<textbox id="student-prestudent-textbox-punkte2" disabled="true" maxlength="9" size="9" onchange="StudentReihungstestPunkteChange();" oninput="StudentReihungstestPunkteSum();"/>
<label value="Gesamtpunkte" control="student-prestudent-textbox-punkte"/>
<textbox id="student-prestudent-textbox-punkte" disabled="true" maxlength="9" size="9" onchange="StudentReihungstestPunkteChange();"/>
</hbox>
</row>
</rows>
</grid>
+53 -1
View File
@@ -886,6 +886,8 @@ function StudentAuswahl()
anmeldungreihungstest = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#anmeldungreihungstest" ));
reihungstestangetreten = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#reihungstestangetreten" ));
punkte = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#punkte" ));
punkte1 = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#punkte1" ));
punkte2 = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#punkte2" ));
bismelden = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#bismelden" ));
anmerkung = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#anmerkungpre" ));
dual = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#dual" ));
@@ -911,6 +913,8 @@ function StudentAuswahl()
else
document.getElementById('student-prestudent-checkbox-reihungstestangetreten').checked=false;
document.getElementById('student-prestudent-textbox-punkte').value=punkte;
document.getElementById('student-prestudent-textbox-punkte1').value=punkte1;
document.getElementById('student-prestudent-textbox-punkte2').value=punkte2;
if(bismelden=='true')
document.getElementById('student-prestudent-checkbox-bismelden').checked=true;
@@ -1334,6 +1338,8 @@ function StudentPrestudentDisableFields(val)
document.getElementById('student-prestudent-textbox-anmeldungreihungstest').disabled=val;
document.getElementById('student-prestudent-checkbox-reihungstestangetreten').disabled=val;
document.getElementById('student-prestudent-textbox-punkte').disabled=val;
document.getElementById('student-prestudent-textbox-punkte1').disabled=val;
document.getElementById('student-prestudent-textbox-punkte2').disabled=val;
document.getElementById('student-prestudent-checkbox-bismelden').disabled=val;
document.getElementById('student-prestudent-checkbox-dual').disabled=val;
document.getElementById('student-prestudent-button-anmeldungreihungstest-heute').disabled=val;
@@ -1381,6 +1387,8 @@ function StudentPrestudentSave()
anmeldungreihungstest = document.getElementById('student-prestudent-textbox-anmeldungreihungstest').value;
reihungstestangetreten = document.getElementById('student-prestudent-checkbox-reihungstestangetreten').checked;
punkte = document.getElementById('student-prestudent-textbox-punkte').value;
punkte1 = document.getElementById('student-prestudent-textbox-punkte1').value;
punkte2 = document.getElementById('student-prestudent-textbox-punkte2').value;
bismelden = document.getElementById('student-prestudent-checkbox-bismelden').checked;
dual = document.getElementById('student-prestudent-checkbox-dual').checked;
person_id = document.getElementById('student-prestudent-textbox-person_id').value;
@@ -1431,6 +1439,8 @@ function StudentPrestudentSave()
req.add('anmeldungreihungstest', ConvertDateToISO(anmeldungreihungstest));
req.add('reihungstestangetreten', reihungstestangetreten);
req.add('punkte', punkte);
req.add('punkte1', punkte1);
req.add('punkte2', punkte2);
req.add('bismelden', bismelden);
req.add('dual', dual);
req.add('person_id', person_id);
@@ -1605,11 +1615,53 @@ function StudentAnmeldungreihungstestHeute()
// ****
function StudentReihungstestPunkteChange()
{
if(document.getElementById('student-prestudent-textbox-punkte').value!=''
if(document.getElementById('student-prestudent-textbox-punkte1').value!=''
&& document.getElementById('student-prestudent-checkbox-reihungstestangetreten').checked==false)
document.getElementById('student-prestudent-checkbox-reihungstestangetreten').checked=true;
}
// ****
// * Summiert die beiden Reihungstestpunkte
// ****
function StudentReihungstestPunkteSum()
{
punkte1 = document.getElementById('student-prestudent-textbox-punkte1').value;
punkte2 = document.getElementById('student-prestudent-textbox-punkte2').value;
document.getElementById('student-prestudent-textbox-punkte').value=parseFloat(punkte1)+parseFloat(punkte2);
}
// ****
// * Holt die Reihungstestpunkte des Prestudenten
// ****
function StudentReihungstestPunkteTransmit()
{
var prestudent_id = document.getElementById('student-prestudent-textbox-prestudent_id').value;
var url = '<?php echo APP_ROOT ?>content/student/studentDBDML.php';
var req = new phpRequest(url,'','');
req.add('type', 'getReihungstestPunkte');
req.add('prestudent_id', prestudent_id);
var response = req.executePOST();
var val = new ParseReturnValue(response)
if (!val.dbdml_return)
{
if(val.dbdml_errormsg=='')
alert(response)
else
alert(val.dbdml_errormsg)
}
else
{
document.getElementById('student-prestudent-textbox-punkte1').value = val.dbdml_data;
StudentReihungstestPunkteSum();
}
}
// ****
// * Einen Ab-/Unterbrecher wieder zum Studenten machen
// ****
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 24 KiB

+54 -32
View File
@@ -24,11 +24,8 @@ class antwort
{
//Tabellenspalten
var $antwort_id;
var $frage_id;
var $antwort;
var $begintime;
var $endtime;
var $pruefling_id;
var $vorschlag_id;
// ErgebnisArray
var $result=array();
@@ -75,11 +72,8 @@ class antwort
if($row = pg_fetch_object($result))
{
$this->antwort_id = $row->antwort_id;
$this->frage_id = $row->frage_id;
$this->antwort = $row->antwort;
$this->begintime = $row->begintime;
$this->endtime = $row->endtime;
$this->pruefling_id = $row->pruefling_id;
$this->vorschlag_id = $row->vorschlag_id;
return true;
}
else
@@ -90,7 +84,7 @@ class antwort
}
else
{
$this->errormsg = "Fehler beim laden: $qry";
$this->errormsg = "Fehler beim Laden der Antwort";
return false;
}
}
@@ -130,19 +124,16 @@ class antwort
if($this->new) //Wenn new true ist dann ein INSERT absetzen ansonsten ein UPDATE
{
$qry = 'INSERT INTO testtool.tbl_antwort (frage_id, antwort, begintime, endtime, pruefling_id) VALUES('.
"'".addslashes($this->frage_id)."',".
$this->addslashes($this->antwort).",".
$this->addslashes($this->begintime).",".
$this->addslashes($this->endtime).",".
$this->addslashes($this->pruefling_id).");";
$qry = 'INSERT INTO testtool.tbl_antwort (pruefling_id, vorschlag_id) VALUES('.
$this->addslashes($this->pruefling_id).",".
$this->addslashes($this->vorschlag_id).");";
}
else
{
$qry = 'UPDATE testtool.tbl_antwort SET'.
' antwort='.$this->addslashes($this->antwort).','.
" endtime='".$this->endtime."'".
" WHERE frage_id='".addslashes($this->frage_id)."' AND pruefling_id='".addslashes($this->pruefling_id)."'";
' vorschlag_id='.$this->addslashes($this->vorschlag_id).','.
" pruefling_id='".$this->pruefling_id."'".
" WHERE antwort_id='".addslashes($this->antwort_id)."'";
}
if(pg_query($this->conn,$qry))
@@ -157,26 +148,57 @@ class antwort
}
}
/**
* Loescht einen Eintrag aus der Tabelle tbl_antwort
*
* @param $antwort_id
* @return true wenn ok, false im Fehlerfall
*/
public function delete($antwort_id)
{
if(!is_numeric($antwort_id) || $antwort_id=='')
{
$this->errormsg = 'Antwort_id ist ungueltig';
return false;
}
$qry = "DELETE FROM testtool.tbl_antwort WHERE antwort_id='".addslashes($antwort_id)."'";
if(pg_query($this->conn, $qry))
{
return true;
}
else
{
$this->errormsg = 'Fehler beim Löschen der Antwort';
return false;
}
}
function getAntwort($pruefling_id, $frage_id)
{
$qry = "SELECT * FROM testtool.tbl_antwort WHERE pruefling_id='".addslashes($pruefling_id)."' AND frage_id='".addslashes($frage_id)."'";
$qry = "SELECT * FROM testtool.tbl_antwort JOIN testtool.tbl_pruefling_frage USING(pruefling_id)
JOIN testtool.tbl_vorschlag USING(vorschlag_id)
WHERE
tbl_vorschlag.frage_id=tbl_pruefling_frage.frage_id AND
pruefling_id='".addslashes($pruefling_id)."' AND
tbl_vorschlag.frage_id='".addslashes($frage_id)."'";
if($result = pg_query($this->conn, $qry))
{
if($row = pg_fetch_object($result))
while($row = pg_fetch_object($result))
{
$this->antwort_id = $row->antwort_id;
$this->frage_id = $row->frage_id;
$this->antwort = $row->antwort;
$this->begintime = $row->begintime;
$this->endtime = $row->endtime;
$this->pruefling_id = $row->pruefling_id;
return true;
$obj = new antwort($this->conn, null, null);
$obj->antwort_id = $row->antwort_id;
$obj->frage_id = $row->frage_id;
$obj->vorschlag_id = $row->vorschlag_id;
$obj->begintime = $row->begintime;
$obj->endtime = $row->endtime;
$obj->pruefling_id = $row->pruefling_id;
$this->result[] = $obj;
}
else
{
$this->errormsg = 'Antwort wurde nicht gefunden';
return false;
}
return true;
}
else
{
+595 -58
View File
@@ -16,22 +16,40 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <[email protected]>,
* Andreas Oesterreicher <[email protected]> and
* Rudolf Hangl <[email protected]>.
* Andreas Oesterreicher <[email protected]>,
* Rudolf Hangl <[email protected]> and
* Gerald Simane-Sequens <[email protected]>
*/
/**
* Klasse fuer die Fragen des Reihungstesttools
*/
require_once(dirname(__FILE__).'/gebiet.class.php');
require_once(dirname(__FILE__).'/pruefling.class.php');
class frage
{
//Tabellenspalten
var $frage_id;
var $gebiet_id;
var $gruppe_kurzbz;
var $loesung;
var $nummer;
var $demo;
var $level;
var $kategorie_kurzbz;
var $sprache;
var $audio;
var $text;
var $bild;
var $pruefling_id;
var $prueflingfrage_id;
var $begintime;
var $endtime;
var $insertamum;
var $updateamum;
var $insertvon;
var $updatevon;
// ErgebnisArray
var $result=array();
var $num_rows=0;
@@ -45,7 +63,7 @@ class frage
// * $unicode Gibt an ob die Daten mit UNICODE Codierung
// * oder LATIN9 Codierung verarbeitet werden sollen
// *************************************************************************
function frage($conn, $frage_id=null, $unicode=false)
public function frage($conn, $frage_id=null, $unicode=false)
{
$this->conn = $conn;
@@ -68,8 +86,14 @@ class frage
// * Laedt Frage mit der uebergebenen ID
// * @param $frage_id ID der Frage die geladen werden soll
// ***********************************************************
function load($frage_id)
{
public function load($frage_id)
{
if(!is_numeric($frage_id) || $frage_id=='')
{
$this->errormsg = 'Frage_id ist ungueltig';
return false;
}
$qry = "SELECT * FROM testtool.tbl_frage WHERE frage_id='".addslashes($frage_id)."'";
if($result = pg_query($this->conn, $qry))
@@ -78,12 +102,15 @@ class frage
{
$this->frage_id = $row->frage_id;
$this->gebiet_id = $row->gebiet_id;
$this->gruppe_kurzbz = $row->gruppe_kurzbz;
$this->loesung = $row->loesung;
$this->nummer = $row->nummer;
$this->demo = ($row->demo=='t'?true:false);
$this->text = $row->text;
$this->bild = $row->bild;
$this->kategorie_kurzbz = $row->kategorie_kurzbz;
$this->updateamum = $row->updateamum;
$this->updatevon = $row->updatevon;
$this->insertamum = $row->insertamum;
$this->insertvon = $row->insertvon;
$this->level = $row->level;
return true;
}
else
@@ -94,7 +121,7 @@ class frage
}
else
{
$this->errormsg = "Fehler beim laden: $qry";
$this->errormsg = "Fehler beim Laden: $qry";
return false;
}
}
@@ -105,7 +132,7 @@ class frage
// * Zeichen mit Backslash versehen und das Ergbnis
// * unter Hochkomma gesetzt.
// ************************************************
function addslashes($var)
private function addslashes($var)
{
return ($var!=''?"'".addslashes($var)."'":'null');
}
@@ -115,7 +142,7 @@ class frage
// * auf Gueltigkeit.
// * @return true wenn ok, false im Fehlerfall
// *******************************************
function validate()
private function validate()
{
return true;
}
@@ -126,7 +153,7 @@ class frage
// * ansonsten der Datensatz mit $uid upgedated
// * @return true wenn erfolgreich, false im Fehlerfall
// ******************************************************************
function save()
public function save()
{
//Variablen auf Gueltigkeit pruefen
if(!$this->validate())
@@ -134,31 +161,101 @@ class frage
if($this->new) //Wenn new true ist dann ein INSERT absetzen ansonsten ein UPDATE
{
$qry = 'INSERT INTO testtool.tbl_frage (frage_id, gebiet_id, gruppe_kurzbz, loesung, nummer, demo, text, bild) VALUES('.
"'".addslashes($this->frage_id)."',".
$this->addslashes($this->gebiet_id).",'".
$this->addslashes($this->gruppe_kurzbz).",'".
$this->addslashes($this->loesung).",".
$this->addslashes($this->nummer).",".
($this->demo?'true':'false').",'".
$this->text."',".
$this->addslashes($this->bild).");";
$qry = 'BEGIN;INSERT INTO testtool.tbl_frage (kategorie_kurzbz, gebiet_id, level, nummer, demo,
insertamum, insertvon, updateamum, updatevon) VALUES('.
$this->addslashes($this->kategorie_kurzbz).','.
$this->addslashes($this->gebiet_id).','.
$this->addslashes($this->level).','.
$this->addslashes($this->nummer).','.
($this->demo?'true':'false').','.
$this->addslashes($this->insertamum).','.
$this->addslashes($this->insertvon).','.
'null,null);';
}
else
{
$qry = 'UPDATE testtool.tbl_frage SET'.
' frage_id='.$this->addslashes($this->frage_id).','.
' gebiet_id='.$this->addslashes($this->gebiet_id).','.
" gruppe_kurzbz='".$this->gruppe_kurzbz."',".
' loesung='.$this->addslashes($this->loesung).','.
' kategorie_kurzbz='.$this->addslashes($this->kategorie_kurzbz).','.
' level='.$this->addslashes($this->level).','.
' nummer='.$this->addslashes($this->nummer).','.
' demo='.($this->demo?'true':'false').','.
" text='".$this->text."',".
' bild='.$this->addslashes($this->bild).
' updateamum='.$this->addslashes($this->updateamum).','.
' updatevon='.$this->addslashes($this->updatevon).
" WHERE frage_id='".addslashes($this->frage_id)."';";
}
//echo $qry;
if(pg_query($this->conn,$qry))
{
if($this->new)
{
$qry = "SELECT currval('testtool.tbl_frage_frage_id_seq') as id";
if($result = pg_query($this->conn, $qry))
{
if($row = pg_fetch_object($result))
{
$this->frage_id = $row->id;
pg_query($this->conn,'COMMIT');
return true;
}
else
{
$this->errormsg = 'Fehler beim Lesen der Sequence';
pg_query($this->conn, 'ROLLBACK');
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Lesen der Sequence';
pg_query($this->conn, 'ROLLBACK');
return false;
}
}
else
{
return true;
}
}
else
{
$this->errormsg = 'Fehler beim Speichern der Frage:'.$qry;
return false;
}
}
/**
* Speichert die Frage in der angegebenen Sprache
*
* @return true wenn ok, false im Fehlerfall
*/
public function save_fragesprache()
{
if($this->new) //Wenn new true ist dann ein INSERT absetzen ansonsten ein UPDATE
{
$qry = 'INSERT INTO testtool.tbl_frage_sprache (frage_id, sprache, text, bild, audio,
insertamum, insertvon, updateamum, updatevon) VALUES('.
$this->addslashes($this->frage_id).','.
$this->addslashes($this->sprache).','.
$this->addslashes($this->text).','.
$this->addslashes($this->bild).','.
$this->addslashes($this->audio).','.
$this->addslashes($this->insertamum).','.
$this->addslashes($this->insertvon).','.
'null,null);';
}
else
{
$qry = 'UPDATE testtool.tbl_frage_sprache SET'.
' text='.$this->addslashes($this->text).','.
' bild='.$this->addslashes($this->bild).','.
' audio='.$this->addslashes($this->audio).','.
' updateamum='.$this->addslashes($this->updateamum).','.
' updatevon='.$this->addslashes($this->updatevon).
" WHERE frage_id='".addslashes($this->frage_id)."' AND sprache='".addslashes($this->sprache)."';";
}
//echo $qry;
if(pg_query($this->conn,$qry))
{
//Log schreiben
return true;
@@ -169,51 +266,70 @@ class frage
return false;
}
}
function getFrage($gebiet_id, $nummer, $gruppe_kurzbz)
public function getFragen($gebiet_id, $nummer)
{
$qry = "SELECT * FROM testtool.tbl_frage WHERE gebiet_id='$gebiet_id' AND nummer='$nummer' AND gruppe_kurzbz='$gruppe_kurzbz'";
$qry = "SELECT * FROM testtool.tbl_frage
WHERE gebiet_id='".addslashes($gebiet_id)."' AND nummer='".addslashes($nummer)."'";
if($result = pg_query($this->conn, $qry))
{
if($row = pg_fetch_object($result))
while($row = pg_fetch_object($result))
{
$this->frage_id = $row->frage_id;
$this->gebiet_id = $row->gebiet_id;
$this->gruppe_kurzbz = $row->gruppe_kurzbz;
$this->loesung = $row->loesung;
$this->nummer = $row->nummer;
$this->demo = ($row->demo=='t'?true:false);
$this->text = $row->text;
$this->bild = $row->bild;
return true;
}
else
{
$this->errormsg = 'Fehler beim laden';
return false;
$obj = new frage($this->conn, null, null);
$obj->frage_id = $row->frage_id;
$obj->kategorie_kurzbz = $row->kategorie_kurzbz;
$obj->gebiet_id = $row->gebiet_id;
$obj->level = $row->level;
$obj->nummer = $row->nummer;
$obj->demo = ($row->demo=='t'?true:false);
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim laden der Daten';
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
function getNextFrage($gebiet_id, $gruppe_kurzbz, $frage_id, $demo=false)
/**
* Laedt die naechste Frage eines Gebiets
*
* @param $gebiet_id
* @param $pruefling_id
* @param $frage_id ID der vorherigen Frage. wenn Null dann wird die erste Frage geliefert
* @param $demo
* @return frage_id der naechsten Frage oder false wenn Fehler
*/
public function getNextFrage($gebiet_id, $pruefling_id, $frage_id=null, $demo=false)
{
$qry = "SELECT frage_id FROM testtool.tbl_frage WHERE gebiet_id='".addslashes($gebiet_id)."' AND gruppe_kurzbz='".addslashes($gruppe_kurzbz)."' AND nummer".($demo?'<':'>')."(SELECT nummer FROM testtool.tbl_frage WHERE frage_id='".addslashes($frage_id)."') ";
if($demo)
{
$qry.=" AND demo=true";
$order = 'DESC';
$qry = "SELECT frage_id FROM testtool.tbl_frage
WHERE tbl_frage.gebiet_id='".addslashes($gebiet_id)."'
AND demo ";
if(!is_null($frage_id))
$qry.=" AND nummer<(SELECT nummer FROM testtool.tbl_frage WHERE frage_id='".addslashes($frage_id)."')";
$qry .= " ORDER BY nummer DESC LIMIT 1";
}
else
{
$qry = "SELECT frage_id FROM testtool.tbl_pruefling_frage JOIN testtool.tbl_frage USING(frage_id)
WHERE
tbl_frage.gebiet_id='".addslashes($gebiet_id)."' AND
tbl_pruefling_frage.pruefling_id='".addslashes($pruefling_id)."' AND
NOT demo ";
if(!is_null($frage_id))
$qry.=" AND tbl_pruefling_frage.nummer>(SELECT nummer FROM testtool.tbl_pruefling_frage WHERE pruefling_id='".addslashes($pruefling_id)."' AND frage_id='".addslashes($frage_id)."' LIMIT 1)";
$qry.="ORDER BY tbl_pruefling_frage.nummer ASC LIMIT 1";
}
else
$order = 'ASC';
$qry.=" ORDER BY nummer $order LIMIT 1";
if($result = pg_query($this->conn, $qry))
{
@@ -225,5 +341,426 @@ class frage
else
return false;
}
/**
* Laedt die Frage in der angegebenen Sprache
*
* @param $frage_id
* @param $sprache
* @return true wenn ok, false im Fehlerfall
*/
public function getFrageSprache($frage_id, $sprache)
{
$qry = "SELECT * FROM testtool.tbl_frage_sprache JOIN testtool.tbl_frage USING(frage_id)
WHERE frage_id='".addslashes($frage_id)."' AND sprache='".addslashes($sprache)."'";
if($result = pg_query($this->conn, $qry))
{
if($row = pg_fetch_object($result))
{
$this->frage_id = $row->frage_id;
$this->sprache = $row->sprache;
$this->text = $row->text;
$this->bild = $row->bild;
$this->audio = $row->audio;
$this->insertaum = $row->insertamum;
$this->insertvon = $row->insertvon;
$this->updateamum = $row->updateamum;
$this->updatevon = $row->updatevon;
$this->level = $row->level;
$this->demo = ($row->demo=='t'?true:false);
$this->nummer = $row->nummer;
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Frage';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der Frage';
return false;
}
}
/**
* Liefert das naechste Level zu dem noch Fragen fehlen
*
* @param $levelarr Array mit den Levels und der Anzahl der noch zu liefernden Fragen
* @return naechstes level bzw null wenn keines mehr vorhanden
*/
private function getNextFrageLevel($levelarr)
{
foreach ($levelarr as $key=>$row)
{
if($row>0)
return $key;
}
return null;
}
/**
* Generiert den Fragenpool fuer den Pruefling bzw
* die naechste Frage bei gelevelten Gebieten
*
* @param $pruefling_id
* @param $gebiet_id
*/
public function generateFragenpool($pruefling_id, $gebiet_id)
{
$gebiet = new gebiet($this->conn, $gebiet_id);
//Bei Levelgesteuerten Fragen wird nur die erste Frage angelegt
if($gebiet->level_start!='')
{
// Anzahl der bereits vorhandenen Fragen holen
$qry = "SELECT count(*) as anzahl FROM testtool.tbl_pruefling_frage JOIN testtool.tbl_frage USING(frage_id)
WHERE gebiet_id='".addslashes($gebiet_id)."' AND pruefling_id='".addslashes($pruefling_id)."'";
if($result = pg_query($this->conn, $qry))
{
if($row = pg_fetch_object($result))
{
if($row->anzahl>=$gebiet->maxfragen)
{
// maximale Fragenanzahl erreicht
return true;
}
}
}
$maxfragen=1;
}
else
{
$maxfragen = $gebiet->maxfragen;
// Wie viele Fragen gibt es in diesem Gebiet
$qry = "SELECT count(*) as anzahl FROM testtool.tbl_frage WHERE NOT demo AND gebiet_id='".addslashes($gebiet_id)."'";
if($result = pg_query($this->conn, $qry))
{
if($row = pg_fetch_object($result))
{
$fragengesamt = $row->anzahl;
}
}
// Wenn im Gebiet keine Maximalzahl angegeben ist, dann kommen alle Fragen in den Pool
if($maxfragen=='')
{
$maxfragen = $fragengesamt;
}
$level = array();
// Bei Levelgleichverteilung die Anzahl der Fragen pro level ermitteln
if($gebiet->levelgleichverteilung)
{
$qry = "SELECT level, count(*) as anzahl FROM testtool.tbl_frage
WHERE NOT demo AND gebiet_id='".addslashes($gebiet_id)."'
GROUP BY level
ORDER BY level";
if($result = pg_query($this->conn, $qry))
{
while($row = pg_fetch_object($result))
{
$level[$row->level]=round(($row->anzahl/$fragengesamt)*$maxfragen);
}
}
// Von jedem Gebiet muss mindestens eine Frage kommen
foreach ($level as $key=>$row)
{
if($level[$key]==0)
{
$level[$key]=1;
}
}
}
}
pg_query($this->conn, 'BEGIN;');
while($maxfragen>0)
{
//Bei levelgleichverteilung das Level der naechsten Frage holen
if($gebiet->levelgleichverteilung)
{
$nextlevel=$this->getNextFrageLevel($level);
if(isset($level[$nextlevel]))
$level[$nextlevel]=$level[$nextlevel]-1;
}
else
{
$nextlevel=null;
}
$this->frage_id=$this->getNewFrage($gebiet_id, $pruefling_id, $nextlevel);
$this->pruefling_id=$pruefling_id;
//hoechste Nummer holen
$qry = "SELECT
tbl_pruefling_frage.nummer
FROM
testtool.tbl_pruefling_frage JOIN testtool.tbl_frage USING(frage_id)
WHERE
tbl_frage.gebiet_id='".addslashes($gebiet_id)."' AND
tbl_pruefling_frage.pruefling_id='".addslashes($pruefling_id)."'
ORDER BY nummer DESC LIMIT 1;";
if($result = pg_query($this->conn, $qry))
{
if($row = pg_fetch_object($result))
$this->nummer = $row->nummer+1;
else
$this->nummer = 1;
}
else
{
$this->errormsg = 'Fehler beim Generieren des Fragenpools'.$qry;
pg_query($this->conn, 'ROLLBACK');
return false;
}
$this->begintime='';
$this->endtime='';
//PrueflingFrage speichern
if(!$this->save_prueflingfrage(true))
{
pg_query($this->conn, 'ROLLBACK');
return false;
}
$maxfragen--;
}
pg_query($this->conn, 'COMMIT;');
return true;
}
/**
* Laedt eine Prueflingfrage
*
* @param $prueflingfrage_id
* @return true wenn ok, false im Fehlerfall
*/
public function load_prueflingfrage($prueflingfrage_id)
{
if(!is_numeric($prueflingfrage_id) || $prueflingfrage_id=='')
{
$this->errormsg = 'prueflingfrage_id ist ungueltig';
return false;
}
$qry = "SELECT * FROM testtool.tbl_pruefling_frage WHERE prueflingfrage_id='".addslashes($prueflingfrage_id)."'";
if($result = pg_query($this->conn, $qry))
{
if($row = pg_fetch_object($result))
{
$this->prueflingfrage_id = $row->prueflingfrage_id;
$this->pruefling_id = $row->pruefling_id;
$this->frage_id = $row->frage_id;
$this->nummer = $row->nummer;
$this->begintime = $row->begintime;
$this->endtime = $row->endtime;
return true;
}
else
{
$this->errormsg = 'Es wurde keine PrueflingFrage mit der uebergebenen ID gefunden';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der PrueflingFrage';
return false;
}
}
/**
* Laedt eine Prueflingfrage
*
* @param $pruefling_id
* @param $frage_id
* @return true wenn ok, false wenn Fehler oder kein Eintrag vorhanden
*/
public function getPrueflingfrage($pruefling_id, $frage_id)
{
if(!is_numeric($pruefling_id) || $pruefling_id=='')
{
$this->errormsg = 'Pruefling_id ist ungueltig';
return false;
}
if(!is_numeric($frage_id) || $frage_id=='')
{
$this->errormsg = 'Frage_id ist ungueltig';
return false;
}
$qry = "SELECT * FROM testtool.tbl_pruefling_frage WHERE pruefling_id='".addslashes($pruefling_id)."' AND frage_id='".addslashes($frage_id)."'";
if($result = pg_query($this->conn, $qry))
{
if($row = pg_fetch_object($result))
{
$this->prueflingfrage_id = $row->prueflingfrage_id;
$this->pruefling_id = $row->pruefling_id;
$this->frage_id = $row->frage_id;
$this->nummer = $row->nummer;
$this->begintime = $row->begintime;
$this->endtime = $row->endtime;
return true;
}
else
{
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der PrueflingFrage';
return false;
}
}
/**
* Prueft die Daten vor dem Speichern in die Tabelle tbl_pruefling_frage
*
*/
private function validate_prueflingfrage()
{
if(!is_numeric($this->pruefling_id) || $this->pruefling_id=='')
{
$this->errormsg = 'Pruefling_id ist ungueltig';
return false;
}
if(!is_numeric($this->frage_id) || $this->frage_id=='')
{
$this->errormsg = 'Frage_id ist ungueltig';
return false;
}
if(!is_numeric($this->nummer))
{
$this->errormsg = 'Nummer ist ungueltig';
return false;
}
return true;
}
/**
* Speichert einen Eintrag in der Tabelle tbl_pruefling_frage
*
* @param $new
*/
public function save_prueflingfrage($new=null)
{
if(!$this->validate_prueflingfrage())
return false;
if(is_null($new))
$new = $this->new;
if($new)
{
$qry = 'INSERT INTO testtool.tbl_pruefling_frage(pruefling_id, frage_id, nummer, begintime, endtime) VALUES('.
$this->addslashes($this->pruefling_id).','.
$this->addslashes($this->frage_id).','.
$this->addslashes($this->nummer).','.
$this->addslashes($this->begintime).','.
$this->addslashes($this->endtime).');';
}
else
{
$qry = 'UPDATE testtool.tbl_pruefling_frage SET'.
' pruefling_id='.$this->addslashes($this->pruefling_id).','.
' frage_id='.$this->addslashes($this->frage_id).','.
' nummer='.$this->addslashes($this->nummer).','.
' begintime='.$this->addslashes($this->begintime).','.
' endtime='.$this->addslashes($this->endtime).
" WHERE prueflingfrage_id='".addslashes($this->prueflingfrage_id)."'";
}
if(pg_query($this->conn, $qry))
{
return true;
}
else
{
$this->errormsg = 'Fehler beim Speichern in tbl_pruefling_frage';
return false;
}
}
/**
* Sucht eine neue Frage fuer einen Pruefling
*
* @param $gebiet_id
* @param $pruefling_id
* @param $level (nur bei Levelgleichverteilung)
*/
private function getNewFrage($gebiet_id, $pruefling_id, $level=null)
{
$gebiet = new gebiet($this->conn, $gebiet_id);
$pruefling = new pruefling($this->conn);
//Frage suchen die dem pruefling noch nicht zugeordnet ist
$qry = "SELECT frage_id FROM testtool.tbl_frage
WHERE gebiet_id='".addslashes($gebiet_id)."' AND
frage_id NOT IN (SELECT frage_id FROM testtool.tbl_pruefling_frage
WHERE pruefling_id='".addslashes($pruefling_id)."'
)
AND NOT demo";
// Wenn die Frage abhaengig vom level sein soll, dann den aktuellen Level ermitteln und dazuhaengen
if($gebiet->level_start!='')
{
$level2 = $pruefling->getPrueflingLevel($pruefling_id, $gebiet_id);
$qry.=" AND level='".addslashes($level2)."'";
}
// Bei Levelgleichverteilung wird der Level mituebergeben
if(!is_null($level))
{
$qry.=" AND level='".addslashes($level)."'";
}
//Sortierung
if($gebiet->zufallfrage)
$qry .= " ORDER BY random()";
else
$qry .= " ORDER BY nummer ASC";
$qry .= " LIMIT 1";
if($result = pg_query($this->conn, $qry))
{
if($row = pg_fetch_object($result))
{
return $row->frage_id;
}
else
{
$this->errormsg = 'Es gibt keine Fragen die den Kriterien entsprechen';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Holen der Frage';
return false;
}
}
}
?>
+583
View File
@@ -0,0 +1,583 @@
<?php
/* Copyright (C) 2009 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 <[email protected]>,
* Andreas Oesterreicher <[email protected]>,
* Rudolf Hangl <[email protected]> and
* Gerald Simane-Sequens <[email protected]>
*/
/**
* Klasse fuer die Gebiete des Testtools (Reihungstesttool)
*
*/
class gebiet
{
//Tabellenspalten
public $gebiet_id;
public $kurzbz;
public $bezeichnung;
public $beschreibung;
public $zeit;
public $multipleresponse;
public $kategorien;
public $maxfragen;
public $zufallfrage;
public $zufallvorschlag;
public $level_start;
public $level_sprung_auf;
public $level_sprung_ab;
public $levelgleichverteilung;
public $maxpunkte;
public $insertamum;
public $insertvon;
public $updateamum;
public $updatevon;
// ErgebnisArray
public $result=array();
public $errormsg;
public $new;
// *************************************************************************
// * Konstruktor - Uebergibt die Connection und laedt optional ein Gebiet
// * @param $conn Datenbank-Connection
// * $gebiet_id Gebiet das geladen werden soll (default=null)
// * $unicode Gibt an ob die Daten mit UNICODE Codierung
// * oder LATIN9 Codierung verarbeitet werden sollen
// *************************************************************************
public function gebiet($conn, $gebiet_id=null, $unicode=false)
{
$this->conn = $conn;
if($unicode)
$qry = "SET CLIENT_ENCODING TO 'UNICODE';";
else
$qry = "SET CLIENT_ENCODING TO 'LATIN9';";
if(!pg_query($conn,$qry))
{
$this->errormsg = 'Encoding konnte nicht gesetzt werden';
return false;
}
if($gebiet_id != null)
$this->load($gebiet_id);
}
// ***********************************************************
// * Laedt Gebiet mit der uebergebenen ID
// * @param $gebiet_id ID des Gebiets das geladen werden soll
// ***********************************************************
public function load($gebiet_id)
{
$qry = "SELECT * FROM testtool.tbl_gebiet WHERE gebiet_id='".addslashes($gebiet_id)."'";
if($result = pg_query($this->conn, $qry))
{
if($row = pg_fetch_object($result))
{
$this->gebiet_id = $row->gebiet_id;
$this->kurzbz = $row->kurzbz;
$this->bezeichnung = $row->bezeichnung;
$this->beschreibung = $row->beschreibung;
$this->zeit = $row->zeit;
$this->multipleresponse = ($row->multipleresponse=='t'?true:false);
$this->kategorien = ($row->kategorien=='t'?true:false);
$this->maxfragen = $row->maxfragen;
$this->zufallfrage = ($row->zufallfrage=='t'?true:false);
$this->zufallvorschlag = ($row->zufallvorschlag=='t'?true:false);
$this->level_start = $row->level_start;
$this->level_sprung_auf = $row->level_sprung_auf;
$this->level_sprung_ab = $row->level_sprung_ab;
$this->levelgleichverteilung = ($row->levelgleichverteilung=='t'?true:($row->levelgleichverteilung=='f'?false:null));
$this->maxpunkte = $row->maxpunkte;
$this->insertamum = $row->insertamum;
$this->insertvon = $row->insertvon;
$this->updateamum = $row->updateamum;
$this->updatevon = $row->updatevon;
return true;
}
else
{
$this->errormsg = "Kein Eintrag gefunden fuer $gebiet_id";
return false;
}
}
else
{
$this->errormsg = "Fehler beim Laden des Gebiets";
return false;
}
}
// ************************************************
// * wenn $var '' ist wird NULL zurueckgegeben
// * wenn $var !='' ist werden Datenbankkritische
// * Zeichen mit Backslash versehen und das Ergbnis
// * unter Hochkomma gesetzt.
// ************************************************
private function addslashes($var)
{
return ($var!=''?"'".addslashes($var)."'":'null');
}
// *******************************************
// * Prueft die Variablen vor dem Speichern
// * auf Gueltigkeit.
// * @return true wenn ok, false im Fehlerfall
// *******************************************
private function validate()
{
if(strlen($this->kurzbz)>10)
{
$this->errormsg = 'Kurzbz darf nicht laenger als 10 Zeichen sein';
return false;
}
if(strlen($this->bezeichnung)>50)
{
$this->errormsg = 'Bezeichnung darf nicht laenger als 50 Zeichen sein';
return false;
}
if(!is_bool($this->multipleresponse))
{
$this->errormsg = 'Multipleresponse muss ein boolscher Wert sein';
return false;
}
if(!is_bool($this->kategorien))
{
$this->errormsg = 'Kategorien muss ein boolscher Wert sein';
return false;
}
if(!is_numeric($this->maxfragen) && $this->maxfragen!='')
{
$this->errormsg = 'maxfragen muss eine gueltige Zahl sein';
return false;
}
if(!is_bool($this->zufallfrage))
{
$this->errormsg = 'Zufallfrage muss ein boolscher Wert sein';
return false;
}
if(!is_bool($this->zufallvorschlag))
{
$this->errormsg = 'Zufallvorschlag muss ein boolscher Wert sein';
return false;
}
if(!is_bool($this->levelgleichverteilung) && !is_null($this->levelgleichverteilung))
{
$this->errormsg = 'Levelgleichverteilung ist ungueltig';
return false;
}
if(!is_numeric($this->maxpunkte) && $this->maxpunkte!='')
{
$this->errormsg = 'Maxpunkte muss eine gueltige Zahl sein';
return false;
}
return true;
}
// ******************************************************************
// * Speichert das Gebiet in die Datenbank
// * Wenn $new auf true gesetzt ist wird ein neuer Datensatz angelegt
// * ansonsten der Datensatz aktualisiert
// * @return true wenn erfolgreich, false im Fehlerfall
// ******************************************************************
public function save($new=null)
{
if(is_null($new))
$new = $this->new;
//Variablen auf Gueltigkeit pruefen
if(!$this->validate())
return false;
if($new)
{
$qry = 'BEGIN;INSERT INTO testtool.tbl_gebiet (kurzbz, bezeichnung, beschreibung, zeit, multipleresponse,
kategorien, maxfragen, zufallfrage, zufallvorschlag, level_start, level_sprung_auf, level_sprung_ab,
levelgleichverteilung, maxpunkte, insertamum, insertvon , updateamum, updatevon) VALUES('.
$this->addslashes($this->kurzbz).",".
$this->addslashes($this->bezeichnung).",'".
$this->addslashes($this->beschreibung).",'".
$this->addslashes($this->zeit).",".
($this->multipleresponse?'true':'false').",".
$this->addslashes($this->kategorien).",".
$this->addslashes($this->maxfragen).",".
($this->zufallfrage?'true':'false').",'".
($this->zufallvorschlag?'true':'false').",'".
$this->addslashes($this->level_start).",".
$this->addslashes($this->level_sprung_auf).",".
$this->addslashes($this->level_sprung_ab).",".
($this->levelgleichverteilung?'true':($this->levelgleichverteilung==false?'false':'null')).",".
$this->addslashes($this->maxpunkte).",".
$this->addslashes($this->insertamum).",".
$this->addslashes($this->insertvon).
",null, null);";
}
else
{
$qry = 'UPDATE testtool.tbl_gebiet SET'.
' kurzbz='.$this->addslashes($this->kurzbz).','.
' bezeichnung='.$this->addslashes($this->bezeichnung).','.
' beschreibung='.$this->addslashes($this->beschreibung).','.
' zeit='.$this->addslashes($this->zeit).','.
' multipleresponse='.($this->multipleresponse?'true':'false').','.
' kategorien='.($this->kategorien?'true':'false').','.
' maxfragen='.$this->addslashes($this->maxfragen).','.
' zufallfrage='.($this->zufallfrage?'true':'false').','.
' zufallvorschlag='.($this->zufallvorschlag?'true':'false').','.
' level_start='.$this->addslashes($this->level_start).','.
' level_sprung_auf='.$this->addslashes($this->level_sprung_auf).','.
' level_sprung_ab='.$this->addslashes($this->level_sprung_ab).','.
' levelgleichverteilung='.($this->levelgleichverteilung?'true':($this->levelgleichverteilung==false?'false':'null')).','.
' maxpunkte='.$this->addslashes($this->maxpunkte).','.
' updateamum='.$this->addslashes($this->updateamum).','.
' updatevon='.$this->addslashes($this->updatevon).
" WHERE gebiet_id='".addslashes($this->gebiet_id)."';";
}
if(pg_query($this->conn,$qry))
{
//aktuelle ID aus der Sequence holen
if($new)
{
$qry='SELECT currval("testtool.tbl_gebiet_gebiet_id_seq") as id;';
if($result = pg_query($this->conn, $qry))
{
if($row = pg_fetch_object($result))
{
$this->gebiet_id = $row->id;
pg_query($this->conn, 'COMMIT');
return true;
}
else
{
$this->errormsg = 'Fehler beim Lesen der Sequence';
pg_query($this->conn, 'ROLLBACK;');
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Lesen der Sequence';
pg_query($this->conn, 'ROLLBACK');
return false;
}
}
else
return true;
}
else
{
$this->errormsg = 'Fehler beim Speichern der Frage:'.$qry;
return false;
}
}
/**
* prueft das Gebiet auf Gueltigkeit
* (diverse Plausichecks)
*
* @param $gebiet_id
*/
function check_gebiet($gebiet_id)
{
$this->errormsg = '';
$this->load($gebiet_id);
//wenn levels verwendet werden muss maxfragen gesetzt sein
if($this->level_start!='' && $this->maxfragen=='')
{
$this->errormsg .= "Wenn Levels verwendet werden, muss die maximale Fragenanzahl gesetzt sein.\n";
}
//Levelgleichverteilung gibt es nur bei nicht geleveltem ablauf
if($this->level_start!='' && $this->levelgleichverteilung)
{
$this->errormsg .= "Levelgleichverteilung ist nur dann erlaubt, wenn der Ablauf nicht gelevelt ist.\n";
}
//Von jedem level muessen mindestens maxfragen vorhanden sein wenn levels aktiv ist
if($this->level_start!='')
{
$qry = "SELECT count(*) as anzahl, level FROM testtool.tbl_frage WHERE gebiet_id='".addslashes($gebiet_id)."' GROUP BY level";
if($result = pg_query($this->conn, $qry))
{
while($row = pg_fetch_object($result))
{
if($row->anzahl<$this->maxfragen)
{
$this->errormsg .= "Es gibt nur $row->anzahl Fragen fuer das Level $row->level. Es muessen aber mindestens $this->maxfragen angelegt werden.\n";
}
}
}
}
//Pruefen ob jede Fragen mindestens 2 Vorschlaege hat
$qry = "SELECT frage_id, nummer FROM testtool.tbl_frage
WHERE (SELECT count(*) as anzahl FROM testtool.tbl_vorschlag WHERE frage_id=tbl_frage.frage_id)<2
AND gebiet_id='".addslashes($gebiet_id)."' AND NOT demo;";
if($result = pg_query($this->conn, $qry))
{
while($row = pg_fetch_object($result))
{
$this->errormsg .= "Frage Nummer $row->nummer (ID: $row->frage_id) hat weniger als 2 Vorschlaege.\n";
}
}
//Wenn Levels verwendet werden, muessen mindestens 2 Verschiedene Level vorhanden sein
if($this->level_start!='')
{
$qry = "SELECT level FROM testtool.tbl_frage WHERE gebiet_id='".addslashes($gebiet_id)."' AND level is not null GROUP by level";
if($result = pg_query($this->conn, $qry))
{
if(pg_num_rows($result)<2)
{
$this->errormsg .= "Wenn Levels verwendet werden, muessen mindestens 2 verschiedene Level vorhanden sein.\n";
}
}
}
// Wenn Levelgleichverteilung true ist, muss maxfragen mindestens so gross wie die Anzahl der level sein
if($this->levelgleichverteilung)
{
if($this->maxfragen!='' && $this->maxfragen!=0)
{
$qry = "SELECT count(*) as anzahl FROM testtool.tbl_frage WHERE gebiet_id='".addslashes($gebiet_id)."' AND not demo AND level is not null GROUP BY level";
if($result = pg_query($this->conn, $qry))
{
if($row = pg_fetch_object($result))
{
if($row->anzahl>$this->maxfragen)
{
$this->errormsg .= "Wenn Levelgleichverteilung gesetzt ist, muss maxfragen groesser als die Anzahl der verwendeten Levels sein\n";
}
}
}
}
}
// Wenn zufallsfrage=true und level_start!='' oder levelgleichverteilung
// dann darf die punkteanzahl pro level/Frage sich nicht unterscheiden
if($this->zufallfrage && ($this->level_start!='' || $this->levelgleichverteilung))
{
$qry = "SELECT * FROM (
SELECT level, count(*) as anzahl FROM (
SELECT level, punkte, count(*) as anzahl FROM (
SELECT level, sum(punkte) as punkte
FROM testtool.tbl_frage JOIN testtool.tbl_vorschlag USING(frage_id)
WHERE punkte>0 AND not demo AND gebiet_id='".addslashes($gebiet_id)."'
GROUP BY frage_id, level) as a
GROUP BY level, punkte ) as b
GROUP BY level) as c
WHERE c.anzahl>1";
if($result = pg_query($this->conn, $qry))
{
while($row = pg_fetch_object($result))
{
$this->errormsg .= "Pro Level/Frage darf die positive Punkteanzahl nicht unterschiedlich sein wenn Zufallsfragen und Levels/Levelgleichverteilung verwendet wird. (Unterschiede in Level $row->level)\n";
}
}
}
// kein Multipleresponse bei gelevelten Gebieten
if($this->level_start!='' && $this->level_start!=0 && $this->multipleresponse)
{
$this->errormsg .= "Bei gelevelten Gebieten ist Multipleresponse nicht erlaubt\n";
}
// maxpunkte muss eingetragen sein
if($this->maxpunkte=='' || $this->maxpunkte==0)
{
$this->errormsg = "Es wurden keine Maximalpunkte fuer dieses Gebiet eingetragen\n";
}
if($this->errormsg=='')
return true;
else
return false;
}
/**
* Holt alle Gebiete aus der DB
*
* @return true wenn ok, false wenn Fehler
*/
public function getAll()
{
$qry = 'SELECT * FROM testtool.tbl_gebiet ORDER BY bezeichnung';
if($result = pg_query($this->conn, $qry))
{
while($row = pg_fetch_object($result))
{
$obj = new gebiet($this->conn, null, null);
$obj->gebiet_id = $row->gebiet_id;
$obj->kurzbz = $row->kurzbz;
$obj->bezeichnung = $row->bezeichnung;
$obj->beschreibung = $row->beschreibung;
$obj->zeit = $row->zeit;
$obj->multipleresponse = ($row->multipleresponse=='t'?true:false);
$obj->kategorien = ($row->kategorien=='t'?true:false);
$obj->maxfragen = $row->maxfragen;
$obj->zufallfrage = ($row->zufallfrage=='t'?true:false);
$obj->zufallvorschlag = ($row->zufallvorschlag=='t'?true:false);
$obj->levelgleichverteilung = ($row->levelgleichverteilung=='t'?true:false);
$obj->maxpunkte = $row->maxpunkte;
$obj->level_start = $row->level_start;
$obj->level_sprung_ab = $row->level_sprung_ab;
$obj->level_sprung_auf = $row->level_sprung_auf;
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->updateamum = $row->updateamum;
$obj->updatevon = $row->updatevon;
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg = 'Fehler in Fkt getAll()';
return false;
}
}
/**
* Berechnet die maxpunkte fuer das Gebiet
*
* @param $gebiet_id
*/
public function berechneMaximalpunkte($gebiet_id)
{
if(!$this->load($gebiet_id))
return false;
if(!$this->levelgleichverteilung && ($this->level_start=='' || $this->level_start==0))
{
$qry = "SELECT sum(punkte) as max
FROM testtool.tbl_vorschlag JOIN testtool.tbl_frage USING(frage_id)
WHERE gebiet_id='".addslashes($gebiet_id)."' AND punkte>0 AND NOT demo";
if($this->maxfragen!='' && $this->maxfragen>0)
$qry.=" LIMIT $maxfragen";
}
elseif($this->levelgleichverteilung && !$this->multipleresponse)
{
//Levelgleichverteilung mit singleresponse
$qry = "SELECT sum(punkteprolevel) as max FROM
(
SELECT round((anz::decimal/fragengesamt::decimal)*$this->maxfragen*punkte) as punkteprolevel
FROM
(
SELECT
level, punkte, count(*) as anz,
(SELECT count(*) FROM testtool.tbl_frage
WHERE gebiet_id='".addslashes($gebiet_id)."') as fragengesamt
FROM
testtool.tbl_frage
JOIN testtool.tbl_vorschlag USING(frage_id)
WHERE
gebiet_id='".addslashes($gebiet_id)."'
AND NOT demo
GROUP BY level, punkte
) a
) b";
}
elseif($this->levelgleichverteilung && $this->multipleresponse)
{
//Levelgleichverteilung mit multipleresponse
$qry = "SELECT sum(punkteprolevel) as max FROM
(
SELECT round((anz::decimal/fragengesamt::decimal)*$this->maxfragen*punkte) as punkteprolevel
FROM
(
SELECT
level, punkte, count(*) as anz,
(SELECT count(*) FROM testtool.tbl_frage
WHERE gebiet_id='".addslashes($gebiet_id)."') as fragengesamt
FROM
testtool.tbl_frage
JOIN testtool.tbl_vorschlag USING(frage_id)
WHERE
gebiet_id='".addslashes($gebiet_id)."'
AND NOT demo
GROUP BY level, punkte
) a
) b";
}
elseif($this->level_start!='')
{
//Maximalpunkte fuer geleveltes Gebiet ermitteln
//Punkte pro Level holen
$qry = "
SELECT level, punkte
FROM
(
SELECT level, frage_id, sum(punkte) as punkte
FROM testtool.tbl_frage JOIN testtool.tbl_vorschlag USING(frage_id)
WHERE gebiet_id=22 AND punkte>0 AND level>=2 AND NOT demo
GROUP BY level, frage_id
) as a
GROUP by level, punkte";
if($result = pg_query($this->conn, $qry))
{
$maxfragen = $this->maxfragen;
$maxpunkte = 0;
$lastpunkte=0;
//Punkte mit der Anzahl der Mindestfragen fuer dieses Level multiplizieren
while($row = pg_fetch_object($result))
{
if($maxfragen>0)
{
$maxpunkte += $row->punkte*$this->level_sprung_auf;
$lastpunkte = $row->punkte;
$maxfragen -=$this->level_sprung_auf;
}
}
// zuletzt die verbleibenden Fragen mit der Punkteanzahl der letzten (schwersten) Fragen multiplizieren
$maxpunkte += $lastpunkte*$maxfragen;
return $maxpunkte;
}
}
if($result = pg_query($this->conn, $qry))
{
if($row = pg_fetch_object($result))
{
return $row->max;
}
else
{
$this->errormsg = 'Fehler beim Ermitteln der Maximalpunkte';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Ermitteln der Maximalpunkte';
return false;
}
}
}
?>
+35 -6
View File
@@ -39,7 +39,9 @@ class prestudent extends person
var $anmeldungreihungstest;
var $reihungstestangetreten;
var $reihungstest_id;
var $punkte;
var $punkte; //rt_gesamtpunkte
var $rt_punkte1;
var $rt_punkte2;
var $bismelden;
var $anmerkung;
var $ext_id_prestudent;
@@ -118,7 +120,9 @@ class prestudent extends person
$this->anmeldungreihungstest = $row->anmeldungreihungstest;
$this->reihungstestangetreten = ($row->reihungstestangetreten=='t'?true:false);
$this->reihungstest_id = $row->reihungstest_id;
$this->punkte = $row->punkte;
$this->punkte = $row->rt_gesamtpunkte;
$this->rt_punkte1 = $row->rt_punkte1;
$this->rt_punkte2 = $row->rt_punkte2;
$this->bismelden = ($row->bismelden=='t'?true:false);
$this->person_id = $row->person_id;
$this->anmerkung = $row->anmerkung;
@@ -150,6 +154,21 @@ class prestudent extends person
// *******************************************
function validate()
{
if($this->punkte>9999.9999)
{
$this->errormsg = 'Reihungstestgesamtpunkte darf nicht groesser als 9999.9999 sein';
return false;
}
if($this->rt_punkte1>9999.9999)
{
$this->errormsg = 'Reihungstestpunkte1 darf nicht groesser als 9999.9999 sein';
return false;
}
if($this->rt_punkte2>9999.9999)
{
$this->errormsg = 'Reihungstestpunkte2 darf nicht groesser als 9999.9999 sein';
return false;
}
return true;
}
@@ -171,7 +190,7 @@ class prestudent extends person
if($this->new) //Wenn new true ist dann ein INSERT absetzen ansonsten ein UPDATE
{
$qry = 'BEGIN;INSERT INTO public.tbl_prestudent (aufmerksamdurch_kurzbz, person_id, studiengang_kz, berufstaetigkeit_code, ausbildungcode, zgv_code, zgvort, zgvdatum, zgvmas_code, zgvmaort, zgvmadatum, aufnahmeschluessel, facheinschlberuf, reihungstest_id, anmeldungreihungstest, reihungstestangetreten, punkte, bismelden, insertamum, insertvon, updateamum, updatevon, ext_id, anmerkung, dual) VALUES('.
$qry = 'BEGIN;INSERT INTO public.tbl_prestudent (aufmerksamdurch_kurzbz, person_id, studiengang_kz, berufstaetigkeit_code, ausbildungcode, zgv_code, zgvort, zgvdatum, zgvmas_code, zgvmaort, zgvmadatum, aufnahmeschluessel, facheinschlberuf, reihungstest_id, anmeldungreihungstest, reihungstestangetreten, rt_gesamtpunkte, rt_punkte1, rt_punkte2, bismelden, insertamum, insertvon, updateamum, updatevon, ext_id, anmerkung, dual) VALUES('.
$this->addslashes($this->aufmerksamdurch_kurzbz).",".
$this->addslashes($this->person_id).",".
$this->addslashes($this->studiengang_kz).",".
@@ -189,6 +208,8 @@ class prestudent extends person
$this->addslashes($this->anmeldungreihungstest).",".
($this->reihungstestangetreten?'true':'false').",".
$this->addslashes($this->punkte).",".
$this->addslashes($this->rt_punkte1).",".
$this->addslashes($this->rt_punkte2).",".
($this->bismelden?'true':'false').",".
$this->addslashes($this->insertamum).",".
$this->addslashes($this->insertvon).",".
@@ -217,7 +238,9 @@ class prestudent extends person
' reihungstest_id='.$this->addslashes($this->reihungstest_id).",".
' anmeldungreihungstest='.$this->addslashes($this->anmeldungreihungstest).",".
' reihungstestangetreten='.($this->reihungstestangetreten?'true':'false').",".
' punkte='.$this->addslashes($this->punkte).",".
' rt_gesamtpunkte='.$this->addslashes($this->punkte).",".
' rt_punkte1='.$this->addslashes($this->rt_punkte1).",".
' rt_punkte2='.$this->addslashes($this->rt_punkte2).",".
' bismelden='.($this->bismelden?'true':'false').",".
' updateamum='.$this->addslashes($this->updateamum).",".
' updatevon='.$this->addslashes($this->updatevon).",".
@@ -329,6 +352,8 @@ class prestudent extends person
$ps->anmeldungreihungstest = $row->anmeldungreihungstest;
$ps->reihungstestangetreten = $row->reihungstestangetreten;
$ps->punkte = $row->punkte;
$ps->rt_punkte1 = $row->rt_punkte1;
$ps->rt_punkte2 = $row->rt_punkte2;
$ps->bismelden = $row->bismelden;
$ps->rt_studiengang_kz = $row->rt_studiengang_kz;
$ps->rt_ort = $row->rt_ort;
@@ -551,7 +576,9 @@ class prestudent extends person
$ps->anmeldungreihungstest = $row->anmeldungreihungstest;
$ps->reihungstestangetreten = ($row->reihungstestangetreten=='t'?true:false);
$ps->reihungstest_id = $row->reihungstest_id;
$ps->punkte = $row->punkte;
$ps->punkte = $row->rt_gesamtpunkte;
$ps->rt_punkte1 = $row->rt_punkte1;
$ps->rt_punkte2 = $row->rt_punkte2;
$ps->bismelden = ($row->bismelden=='t'?true:false);
$ps->anmerkung = $row->anmerkung;
$ps->dual = ($row->dual=='t'?true:false);
@@ -835,7 +862,9 @@ class prestudent extends person
$obj->anmeldungreihungstest = $row->anmeldungreihungstest;
$obj->reihungstestangetreten = ($row->reihungstestangetreten=='t'?true:false);
$obj->reihungstest_id = $row->reihungstest_id;
$obj->punkte = $row->punkte;
$obj->punkte = $row->rt_gesamtpunkte;
$obj->rt_punkte1 = $row->rt_punkte1;
$obj->rt_punkte2 = $row->rt_punkte2;
$obj->bismelden = ($row->bismelden=='t'?true:false);
$obj->person_id = $row->person_id;
$obj->anmerkung = $row->anmerkung;
+141 -10
View File
@@ -28,8 +28,8 @@ class pruefling
var $idnachweis;
var $registriert;
var $prestudent_id;
var $gruppe_kurzbz;
var $semester;
// ErgebnisArray
var $result=array();
var $num_rows=0;
@@ -79,7 +79,7 @@ class pruefling
$this->idnachweis = $row->idnachweis;
$this->registriert = $row->registriert;
$this->prestudent_id = $row->prestudent_id;
$this->gruppe_kurzbz = $row->gruppe_kurzbz;
$this->semester = $row->semester;
return true;
}
else
@@ -130,12 +130,12 @@ class pruefling
if($this->new) //Wenn new true ist dann ein INSERT absetzen ansonsten ein UPDATE
{
$qry = 'BEGIN;INSERT INTO testtool.tbl_pruefling (studiengang_kz, idnachweis, registriert, prestudent_id, gruppe_kurzbz) VALUES('.
$qry = 'BEGIN;INSERT INTO testtool.tbl_pruefling (studiengang_kz, idnachweis, registriert, prestudent_id, semester) VALUES('.
$this->addslashes($this->studiengang_kz).",".
$this->addslashes($this->idnachweis).",".
$this->addslashes($this->registriert).",".
$this->addslashes($this->prestudent_id).",".
$this->addslashes($this->gruppe_kurzbz).");";
$this->addslashes($this->semester).");";
}
else
{
@@ -143,8 +143,8 @@ class pruefling
' studiengang_kz='.$this->addslashes($this->studiengang_kz).','.
' idnachweis='.$this->addslashes($this->idnachweis).','.
' registriert='.$this->addslashes($this->registriert).','.
' prestudent_id='.$this->addslashes($this->prestudent_id).','.
' gruppe_kurzbz='.$this->addslashes($this->gruppe_kurzbz).
' semester='.$this->addslashes($this->semester).','.
' prestudent_id='.$this->addslashes($this->prestudent_id).
" WHERE pruefling_id='".addslashes($this->pruefling_id)."';";
}
@@ -164,14 +164,14 @@ class pruefling
else
{
pg_query($this->conn, 'ROLLBACK;');
$this->errormsg = 'Fehler beim lesen der Sequence';
$this->errormsg = 'Fehler beim Lesen der Sequence';
return false;
}
}
else
{
pg_query($this->conn, 'ROLLBACK;');
$this->errormsg = 'Fehler beim lesen der Sequence';
$this->errormsg = 'Fehler beim Lesen der Sequence';
return false;
}
}
@@ -200,7 +200,7 @@ class pruefling
$this->idnachweis = $row->idnachweis;
$this->registriert = $row->registriert;
$this->prestudent_id = $row->prestudent_id;
$this->gruppe_kurzbz = $row->gruppe_kurzbz;
$this->semester = $row->semester;
return true;
}
else
@@ -215,5 +215,136 @@ class pruefling
return false;
}
}
/**
* Ermittelt den aktuellen Level (schwierigkeitsgrad der Frage)
* des Prueflings fuer das uebergebene Gebiet
*
* @param $pruefling_id
* @param $gebiet_id
*/
function getPrueflingLevel($pruefling_id, $gebiet_id)
{
$gebiet = new gebiet($this->conn, $gebiet_id);
//wenn Levelsystem fuer dieses Gebiet aktiviert ist
if($gebiet->level_start!='')
{
//Maximal und Minimal Level fuer dieses Gebiet ermitteln
$max_level = 0;
$min_level = 0;
$qry = "SELECT max(level) as max, min(level) as min FROM testtool.tbl_frage WHERE gebiet_id='".addslashes($gebiet_id)."'";
if($result = pg_query($this->conn, $qry))
{
if($row = pg_fetch_object($result))
{
$max_level = $row->max;
$min_level = $row->min;
}
else
{
$this->errormsg = 'unbekannter Fehler in getPrueflingLevel';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Ermitteln des Pruefling-Levels';
return false;
}
//alle bisherigen Antworten fuer dieses Gebiet holen
$qry = "SELECT
tbl_vorschlag.punkte
FROM
testtool.tbl_pruefling_frage
JOIN testtool.tbl_vorschlag USING(frage_id)
JOIN testtool.tbl_antwort USING(vorschlag_id)
JOIN testtool.tbl_frage USING(frage_id)
WHERE
tbl_frage.gebiet_id='".addslashes($gebiet_id)."' AND
tbl_pruefling_frage.pruefling_id='".addslashes($pruefling_id)."' AND
tbl_antwort.pruefling_id = tbl_pruefling_frage.pruefling_id
ORDER BY tbl_pruefling_frage.nummer ASC";
$aktueller_level=$gebiet->level_start;
$anzahl_richtig=0;
$anzahl_falsch=0;
if($result = pg_query($this->conn, $qry))
{
while($row = pg_fetch_object($result))
{
if($row->punkte>0)
{
//wenn die Frage richtig beantwortet wurde dann richtig-zaehler erhoehen
$anzahl_richtig++;
$anzahl_falsch=0;
}
else
{
//wenn die Frage falsch beantwortet wurde dann falsch-zaehler erhoehen
$anzahl_richtig=0;
$anzahl_falsch++;
}
//wenn einer der Zaehler das Sprunglevel erreicht hat, dann
//in ein anderes Level springen
if($anzahl_richtig==$gebiet->level_sprung_auf)
{
$aktueller_level++;
$anzahl_richtig=0;
$anzahl_falsch=0;
}
elseif($anzahl_falsch==$gebiet->level_sprung_ab)
{
$aktueller_level--;
$anzahl_richtig=0;
$anzahl_falsch=0;
}
//aktueller level darf nicht kleiner/groesser als der minimal/maximal Level sein
if($aktueller_level<$min_level)
$aktueller_level=$min_level;
if($aktueller_level>$max_level)
$aktueller_level=$max_level;
}
return $aktueller_level;
}
}
else
return -1;
}
/**
* Berechnet das Reihungstestergebnis fuer einen Prestudenten
*
* @param $prestudent_id
* @return Endpunkte des Reihungstests
*/
function getReihungstestErgebnis($prestudent_id)
{
$qry = "SELECT * FROM testtool.vw_auswertung
WHERE prestudent_id='".addslashes($prestudent_id)."'";
$ergebnis=0;
if($result = pg_query($this->conn, $qry))
{
while($row = pg_fetch_object($result))
{
//wenn maxpunkte ueberschritten wurde -> 100%
if($row->punkte>=$row->maxpunkte)
$prozent=100;
else
$prozent = ($row->punkte/$row->maxpunkte)*100;
$ergebnis+=$prozent*$row->gewicht;
}
return $ergebnis;
}
}
}
?>
+6
View File
@@ -49,6 +49,8 @@ class studiengang
var $ext_id; // bigint
var $orgform_kurzbz;
var $zusatzinfo_html;
var $sprache;
var $testtool_sprachwahl;
var $kuerzel; // = typ + kurzbz (Bsp: BBE)
@@ -126,6 +128,8 @@ class studiengang
$this->kuerzel = strtoupper($row->typ.$row->kurzbz);
$this->orgform_kurzbz = $row->orgform_kurzbz;
$this->zusatzinfo_html = $row->zusatzinfo_html;
$this->sprache = $row->sprache;
$this->testtool_sprachwahl = $row->testtool_sprachwahl;
$this->telefon=$row->telefon;
$this->titelbescheidvom=$row->titelbescheidvom;
@@ -185,6 +189,8 @@ class studiengang
$stg_obj->kuerzel = strtoupper($row->typ.$row->kurzbz);
$stg_obj->orgform_kurzbz = $row->orgform_kurzbz;
$stg_obj->zusatzinfo_html = $row->zusatzinfo_html;
$stg_obj->sprache = $row->sprache;
$stg_obj->testtool_sprachwahl = $row->testtool_sprachwahl;
$stg_obj->telefon=$row->telefon;
$stg_obj->titelbescheidvom=$row->titelbescheidvom;
+161 -26
View File
@@ -26,10 +26,17 @@ class vorschlag
var $vorschlag_id;
var $frage_id;
var $nummer;
var $antwort;
var $punkte;
var $text;
var $bild;
var $audio;
var $insertamum;
var $insertvon;
var $updateamum;
var $updatevon;
// ErgebnisArray
var $result=array();
var $num_rows=0;
@@ -66,7 +73,7 @@ class vorschlag
// * Laedt Vorschlag mit der uebergebenen ID
// * @param $vorschlag_id ID des Vorschlages der geladen werden soll
// ***********************************************************
function load($vorschlag_id)
function load($vorschlag_id, $sprache='German')
{
$qry = "SELECT * FROM testtool.tbl_vorschlag WHERE vorschlag_id='".addslashes($vorschlag_id)."'";
@@ -76,24 +83,38 @@ class vorschlag
{
$this->vorschlag_id = $row->vorschlag_id;
$this->frage_id = $row->frage_id;
$this->antwort = $row->antwort;
$this->punkte = $row->punkte;
$this->nummer = $row->nummer;
$this->text = $row->text;
$this->bild = $row->bild;
$this->loadVorschlagSprache($vorschlag_id, $sprache);
return true;
}
else
{
$this->errormsg = "Kein Eintrag gefunden fuer $vorschlag_id";
$this->errormsg = "Kein Eintrag gefunden fuer $vorschlag_id $sprache";
return false;
}
}
else
{
$this->errormsg = "Fehler beim laden: $qry";
$this->errormsg = "Fehler beim Laden: $qry";
return false;
}
}
function loadVorschlagSprache($vorschlag_id, $sprache)
{
$qry = "SELECT * FROM testtool.tbl_vorschlag_sprache
WHERE vorschlag_id='".addslashes($vorschlag_id)."' AND sprache='".addslashes($sprache)."'";
if($result_sprache = pg_query($this->conn, $qry))
{
if($row_sprache = pg_fetch_object($result_sprache))
{
$this->text = $row_sprache->text;
$this->bild = $row_sprache->bild;
$this->audio = $row_sprache->audio;
}
}
}
// ************************************************
// * wenn $var '' ist wird NULL zurueckgegeben
@@ -130,29 +151,57 @@ class vorschlag
if($this->new) //Wenn new true ist dann ein INSERT absetzen ansonsten ein UPDATE
{
$qry = 'INSERT INTO testtool.tbl_vorschlag (frage_id, nummer, antwort, text, bild) VALUES('.
"'".addslashes($this->frage_id)."',".
$this->addslashes($this->nummer).",".
$this->addslashes($this->antwort).",'".
$this->text."',".
$this->addslashes($this->bild).");";
$qry = 'BEGIN;INSERT INTO testtool.tbl_vorschlag (frage_id, nummer, punkte, insertamum, insertvon, updateamum, updatevon) VALUES('.
$this->addslashes($this->frage_id).','.
$this->addslashes($this->nummer).','.
$this->addslashes($this->punkte).','.
$this->addslashes($this->insertamum).','.
$this->addslashes($this->insertvon).','.
$this->addslashes($this->updateamum).','.
$this->addslashes($this->updatevon).');';
}
else
{
$qry = 'UPDATE testtool.tbl_vorschlag SET'.
' frage_id='.$this->addslashes($this->frage_id).','.
' nummer='.$this->addslashes($this->nummer).','.
' antwort='.$this->addslashes($this->antwort).','.
" text='".$this->text."'";
if($this->bild!='')
$qry.=' , bild='.$this->addslashes($this->bild);
$qry.=" WHERE vorschlag_id='".addslashes($this->vorschlag_id)."';";
' punkte='.$this->addslashes($this->punkte).','.
' updateamum='.$this->addslashes($this->updateamum).','.
' updatevon='.$this->addslashes($this->updatevon).
" WHERE vorschlag_id='".addslashes($this->vorschlag_id)."';";
}
if(pg_query($this->conn,$qry))
{
//Log schreiben
return true;
if($this->new)
{
$qry = "SELECT currval('testtool.tbl_vorschlag_vorschlag_id_seq') as id";
if($result = pg_query($this->conn, $qry))
{
if($row = pg_fetch_object($result))
{
$this->vorschlag_id = $row->id;
pg_query($this->conn, 'COMMIT;');
return true;
}
else
{
$this->errormsg = 'Fehler beim Auslesen der Sequence';
pg_query($this->conn, 'ROLLBACK');
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Auslesen der Sequence';
pg_query($this->conn, 'ROLLBACK');
return false;
}
}
else
{
return true;
}
}
else
{
@@ -161,9 +210,84 @@ class vorschlag
}
}
function getVorschlag($frage_id)
/**
* Pueft die Daten vor dem Speichern
*
* @return true wenn ok, false wenn Fehler
*/
function validate_vorschlagsprache()
{
$qry = "SELECT * FROM testtool.tbl_vorschlag WHERE frage_id='".addslashes($frage_id)."' ORDER BY nummer";
return true;
}
/**
* Speichert einen Eintrag in tbl_vorschlag_sprache
*
* @return true wenn ok, false wenn Fehler
*/
function save_vorschlagsprache()
{
//Variablen auf Gueltigkeit pruefen
if(!$this->validate_vorschlagsprache())
return false;
$qry = "SELECT * FROM testtool.tbl_vorschlag_sprache
WHERE vorschlag_id='".addslashes($this->vorschlag_id)."' AND
sprache='".addslashes($this->sprache)."'";
if($result = pg_query($this->conn, $qry))
{
if(pg_num_rows($result)>0)
$this->new=false;
else
$this->new=true;
}
if($this->new) //Wenn new true ist dann ein INSERT absetzen ansonsten ein UPDATE
{
$qry = 'INSERT INTO testtool.tbl_vorschlag_sprache (vorschlag_id, sprache, text, bild, audio,
insertamum, insertvon, updateamum, updatevon) VALUES('.
$this->addslashes($this->vorschlag_id).','.
$this->addslashes($this->sprache).','.
$this->addslashes($this->text).','.
$this->addslashes($this->bild).','.
$this->addslashes($this->audio).','.
$this->addslashes($this->insertamum).','.
$this->addslashes($this->insertvon).','.
$this->addslashes($this->updateamum).','.
$this->addslashes($this->updatevon).');';
}
else
{
$qry = 'UPDATE testtool.tbl_vorschlag_sprache SET'.
' text='.$this->addslashes($this->text).',';
if($this->bild!='')
$qry.=' bild='.$this->addslashes($this->bild).',';
if($this->audio!='')
$qry.=' audio='.$this->addslashes($this->audio).',';
$qry.= ' updateamum='.$this->addslashes($this->updateamum).','.
' updatevon='.$this->addslashes($this->updatevon).
" WHERE vorschlag_id='".addslashes($this->vorschlag_id)."' AND sprache='".addslashes($this->sprache)."';";
}
if($result = pg_query($this->conn, $qry))
{
return true;
}
else
{
$this->errormsg = 'Fehler beim Speichern der Daten';
return false;
}
}
function getVorschlag($frage_id, $sprache, $random)
{
$qry = "SELECT * FROM testtool.tbl_vorschlag WHERE frage_id='".addslashes($frage_id)."'";
if($random)
$qry.=" ORDER BY random()";
else
$qry.=" ORDER BY nummer";
if($result = pg_query($this->conn, $qry))
{
@@ -173,9 +297,19 @@ class vorschlag
$vs->vorschlag_id = $row->vorschlag_id;
$vs->frage_id = $row->frage_id;
$vs->nummer = $row->nummer;
$vs->antwort = $row->antwort;
$vs->text = $row->text;
$vs->bild = $row->bild;
$vs->punkte = $row->punkte;
$qry = "SELECT * FROM testtool.tbl_vorschlag_sprache
WHERE vorschlag_id='".addslashes($row->vorschlag_id)."' AND sprache='".addslashes($sprache)."'";
if($result_sprache = pg_query($this->conn, $qry))
{
if($row_sprache = pg_fetch_object($result_sprache))
{
$vs->text = $row_sprache->text;
$vs->bild = $row_sprache->bild;
$vs->audio = $row_sprache->audio;
}
}
$this->result[] = $vs;
@@ -188,6 +322,7 @@ class vorschlag
return false;
}
}
function delete($vorschlag_id)
{
$qry = "DELETE FROM testtool.tbl_vorschlag WHERE vorschlag_id='".addslashes($vorschlag_id)."'";
+7
View File
@@ -126,6 +126,12 @@ function draw_row($row)
}
$mitarbeiter = '('.$mitarbeiter.')';
$anzahl_studenten=0;
$qry = "SELECT count(*) as anz FROM campus.vw_student_lehrveranstaltung WHERE lehreinheit_id='".addslashes($row->lehreinheit_id)."'";
if($result_std = pg_query($conn, $qry))
if($row_std = pg_fetch_object($result_std))
$anzahl_studenten = $row_std->anz;
$lehrfach = new lehrfach($conn, null, true);
$lehrfach->load($row->lehrfach_id);
@@ -148,6 +154,7 @@ function draw_row($row)
<LEHREINHEIT:unr><![CDATA['.$row->unr.']]></LEHREINHEIT:unr>
<LEHREINHEIT:lvnr><![CDATA['.$row->lvnr.']]></LEHREINHEIT:lvnr>
<LEHREINHEIT:bezeichnung><![CDATA['.$lehrfach->kurzbz.'-'.$row->lehrform_kurzbz.' '.$lehrfach->bezeichnung.' '.$grp.' '.$mitarbeiter.']]></LEHREINHEIT:bezeichnung>
<LEHREINHEIT:anzahl_studenten><![CDATA['.$anzahl_studenten.']]></LEHREINHEIT:anzahl_studenten>
</RDF:Description>
</RDF:li>
';
+1 -1
View File
@@ -250,7 +250,7 @@ if(!$result = pg_query($conn, $qry))
if($result_fb = pg_query($conn, $qry))
if($row_fb = pg_fetch_object($result_fb))
$fachbereich = $row_fb->bezeichnung;
echo "
<RDF:Description id=\"".$row_le->lehreinheit_id."\" about=\"".$rdf_url.'/'.$row_lva->lehrveranstaltung_id."/$row_le->lehreinheit_id\" >
<LVA:lehrveranstaltung_id>".$row_lva->lehrveranstaltung_id."</LVA:lehrveranstaltung_id>
+3 -1
View File
@@ -279,6 +279,8 @@ function draw_prestudent($row)
<STUDENT:anmeldungreihungstest_iso><![CDATA['.$row->anmeldungreihungstest.']]></STUDENT:anmeldungreihungstest_iso>
<STUDENT:reihungstestangetreten><![CDATA['.($row->reihungstestangetreten?'true':'false').']]></STUDENT:reihungstestangetreten>
<STUDENT:punkte><![CDATA['.$row->punkte.']]></STUDENT:punkte>
<STUDENT:punkte1><![CDATA['.$row->rt_punkte1.']]></STUDENT:punkte1>
<STUDENT:punkte2><![CDATA['.$row->rt_punkte2.']]></STUDENT:punkte2>
<STUDENT:bismelden><![CDATA['.($row->bismelden?'true':'false').']]></STUDENT:bismelden>
<STUDENT:dual><![CDATA['.($row->dual?'true':'false').']]></STUDENT:dual>
<STUDENT:dual_bezeichnung><![CDATA['.($row->dual?'Ja':'Nein').']]></STUDENT:dual_bezeichnung>
@@ -400,7 +402,7 @@ if($xmlformat=='rdf')
LIMIT 1
)
AS email_privat,
(SELECT punkte FROM public.tbl_prestudent WHERE prestudent_id=tbl_student.prestudent_id) as punkte, tbl_prestudent.dual as dual
(SELECT rt_gesamtpunkte as punkte FROM public.tbl_prestudent WHERE prestudent_id=tbl_student.prestudent_id) as punkte, tbl_prestudent.dual as dual
FROM public.tbl_student
JOIN public.tbl_benutzer ON (student_uid=uid) JOIN public.tbl_person p USING (person_id) JOIN public.tbl_prestudent USING(prestudent_id) ";
if($gruppe_kurzbz!=null)
Binary file not shown.

After

Width:  |  Height:  |  Size: 749 B

+62 -2
View File
@@ -31,9 +31,10 @@ hr
color:#CCCCCC;
height:1px;
}
@media screen {
#menue
{
top:80px;
top:8%;
width:19%;
height:80%;
z-index:1000;
@@ -55,7 +56,40 @@ html>body #content
{
position:absolute;
}
}
/* Druckausgabe */
@media print {
.home_logo
{
display:none;
}
.header_line
{
display:none;
}
#menue
{
display:none;
}
#GlobalMenu
{
display:none;
}
#content
{
width:800px;
height:900px;
left:0px;
overflow: hidden;
}
}
input.TextBox
{
background-color: White;
@@ -421,8 +455,9 @@ font.ContentHeader
#news .news .titel
{
font-weight: bold;
/*font-size: normal;*/
font-size: normal;
padding: 0px 10px 0px 10px;
white-space: nowrap;
}
#news .news .text
{
@@ -486,6 +521,31 @@ img#layout
}
.studentnote
{
font-weight:bold;
}
.benotungstool_tabs
{
border-top: 1px solid gray;
border-left: 1px solid gray;
border-right: 1px solid gray;
text-align: center;
}
.benotungstool_tabs_active
{
border-top: 2px solid gray;
border-left: 2px solid gray;
border-right: 2px solid gray;
background-color: #eeeeee;
text-align: center;
}
.benotungstool_subtab
{
border-top: 1px solid gray;
border-bottom: 1px solid gray;
}
/*aussortiert*/
+1
View File
@@ -144,6 +144,7 @@ if($result = pg_query($conn, $qry))
Grant select on vw_studiensemester to group "admin";
Grant select on public.vw_benutzerfunktion to group "admin";
Grant select on public.vw_prestudent to group "admin";
GRANT SELECT ON public.vw_prestudent to group web;
GRANT SELECT ON lehre.vw_stundenplandev_student_unr TO GROUP web;
GRANT SELECT ON lehre.vw_stundenplandev_student_unr TO GROUP admin;
';
+49 -11
View File
@@ -34,6 +34,36 @@ if (!$conn = pg_pconnect(CONN_STRING))
echo '<H1>Systemcheck!</H1>';
echo '<H2>DB-Updates!</H2>';
// **************** public.tbl_sprache.flagge *******************************
if(!$result = @pg_query($conn, "SELECT flagge FROM public.tbl_sprache LIMIT 1;"))
{
$qry = "ALTER TABLE public.tbl_sprache ADD COLUMN locale varchar(5);
ALTER TABLE public.tbl_sprache ADD COLUMN flagge text;";
if(!pg_query($conn, $qry))
echo '<strong>public.tbl_sprache: '.pg_last_error($conn).' </strong><br>';
else
echo ' public.tbl_sprache: spalte locale und flagge hinzugefuegt!<br>';
}
// **************** lehre.tbl_projektarbeit.titel *******************************
if($result = pg_query($conn, "SELECT atttypmod FROM pg_class JOIN pg_attribute ON(pg_class.oid=pg_attribute.attrelid) WHERE relname='tbl_projektarbeit' AND attname='titel'"))
{
if($row = pg_fetch_object($result))
{
if($row->atttypmod=='260')
{
$qry = "ALTER TABLE lehre.tbl_projektarbeit ALTER COLUMN titel TYPE varchar(1024);
ALTER TABLE lehre.tbl_projektarbeit ALTER COLUMN titel_english TYPE varchar(1024);";
if(!@pg_query($conn, $qry))
echo '<strong>lehre.tbl_projektarbeit: '.pg_last_error($conn).' </strong><br>';
else
echo ' lehre.tbl_projektarbeit: spalte titel und titel_english wurde auf 1024 Zeichen verbreitert!<br>';
}
}
}
// ************** campus.tbl_paabgabetyp **************************************************
if(!@pg_query($conn, 'SELECT * FROM campus.tbl_paabgabetyp LIMIT 1;'))
{
@@ -90,6 +120,9 @@ if(!@pg_query($conn, 'SELECT * FROM campus.tbl_paabgabetyp LIMIT 1;'))
Grant delete on campus.tbl_paabgabetyp to group admin;
Grant insert on campus.tbl_paabgabetyp to group admin;
Grant select on campus.tbl_paabgabetyp to group web;
GRANT SELECT ON campus.tbl_paabgabe_paabgabe_id_seq TO GROUP web;
GRANT UPDATE ON campus.tbl_paabgabe_paabgabe_id_seq TO GROUP web;
";
if(!@pg_query($conn, $sql))
@@ -885,6 +918,8 @@ $tabellen=array(
"campus.tbl_newssprache" => array("sprache","news_id","betreff","text","updateamum","updatevon","insertamum","insertvon"),
"campus.tbl_notenschluessel" => array("lehreinheit_id","note","punkte"),
"campus.tbl_notenschluesseluebung" => array("uebung_id","note","punkte"),
"campus.tbl_paabgabetyp" => array("paabgabetyp_kurzbz","bezeichnung"),
"campus.tbl_paabgabe" => array("paabgabe_id","projektarbeit_id","paabgabetyp_kurzbz","fixtermin","datum","kurzbz","abgabedatum", "insertvon","insertamum","updatevon","updateamum"),
"campus.tbl_reservierung" => array("reservierung_id","ort_kurzbz","studiengang_kz","uid","stunde","datum","titel","beschreibung","semester","verband","gruppe","gruppe_kurzbz","veranstaltung_id"),
"campus.tbl_resturlaub" => array("mitarbeiter_uid","resturlaubstage","mehrarbeitsstunden","updateamum","updatevon","insertamum","insertvon","urlaubstageprojahr"),
"campus.tbl_studentbeispiel" => array("student_uid","beispiel_id","vorbereitet","probleme","updateamum","updatevon","insertamum","insertvon"),
@@ -919,7 +954,8 @@ $tabellen=array(
"lehre.tbl_lehrveranstaltung" => array("lehrveranstaltung_id","kurzbz","bezeichnung","lehrform_kurzbz","studiengang_kz","semester","sprache","ects","semesterstunden","anmerkung","lehre","lehreverzeichnis","aktiv","planfaktor","planlektoren","planpersonalkosten","plankostenprolektor","koordinator","sort","zeugnis","projektarbeit","updateamum","updatevon","insertamum","insertvon","ext_id","bezeichnung_english","orgform_kurzbz"),
"lehre.tbl_moodle" => array("lehrveranstaltung_id","lehreinheit_id","moodle_id","mdl_course_id","studiensemester_kurzbz","gruppen","insertamum","insertvon"),
"lehre.tbl_note" => array("note","bezeichnung","anmerkung","farbe"),
"lehre.tbl_projektarbeit" => array("projektarbeit_id","projekttyp_kurzbz","titel","lehreinheit_id","student_uid","firma_id","note","punkte","beginn","ende","faktor","freigegeben","gesperrtbis","stundensatz","gesamtstunden","themenbereich","anmerkung","updateamum","updatevon","insertamum","insertvon","ext_id","titel_english"),
"lehre.tbl_note" => array("note","bezeichnung","anmerkung","farbe"),
"lehre.tbl_projektarbeit" => array("projektarbeit_id","projekttyp_kurzbz","titel","lehreinheit_id","student_uid","firma_id","note","punkte","beginn","ende","faktor","freigegeben","gesperrtbis","stundensatz","gesamtstunden","themenbereich","anmerkung","updateamum","updatevon","insertamum","insertvon","ext_id","titel_english","seitenanzahl","abgabedatum","kontrollschlagwoerter","schlagwoerter","schlagwoerter_en","abstract", "abstract_en"),
"lehre.tbl_projektbetreuer" => array("person_id","projektarbeit_id","betreuerart_kurzbz","note","faktor","name","punkte","stunden","stundensatz","updateamum","updatevon","insertamum","insertvon","ext_id"),
"lehre.tbl_projekttyp" => array("projekttyp_kurzbz","bezeichnung"),
"lehre.tbl_pruefung" => array("pruefung_id","lehreinheit_id","student_uid","mitarbeiter_uid","note","pruefungstyp_kurzbz","datum","anmerkung","insertamum","insertvon","updateamum","updatevon","ext_id"),
@@ -966,31 +1002,33 @@ $tabellen=array(
"public.tbl_personfunktionfirma" => array("personfunktionfirma_id","funktion_kurzbz","person_id","firma_id","position","anrede"),
"public.tbl_preinteressent" => array("preinteressent_id","person_id","studiensemester_kurzbz","firma_id","erfassungsdatum","einverstaendnis","absagedatum","anmerkung","maturajahr","infozusendung","aufmerksamdurch_kurzbz","kontaktmedium_kurzbz","insertamum","insertvon","updateamum","updatevon"),
"public.tbl_preinteressentstudiengang" => array("studiengang_kz","preinteressent_id","freigabedatum","uebernahmedatum","prioritaet","insertamum","insertvon","updateamum","updatevon"),
"public.tbl_prestudent" => array("prestudent_id","aufmerksamdurch_kurzbz","person_id","studiengang_kz","berufstaetigkeit_code","ausbildungcode","zgv_code","zgvort","zgvdatum","zgvmas_code","zgvmaort","zgvmadatum","aufnahmeschluessel","facheinschlberuf","reihungstest_id","anmeldungreihungstest","reihungstestangetreten","punkte","bismelden","anmerkung","dual","insertamum","insertvon","updateamum","updatevon","ext_id"),
"public.tbl_prestudent" => array("prestudent_id","aufmerksamdurch_kurzbz","person_id","studiengang_kz","berufstaetigkeit_code","ausbildungcode","zgv_code","zgvort","zgvdatum","zgvmas_code","zgvmaort","zgvmadatum","aufnahmeschluessel","facheinschlberuf","reihungstest_id","anmeldungreihungstest","reihungstestangetreten","rt_gesamtpunkte","rt_punkte1","rt_punkte2","bismelden","anmerkung","dual","insertamum","insertvon","updateamum","updatevon","ext_id"),
"public.tbl_prestudentrolle" => array("prestudent_id","rolle_kurzbz","studiensemester_kurzbz","ausbildungssemester","datum","orgform_kurzbz","insertamum","insertvon","updateamum","updatevon","ext_id"),
"public.tbl_raumtyp" => array("raumtyp_kurzbz","beschreibung"),
"public.tbl_reihungstest" => array("reihungstest_id","studiengang_kz","ort_kurzbz","anmerkung","datum","uhrzeit","updateamum","updatevon","insertamum","insertvon","ext_id"),
"public.tbl_rolle" => array("rolle_kurzbz","beschreibung","anmerkung","ext_id"),
"public.tbl_semesterwochen" => array("semester","studiengang_kz","wochen"),
"public.tbl_sprache" => array("sprache"),
"public.tbl_sprache" => array("sprache","locale","flagge"),
"public.tbl_standort" => array("standort_kurzbz","adresse_id"),
"public.tbl_student" => array("student_uid","matrikelnr","prestudent_id","studiengang_kz","semester","verband","gruppe","updateamum","updatevon","insertamum","insertvon","ext_id"),
"public.tbl_studentlehrverband" => array("student_uid","studiensemester_kurzbz","studiengang_kz","semester","verband","gruppe","updateamum","updatevon","insertamum","insertvon","ext_id"),
"public.tbl_studiengang" => array("studiengang_kz","kurzbz","kurzbzlang","typ","bezeichnung","english","farbe","email","telefon","max_semester","max_verband","max_gruppe","erhalter_kz","bescheid","bescheidbgbl1","bescheidbgbl2","bescheidgz","bescheidvom","orgform_kurzbz","titelbescheidvom","aktiv","ext_id","zusatzinfo_html","organisationsform","moodle"),
"public.tbl_studiengang" => array("studiengang_kz","kurzbz","kurzbzlang","typ","bezeichnung","english","farbe","email","telefon","max_semester","max_verband","max_gruppe","erhalter_kz","bescheid","bescheidbgbl1","bescheidbgbl2","bescheidgz","bescheidvom","orgform_kurzbz","titelbescheidvom","aktiv","ext_id","zusatzinfo_html","organisationsform","moodle","sprache","testtool_sprachwahl"),
"public.tbl_studiensemester" => array("studiensemester_kurzbz","bezeichnung","start","ende","ext_id"),
"public.tbl_variable" => array("name","uid","wert"),
"public.tbl_vorlage" => array("vorlage_kurzbz","bezeichnung","anmerkung"),
"public.tbl_vorlagestudiengang" => array("vorlage_kurzbz","studiengang_kz","version","text"),
"sync.tbl_zutrittskarte" => array("key","name","firstname","groupe","logaswnumber","physaswnumber","validstart","validend","text1","text2","text3","text4","text5","text6","pin"),
"testtool.tbl_ablauf" => array("gebiet_id","studiengang_kz","reihung","gewicht"),
"testtool.tbl_antwort" => array("antwort_id","frage_id","pruefling_id","antwort","begintime","endtime"),
"testtool.tbl_frage" => array("frage_id","kategorie_kurzbz","gebiet_id","gruppe_kurzbz","loesung","nummer","demo","text","bild"),
"testtool.tbl_gebiet" => array("gebiet_id","kurzbz","bezeichnung","beschreibung","zeit","abzug","kategorien"),
"testtool.tbl_gruppe" => array("gruppe_kurzbz"),
"testtool.tbl_ablauf" => array("ablauf_id","gebiet_id","studiengang_kz","reihung","gewicht","semester", "insertamum","insertvon","updateamum", "updatevon"),
"testtool.tbl_antwort" => array("antwort_id","pruefling_id","vorschlag_id"),
"testtool.tbl_frage" => array("frage_id","kategorie_kurzbz","gebiet_id","level","nummer","demo","insertamum","insertvon","updateamum","updatevon"),
"testtool.tbl_gebiet" => array("gebiet_id","kurzbz","bezeichnung","beschreibung","zeit","multipleresponse","kategorien","maxfragen","zufallfrage","zufallvorschlag","levelgleichverteilung","maxpunkte","insertamum", "insertvon", "updateamum", "updatevon", "level_start","level_sprung_auf","level_sprung_ab"),
"testtool.tbl_kategorie" => array("kategorie_kurzbz","gebiet_id"),
"testtool.tbl_kriterien" => array("gebiet_id","kategorie_kurzbz","punkte","typ"),
"testtool.tbl_pruefling" => array("pruefling_id","prestudent_id","studiengang_kz","idnachweis","registriert","gruppe_kurzbz"),
"testtool.tbl_vorschlag" => array("vorschlag_id","frage_id","nummer","antwort","text","bild")
"testtool.tbl_pruefling" => array("pruefling_id","prestudent_id","studiengang_kz","idnachweis","registriert"),
"testtool.tbl_vorschlag" => array("vorschlag_id","frage_id","nummer","punkte","insertamum","insertvon","updateamum","updatevon"),
"testtool.tbl_pruefling_frage" => array("prueflingfrage_id","pruefling_id","frage_id","nummer","begintime","endtime"),
"testtool.tbl_frage_sprache" => array("frage_id","sprache","text","bild","audio","insertamum","insertvon","updateamum","updatevon"),
"testtool.tbl_vorschlag_sprache" => array("vorschlag_id","sprache","text","bild","audio","insertamum","insertvon","updateamum","updatevon"),
);
$tabs=array_keys($tabellen);
@@ -97,7 +97,8 @@ echo '<hr><br><a href="'.$_SERVER['PHP_SELF'].'?action=deletedummyanswers" oncli
if(isset($_GET['action']) && $_GET['action']=='deletedummyanswers')
{
$qry = "DELETE FROM testtool.tbl_antwort WHERE pruefling_id=841";
$qry = "DELETE FROM testtool.tbl_antwort WHERE pruefling_id=841;
DELETE FROM testtool.tbl_pruefling_frage where pruefling_id=841;";
if(pg_query($conn, $qry))
echo ' <b>Antworten wurden gelöscht</b>';
else
@@ -154,7 +155,9 @@ if(isset($_POST['deleteteilgebiet']))
$qry = "DELETE FROM testtool.tbl_antwort
WHERE pruefling_id='$pruefling->pruefling_id' AND
frage_id IN (SELECT frage_id FROM testtool.tbl_frage WHERE gebiet_id='".$_POST['gebiet']."')";
frage_id IN (SELECT frage_id FROM testtool.tbl_frage WHERE gebiet_id='".$_POST['gebiet']."');
DELETE FROM testtool.tbl_pruefling_frage where pruefling_id='$pruefling->pruefling_id' AND
frage_id IN (SELECT frage_id FROM testtool.tbl_frage WHERE gebiet_id='".$_POST['gebiet']."');";
if($result = pg_query($conn, $qry))
{
echo '<b>'.pg_affected_rows($result).' Antworten wurden gelöscht</b>';
@@ -169,8 +172,9 @@ if(isset($_POST['testergebnisanzeigen']) && isset($_POST['prestudent_id']))
{
if(is_numeric($_POST['prestudent_id']) && $_POST['prestudent_id']!='')
{
$qry="SELECT nachname,vorname,tbl_frage.gruppe_kurzbz,person_id,prestudent_id,pruefling_id,kurzbz,nummer,antwort,loesung
$qry="SELECT nachname,vorname,person_id,prestudent_id,pruefling_id,kurzbz,tbl_frage.nummer, tbl_vorschlag.nummer as antwortnummer, tbl_vorschlag.punkte
FROM testtool.tbl_antwort
JOIN testtool.tbl_vorschlag USING(vorschlag_id)
JOIN testtool.tbl_frage USING (frage_id)
JOIN testtool.tbl_gebiet USING (gebiet_id)
JOIN testtool.tbl_pruefling USING (pruefling_id)
@@ -185,14 +189,13 @@ if(isset($_POST['testergebnisanzeigen']) && isset($_POST['prestudent_id']))
<tr>
<th>Nachname</th>
<th>Vorname</th>
<th>Gruppe</th>
<th>PersonID</th>
<th>PrestudentID</th>
<th>PrueflingID</th>
<th>Kurzbz</th>
<th>Nummer</th>
<th>Antwort</th>
<th>Lösung</th>
<th>Frage Nummer</th>
<th>Antwort Nummer</th>
<th>Punkte</th>
</tr>
</thead>
<tbody>';
@@ -201,14 +204,13 @@ if(isset($_POST['testergebnisanzeigen']) && isset($_POST['prestudent_id']))
echo '<tr>';
echo "<td>$row->nachname</td>";
echo "<td>$row->vorname</td>";
echo "<td>$row->gruppe_kurzbz</td>";
echo "<td>$row->person_id</td>";
echo "<td>$row->prestudent_id</td>";
echo "<td>$row->pruefling_id</td>";
echo "<td>$row->kurzbz</td>";
echo "<td>$row->nummer</td>";
echo "<td>$row->antwort</td>";
echo "<td>$row->loesung</td>";
echo "<td>$row->antwortnummer</td>";
echo "<td>$row->punkte</td>";
echo '</tr>';
}
echo '</tbody></table>';
+85 -2
View File
@@ -27,6 +27,9 @@
require_once('../../include/ort.class.php');
require_once('../../include/datum.class.php');
require_once('../../include/benutzerberechtigung.class.php');
require_once('../../include/pruefling.class.php');
require_once('../../include/person.class.php');
require_once('../../include/prestudent.class.php');
require_once('../../include/Excel/excel.php');
@@ -37,6 +40,8 @@
$datum_obj = new datum();
$stg_kz = (isset($_GET['stg_kz'])?$_GET['stg_kz']:'-1');
$reihungstest_id = (isset($_GET['reihungstest_id'])?$_GET['reihungstest_id']:'');
$prestudent_id = (isset($_GET['prestudent_id'])?$_GET['prestudent_id']:'');
$rtpunkte = (isset($_GET['rtpunkte'])?$_GET['rtpunkte']:'');
$neu = (isset($_GET['neu'])?true:false);
$stg_arr = array();
$error = false;
@@ -218,6 +223,63 @@
}
$neu=false;
}
// Uebertraegt die Punkte eines Prestudenten ins FAS
if(isset($_GET['type']) && $_GET['type']=='savertpunkte')
{
$prestudent = new prestudent($conn);
$prestudent->load($prestudent_id);
if($rechte->isBerechtigt('admin') || $rechte->isBerechtigt('assistenz', $prestudent->studiengang_kz, 'suid'))
{
$prestudent->rt_punkte1 = $rtpunkte;
$prestudent->punkte = $prestudent->rt_punkte1 + $prestudent->rt_punkte2;
$prestudent->save(false);
}
else
{
echo '<span class="input_error"><br>Sie haben keine Berechtigung zur Uebernahme der Punkte fuer '.$row->nachname.' '.$row->vorname.'</span>';
}
}
// Uebertraegt alle Punkte eines Reihungstests ins FAS
if(isset($_GET['type']) && $_GET['type']=='saveallrtpunkte')
{
$errormsg='';
$qry = "SELECT prestudent_id, studiengang_kz, nachname, vorname
FROM public.tbl_prestudent JOIN public.tbl_person USING(person_id)
WHERE reihungstest_id='".addslashes($reihungstest_id)."'";
// AND (rt_punkte1='' OR rt_punkte1 is null)";
if($result = pg_query($conn, $qry))
{
while($row = pg_fetch_object($result))
{
if($rechte->isBerechtigt('admin') || $rechte->isBerechtigt('assistenz', $row->studiengang_kz, 'suid'))
{
$prestudent = new prestudent($conn);
$prestudent->load($row->prestudent_id);
$pruefling = new pruefling($conn);
$rtpunkte = $pruefling->getReihungstestErgebnis($row->prestudent_id);
$prestudent->rt_punkte1 = $rtpunkte;
$prestudent->punkte = $prestudent->rt_punkte1 + $prestudent->rt_punkte2;
$prestudent->save(false);
}
else
{
$errormsg .= "<br>Sie haben keine Berechtigung zur Uebernahme der Punkte fuer $row->nachname $row->vorname";
}
}
if($errormsg!='')
{
echo '<span class="input_error">'.$errormsg.'</span>';
}
}
}
echo '<br><table width="100%"><tr><td>';
//Studiengang DropDown
@@ -354,17 +416,36 @@
if($reihungstest_id!='')
{
echo "<a href='".$_SERVER['PHP_SELF']."?reihungstest_id=$reihungstest_id&excel=true'>Excel Export</a><br><br>";
echo '<table width="100%"><tr><td>';
echo "<a href='".$_SERVER['PHP_SELF']."?reihungstest_id=$reihungstest_id&excel=true'>Excel Export</a>";
echo '</td><td align="right">';
echo "<a href='".$_SERVER['PHP_SELF']."?reihungstest_id=$reihungstest_id&type=saveallrtpunkte'>alle Punkte ins FAS &uuml;bertragen</a>";
echo '</td></tr></table>';
//Liste der Interessenten die zum Reihungstest angemeldet sind
$qry = "SELECT *, (SELECT kontakt FROM tbl_kontakt WHERE kontakttyp='email' AND person_id=tbl_prestudent.person_id ORDER BY zustellung desc, insertamum desc LIMIT 1) as email FROM public.tbl_prestudent JOIN public.tbl_person USING(person_id) WHERE reihungstest_id='$reihungstest_id' ORDER BY nachname, vorname";
$mailto = '';
if($result = pg_query($conn, $qry))
{
echo 'Anzahl: '.pg_num_rows($result);
$pruefling = new pruefling($conn);
echo "<table class='liste table-autosort:2 table-stripeclass:alternate table-autostripe'><thead><tr class='liste'><th class='table-sortable:default'>Vorname</th><th class='table-sortable:default'>Nachname</th><th class='table-sortable:default'>Studiengang</th><th class='table-sortable:default'>Geburtsdatum</th><th>EMail</th></tr></thead><tbody>";
echo "<table class='liste table-autosort:2 table-stripeclass:alternate table-autostripe'>
<thead>
<tr class='liste'>
<th class='table-sortable:default'>Vorname</th>
<th class='table-sortable:default'>Nachname</th>
<th class='table-sortable:default'>Studiengang</th>
<th class='table-sortable:default'>Geburtsdatum</th>
<th class='table-sortable:default'>EMail</th>
<th class='table-sortable:default'>Ergebnis</th>
<th class='table-sortable:default'>FAS</th>
</tr>
</thead>
<tbody>";
while($row = pg_fetch_object($result))
{
$rtergebnis = $pruefling->getReihungstestErgebnis($row->prestudent_id);
echo "
<tr>
<td>$row->vorname</td>
@@ -372,6 +453,8 @@
<td>".$stg_arr[$row->studiengang_kz]."</td>
<td>".$datum_obj->convertISODate($row->gebdatum)."</td>
<td><a href='mailto:$row->email'>$row->email</a></td>
<td align='right'>".number_format($rtergebnis,2,'.','')."</td>
<td align='right'>".($rtergebnis>0 && $row->rt_punkte1==''?'<a href="'.$_SERVER['PHP_SELF'].'?reihungstest_id='.$reihungstest_id.'&stg_kz='.$stg_kz.'&type=savertpunkte&prestudent_id='.$row->prestudent_id.'&rtpunkte='.$rtergebnis.'" >&uuml;bertragen</a>':$row->rt_punkte1)."</td>
</tr>";
$mailto.= ($mailto!=''?',':'').$row->email;