Testtool Anpassungen:

- Löschen von Fragen
- Löschen von Gebieten
- Anlegen von Abläufen
- Löschen von Abläufen
This commit is contained in:
oesi
2015-11-24 11:30:55 +01:00
parent e8d2e8c48d
commit 944cf27ce2
5 changed files with 715 additions and 252 deletions
+146 -17
View File
@@ -15,7 +15,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Authors: Christian Paminger <christian.paminger@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>
@@ -28,11 +28,11 @@ require_once('../../../config/cis.config.inc.php');
require_once('../../../include/functions.inc.php');
require_once('../../../include/gebiet.class.php');
require_once('../../../include/benutzerberechtigung.class.php');
require_once('../../../include/studiengang.class.php');
if (!$user=get_uid())
die('Sie sind nicht angemeldet. Es wurde keine Benutzer UID gefunden ! <a href="javascript:history.back()">Zur&uuml;ck</a>');
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
@@ -42,18 +42,41 @@ echo '
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="../../../skin/style.css.php" rel="stylesheet" type="text/css">
<link href="../../../skin/tablesort.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="../../../include/js/jquery1.9.min.js" ></script>
<script type="text/javascript">
$(document).ready(function()
{
$("#t1").tablesorter(
{
sortList: [[0,0]],
widgets: ["zebra"]
});
});
function deleteZuordnung(ablauf_id)
{
if(confirm("Wollen Sie dieses Zuordnung wirklich entfernen?"))
{
$("#data").html(\'<form action="edit_gebiet.php" name="sendform" id="sendform" method="POST"><input type="hidden" name="action" value="deleteZuordnung" /><input type="hidden" name="ablauf_id" value="\'+ablauf_id+\'" /></form>\');
document.sendform.submit();
}
return false;
}
</script>
</head>
<body>
<div id="data"></div>
';
if(isset($_GET['gebiet_id']))
$gebiet_id=$_GET['gebiet_id'];
else
else
$gebiet_id='';
$stg_kz = (isset($_GET['stg_kz'])?$_GET['stg_kz']:'-1');
echo '<h1>&nbsp;Gebiet bearbeiten</h1>';
if(!$rechte->isBerechtigt('basis/testtool'))
@@ -72,13 +95,13 @@ foreach ($gebiet->result as $row)
{
if($gebiet_id=='')
$gebiet_id=$row->gebiet_id;
if($gebiet_id==$row->gebiet_id)
$selected='selected';
else
else
$selected='';
echo '<OPTION value="'.$row->gebiet_id.'" '.$selected.'>'.$row->bezeichnung.' - '.$row->kurzbz.' - '.$row->zeit.'</OPTION>';
echo '<OPTION value="'.$row->gebiet_id.'" '.$selected.'>'.$row->bezeichnung.' - '.$row->kurzbz.' - '.$row->zeit.'</OPTION>';
}
echo '</SELECT>
<!--<input type="submit" value="Bearbeiten">-->
@@ -86,12 +109,53 @@ echo '</SELECT>
echo '<br /><br />';
// Ablaufzuordnung entfernen
if(isset($_POST['action']) && $_POST['action']=='deleteZuordnung')
{
if(!isset($_POST['ablauf_id']) || !is_numeric($_POST['ablauf_id']))
die('ungueltige Parameteruebergabe');
$ablauf_id = $_POST['ablauf_id'];
$ablauf = new gebiet();
if($ablauf->deleteAblaufZuordnung($ablauf_id))
echo '<span class="ok">Ablauf wurde entfernt</span>';
else
echo '<span class="error">Fehler beim Entfernen:'.$ablauf->errormsg.'</span>';
}
// Ablaufzuordnung hinzufügen
if(isset($_POST['action']) && $_POST['action']=='saveAblauf')
{
$ablauf_vorgaben_id = $_POST['ablauf_vorgaben_id'];
$studiengang_kz = $_POST['studiengang_kz'];
$reihung = $_POST['reihung'];
$gewicht = $_POST['gewicht'];
$semester = $_POST['semester'];
$ablauf = new gebiet();
$ablauf->ablauf_vorgaben_id = $ablauf_vorgaben_id;
$ablauf->studiengang_kz = $studiengang_kz;
$ablauf->reihung = $reihung;
$ablauf->gewicht = $gewicht;
$ablauf->semester = $semester;
$ablauf->new = true;
$ablauf->gebiet_id = $gebiet_id;
if($ablauf->saveAblauf())
echo '<span class="ok">Ablauf gespeichert</span>';
else
echo '<span class="error">Fehler beim Speichern:'.$ablauf->errormsg.'</span>';
}
//Speichern der Daten
if(isset($_POST['speichern']))
{
if(!$rechte->isBerechtigt('basis/testtool', null, 'suid'))
die('Sie haben keine Berechtigung fuer diese Aktion');
$gebiet = new gebiet();
if($gebiet->load($gebiet_id))
{
@@ -112,17 +176,17 @@ if(isset($_POST['speichern']))
$gebiet->updateamum = date('Y-m-d H:i:s');
$gebiet->updatevon = $user;
$gebiet->antwortenprozeile = $_POST['antwortenprozeile'];
if($gebiet->save(false))
{
echo 'Daten erfolgreich gespeichert';
}
else
else
{
echo '<span class="error">Fehler beim Speichern: '.$gebiet->errormsg.'</span>';
}
}
else
else
{
echo '<span class="error">Fehler beim Laden des Gebiets</span>';
}
@@ -135,7 +199,7 @@ if($gebiet_id!='')
echo "<hr />";
echo '<form accept-charset="UTF-8" action="'.$_SERVER['PHP_SELF'].'?gebiet_id='.$gebiet_id.'&amp;stg_kz='.$stg_kz.'" method="POST">';
echo '<table>';
echo '<tr>';
//ID
echo '<td>ID</td><td>'.$gebiet_id.'</td>';
@@ -166,7 +230,7 @@ if($gebiet_id!='')
$maximalpunkte = $gebiet->berechneMaximalpunkte($gebiet_id);
if($gebiet->maxpunkte!=$maximalpunkte)
$hinweis = '<span class="error">empfohlene Maximalpunkteanzahl: '.$maximalpunkte.'</span>';
else
else
$hinweis ='';
echo '<td>Maximale Punkteanzahl</td><td><input type="text" size="5" maxlength="5" name="maxpunkte" value="'.$gebiet->maxpunkte.'">'.$hinweis.'</td>';
echo '</tr><tr>';
@@ -182,9 +246,74 @@ if($gebiet_id!='')
echo '</tr><tr>';
echo '<td></td><td><input type="submit" name="speichern" value="Speichern"></td>';
echo '</tr></table>';
echo '</form>';
echo '<hr />
<h2>Zuordnung</h2>';
$gebiet = new gebiet();
$gebiet->loadAblaufGebiet($gebiet_id);
$studiengang = new studiengang();
$studiengang->getAll('typ, kurzbz',false);
echo '<form action="edit_gebiet.php" method="POST">';
echo '<table id="t1" class="tablesorter">
<thead>
<tr>
<th>Studiengang</th>
<th>Reihung</th>
<th>Gewicht</th>
<th>Semester</th>
<th>Vorgaben</th>
<th>Aktion</th>
</tr>
</thead>
<tbody>';
foreach($gebiet->result as $row)
{
echo '<tr>
<td>'.$studiengang->kuerzel_arr[$row->studiengang_kz].'</td>
<td>'.$row->reihung.'</td>
<td>'.$row->gewicht.'</td>
<td>'.$row->semester.'</td>
<td>'.$row->ablauf_vorgaben_id.'</td>
<td><a href="#loeschen" onclick="return deleteZuordnung(\''.$row->ablauf_id.'\');" ><img src="../../../skin/images/delete.png" height="15px" /></a></td>
</tr>';
}
echo '</tbody>';
echo '<tfoot>
<tr>
<td><select name="studiengang_kz">';
foreach($studiengang->kuerzel_arr as $stg_kz=>$row_stg)
{
echo '<option value="'.$stg_kz.'">'.$row_stg.'</option>';
}
echo '</select>
</td>
<td><input type="text" name="reihung" value="1" size="2" /></td>
<td><input type="text" name="gewicht" value="1" size="2"/></td>
<td><input type="text" name="semester" value="1" size="2"/></td>
<td>
<select name="ablauf_vorgaben_id">';
$ablauf_vorgabe = new gebiet();
$ablauf_vorgabe->getAblaufVorgaben();
foreach($ablauf_vorgabe->result as $vorgabe)
{
echo '<option value="'.$vorgabe->ablauf_vorgaben_id.'">'.$studiengang->kuerzel_arr[$vorgabe->studiengang_kz].' - Sprache: '.$vorgabe->sprache.' Sprachwahl: '.($vorgabe->sprachwahl?'Ja':'Nein').' Content:'.$vorgabe->content_id.'</option>';
}
echo '</select></td>
<td>
<input type="hidden" name="action" value="saveAblauf" />
<input type="submit" value="speichern" /></td>
</tr>';
echo '</tfoot></table>';
echo '</form>';
}
echo '</body></html>';
?>
?>
+83 -62
View File
@@ -31,7 +31,7 @@ require_once('../../../include/frage.class.php');
require_once('../../../include/vorschlag.class.php');
require_once('../../../include/benutzerberechtigung.class.php');
require_once('../../../include/studiengang.class.php');
if (!$db = new basis_db())
{
die('Fehler beim Oeffnen der Datenbankverbindung');
@@ -52,7 +52,7 @@ if(!$rechte->isBerechtigt('basis/testtool', null, 's'))
$studiengang = new studiengang();
$studiengang->getAll('typ, kurzbz', false);
$stg_kz = (isset($_GET['stg_kz'])?$_GET['stg_kz']:'-1');
if(isset($_GET['gebiet_id']))
{
$gebiet_id = $_GET['gebiet_id'];
@@ -112,7 +112,7 @@ function previewvorschlag()
{
document.getElementById('vorschauvorschlag').innerHTML = document.getElementById('text_vorschlag').value;
}
function insertfrage(aTag, eTag)
function insertfrage(aTag, eTag)
{
var input = document.forms['formular_frage'].elements['text'];
input.focus();
@@ -131,7 +131,7 @@ function insertfrage(aTag, eTag)
input.selectionStart = pos;
input.selectionEnd = pos;
}
function insertvorschlag(aTag, eTag)
function insertvorschlag(aTag, eTag)
{
var input = document.forms['formular_vorschlag'].elements['text_vorschlag'];
input.focus();
@@ -150,6 +150,11 @@ function insertvorschlag(aTag, eTag)
input.selectionStart = pos;
input.selectionEnd = pos;
}
function confirmDeleteFrage()
{
return confirm('Wollen Sie diese Frage wirklich löschen?');
}
</script>
<style type="text/css">
@@ -164,7 +169,7 @@ font-size: 10pt;
<h1>
<div style="float:left">Testtool - Administrationsseite</div>
<div style="text-align:right; padding-right: 5px;"><a href="uebersichtFragen.php" class="Item" target="blank">Fragenübersicht</a> | <a href="auswertung.php" class="Item">Auswertung</a> | <a href="Testtool.pdf" class="Item" target="_blank">Hilfe</a></div>
<div style="text-align:right; padding-right: 5px;"><a href="uebersichtGebiete.php" class="Item" target="blank">Gebietübersicht</a> |<a href="uebersichtFragen.php" class="Item" target="blank">Fragenübersicht</a> | <a href="auswertung.php" class="Item">Auswertung</a> | <a href="Testtool.pdf" class="Item" target="_blank">Hilfe</a></div>
</h1>
<?php
@@ -176,7 +181,7 @@ if(isset($_GET['type']) && $_GET['type']=='changesprache')
if(!isset($_SESSION['sprache']))
$_SESSION['sprache']=DEFAULT_LANGUAGE;
$sprache = $_SESSION['sprache'];
//Bei Upload des Bildes
@@ -270,7 +275,7 @@ if(isset($_POST['submitdata']))
{
if(!$rechte->isBerechtigt('basis/testtool', null, 'suid'))
die('Sie haben keine Berechtigung fuer diese Aktion');
$frage = new frage();
if($frage->load($_GET['frage_id']))
{
@@ -278,14 +283,14 @@ if(isset($_POST['submitdata']))
$frage->nummer = $_POST['nummer'];
$frage->level = $_POST['level'];
$frage->new = false;
if($frage->save())
{
if(!$frage->getFrageSprache($frage->frage_id, $sprache))
{
$frage->new=true;
}
$frage->text = $_POST['text'];
$frage->sprache = $sprache;
@@ -298,14 +303,14 @@ if(isset($_POST['submitdata']))
echo "<b>Daten gespeichert</b><br />";
$nummer = $frage->nummer;
}
else
else
echo '<b>Fehler:'.$frage->errormsg.'</b><br />';
}
else
else
{
$frage_error_text = $frage->text;
echo '<b>Fehler: Text ist kein gueltiges XML:<span class="error"><br />';
foreach (libxml_get_errors() as $error)
foreach (libxml_get_errors() as $error)
{
echo $error->message.'<br />';
}
@@ -324,7 +329,7 @@ if(isset($_POST['submitvorschlag']))
{
if(!$rechte->isBerechtigt('basis/testtool', null, 'suid'))
die('Sie haben keine Berechtigung fuer diese Aktion');
$bildcontent='';
if(isset($_FILES['bild']['tmp_name']) && is_uploaded_file($_FILES['bild']['tmp_name']))
{
@@ -347,7 +352,7 @@ if(isset($_POST['submitvorschlag']))
else
echo "<b>Datei ist kein Bild!</b><br />";
}
$audiocontent='';
if(isset($_FILES['audio']['tmp_name']) && is_uploaded_file($_FILES['audio']['tmp_name']))
{
@@ -409,18 +414,18 @@ if(isset($_POST['submitvorschlag']))
$vorschlag->sprache = $sprache;
$vorschlag->updateamum = date('Y-m-d H:i:s');
$vorschlag->updatevon = $user;
$xml = '<?xml version="1.0" encoding="utf-8"?><root>'.$vorschlag->text.'</root>';
libxml_use_internal_errors(true);
if(simplexml_load_string($xml))
{
{
if($vorschlag->save())
{
if($vorschlag->save_vorschlagsprache())
{
echo "<b>Vorschlag gespeichert</b><br />";
}
else
else
{
$save_vorschlag_error=true;
echo "Fehler beim Speichern von Vorschlagsprache: $vorschlag->errormsg<br />";
@@ -432,11 +437,11 @@ if(isset($_POST['submitvorschlag']))
echo '<b>'.$vorschlag->errormsg.'</b><br />';
}
}
else
else
{
$vorschlag_error_text = $vorschlag->text;
echo '<b>Fehler: Text ist kein gueltiges XML:<span class="error"><br />';
foreach (libxml_get_errors() as $error)
foreach (libxml_get_errors() as $error)
{
echo $error->message.'<br />';
}
@@ -451,21 +456,33 @@ if(isset($_GET['type']) && $_GET['type']=='delete' && isset($_GET['vorschlag_id'
{
if(!$rechte->isBerechtigt('basis/testtool', null, 'suid'))
die('Sie haben keine Berechtigung fuer diese Aktion');
$vs = new vorschlag();
if(!$vs->delete($_GET['vorschlag_id']))
echo '<b>'.$vs->errormsg.'</b><br />';
$vorschlag_id='';
}
if(isset($_POST['type']) && $_POST['type']=='deleteFrage')
{
if(!$rechte->isBerechtigt('basis/testtool', null, 'suid'))
die('Sie haben keine Berechtigung fuer diese Aktion');
$frage = new frage();
if(!$frage->delete($_GET['frage_id']))
{
echo "Löschen fehlgeschlagen:".$frage->errormsg;
}
}
// anlegen einer neuen Frage
if(isset($_GET['type']) && $_GET['type']=='neuefrage')
{
if(!$rechte->isBerechtigt('basis/testtool', null, 'suid'))
die('Sie haben keine Berechtigung fuer diese Aktion');
$frage_obj = new frage();
$frage_obj->gebiet_id = $_GET['gebiet_id'];
$frage_obj->nummer=999;
$frage_obj->demo=false;
@@ -480,12 +497,12 @@ if(isset($_GET['type']) && $_GET['type']=='neuefrage')
echo 'Frage wurde erfolgreich angelegt';
$nummer=999;
}
else
else
{
echo '<span class="error">Fehler beim Speichern der FrageSprache: '.$frage_obj->errormsg.'</span>';
}
}
else
else
{
echo '<span class="error">Fehler beim Speichern der Frage: '.$frage_obj->errormsg.'</span>';
}
@@ -495,18 +512,18 @@ if(isset($_GET['type']) && $_GET['type']=='neuefrage')
if(isset($_GET['type']) && $_GET['type']=='gebietpruefen' && isset($_GET['gebiet_id']))
{
$gebiet = new gebiet($gebiet_id);
if($gebiet->check_gebiet($gebiet_id))
{
echo "<b>Das Gebiet $gebiet->bezeichnung wurde erfolgreich ueberprueft</b>";
}
else
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)
{
@@ -519,63 +536,63 @@ echo '<table width="100%"><tr><td>';
//Liste der Studiengänge
echo 'Studiengang: <select onchange="window.location.href=this.value">';
echo '<option value="'.$PHP_SELF.'?" >Alle Studiengänge</option>';
foreach ($studiengang->result as $row)
foreach ($studiengang->result as $row)
{
$stg_arr[$row->studiengang_kz] = $row->kuerzel;
if($stg_kz=='')
$stg_kz=$row->studiengang_kz;
if($row->studiengang_kz==$stg_kz)
$selected='selected="selected"';
else
else
$selected='';
echo '<option value="'.$PHP_SELF.'?stg_kz='.$row->studiengang_kz.'" '.$selected.'>'.$db->convert_html_chars($row->kuerzel).'</option>'."\n";
}
echo '</select>';
//Liste der Gebiete
$qry= "SELECT * FROM testtool.tbl_ablauf WHERE studiengang_kz=".$stg_kz."";
$qry= "SELECT * FROM testtool.tbl_ablauf WHERE studiengang_kz=".$stg_kz."";
$anzahl = $db->db_num_rows($db->db_query($qry));
if ($stg_kz!=="-1" && $anzahl!==0)
$qry= "SELECT * FROM testtool.tbl_gebiet LEFT JOIN testtool.tbl_ablauf USING (gebiet_id) WHERE studiengang_kz=".$stg_kz." ORDER BY semester,reihung";
else
else
$qry= "SELECT * FROM testtool.tbl_gebiet ORDER BY bezeichnung";
if (($anzahl!==0) || ($stg_kz=='-1') && ($stg_kz!==''))
{
if($result = $db->db_query($qry))
{
echo ' Gebiet:<select onchange="window.location.href=\''.$PHP_SELF.'?stg_kz='.$stg_kz.'&amp;gebiet_id=\'+this.value;">';
//echo 'Gebiet: <select onchange="window.location.href=this.value">';
while($row = $db->db_fetch_object($result))
{
if($gebiet_id=='')
$gebiet_id = $row->gebiet_id;
if($gebiet_id==$row->gebiet_id)
$selected='selected="selected"';
else
else
$selected='';
if ($stg_kz=="-1")
echo '<option value="'.$row->gebiet_id.'" '.$selected.'>'.$row->bezeichnung.' - '.$row->kurzbz.' - '.$row->zeit.'</option>'."\n";
else
else
echo '<option value="'.$row->gebiet_id.'" '.$selected.'>('.$row->semester.') - '.$row->bezeichnung.' - '.$row->kurzbz.' - '.$row->zeit.'</option>'."\n";
}
echo '</select>';
}
echo " <a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;stg_kz=$stg_kz&amp;nummer=$nummer&amp;type=gebietpruefen' class='Item'>Pruefen</a> | ";
echo " <a href='edit_gebiet.php?gebiet_id=$gebiet_id&amp;stg_kz=$stg_kz' class='Item'>Bearbeiten</a>";
//echo " <br/>Gebiet_id=".$gebiet_id."";
echo '</td><td align="right">';
//Liste der Sprachen
$qry = "SELECT sprache FROM public.tbl_sprache WHERE content ORDER BY sprache DESC";
if($result = $db->db_query($qry))
{
while($row = $db->db_fetch_object($result))
@@ -584,17 +601,17 @@ if (($anzahl!==0) || ($stg_kz=='-1') && ($stg_kz!==''))
$sprache = $row->sprache;
if($sprache==$row->sprache)
$selected='style="border:1px solid black;"';
else
else
$selected='';
echo " <a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;nummer=$nummer&amp;stg_kz=$stg_kz&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=".$db->db_add_param($gebiet_id)." ORDER BY nummer";
if($result = $db->db_query($qry))
{
echo 'Nummer: ';
@@ -602,7 +619,7 @@ if (($anzahl!==0) || ($stg_kz=='-1') && ($stg_kz!==''))
{
if($nummer=='')
$nummer = $row->nummer;
if($nummer==$row->nummer)
echo " <a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;stg_kz=$stg_kz&amp;nummer=$row->nummer' class='Item'><u>$row->nummer</u></a> -";
else
@@ -612,30 +629,30 @@ if (($anzahl!==0) || ($stg_kz=='-1') && ($stg_kz!==''))
if($nummer<$db->db_num_rows($result)-1)
echo " - <a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;stg_kz=$stg_kz&amp;nummer=".($nummer+1)."' class='Item'>Weiter &gt;&gt;</a>";
}
echo "\n\n<br />";
//Fragen holen
$frage = new frage();
$frage->getFragen($gebiet_id, $nummer);
if(count($frage->result)==1)
{
$frage_id = $frage->result[0]->frage_id;
}
else
else
{
//Wenn fuer diese Nummer mehrere Fragen vorhanden sind,
//koennen diese extra ausgewaehlt werden
echo 'FrageID: ';
foreach ($frage->result as $row)
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;stg_kz=$stg_kz&amp;nummer=$row->nummer&amp;frage_id=$row->frage_id' class='Item'><u>$row->frage_id</u></a> -";
else
else
echo "<a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;stg_kz=$stg_kz&amp;nummer=$row->nummer&amp;frage_id=$row->frage_id' class='Item'>$row->frage_id</a> -";
}
}
@@ -650,9 +667,13 @@ if($frage_id!='')
{
$frage->load($frage_id);
$frage->getFrageSprache($frage_id, $sprache);
echo "<table><tr><td>";
echo '<table><tr><td valign="top" align="right">';
echo '<form action="'.$PHP_SELF.'?gebiet_id='.$gebiet_id.'&amp;stg_kz='.$stg_kz.'&amp;nummer='.$nummer.'&amp;frage_id='.$frage->frage_id.'" method="POST" onsubmit="return confirmDeleteFrage()">
<input type="hidden" name="type" value="deleteFrage" />
<input type="submit" value="Frage löschen" />
</form>';
//Fragen
echo "<table>";
echo "<tr>";
@@ -696,7 +717,7 @@ if($frage_id!='')
echo "<table>";
//Bei Aenderungen im Textfeld werden diese sofort in der Vorschau angezeigt
//Wenn beim Speichern der Text kein Gueltiges XML ist, wird der vorige Text erneut angezeigt
echo "<tr valign='top'><td colspan='2'>\n<textarea name='text' id='text' cols='50' rows='27' oninput='preview()'><![CDATA[".(isset($frage_error_text)?$frage_error_text:$frage->text)."]]></textarea>\n</td>";
echo "<table><tr><td><input type='button' value='br' onclick='insertfrage(\"&lt;br/&gt;\", \"\")' />";
echo "<input type='button' value='F' style='font-weight:bold' onclick='insertfrage(\"&lt;strong&gt;\", \"&lt;/strong&gt;\")' />";
@@ -790,7 +811,7 @@ if($frage_id!='')
echo '<tr>';
//Upload Feld fuer Audio
echo "<td>Audio:</td><td><input type='file' name='audio' /></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;stg_kz=$stg_kz&amp;nummer=$nummer&amp;frage_id=$frage->frage_id'\" />":'')."</td></tr>";
//Vorschau fuer das Text-Feld
echo "<tr><td colspan='2'>Vorschau:<br /><div id='vorschauvorschlag' style='border: 1px solid black' align='center'>$vorschlag->text</div></td></tr>";
@@ -818,7 +839,7 @@ if($frage_id!='')
else
echo "<td align='right' style='color:#FF8204'>$vs->punkte";
echo "</td><td>$vs->text</td>
<td>".($vs->bild!=''?"<img src='../bild.php?src=vorschlag&amp;vorschlag_id=$vs->vorschlag_id&amp;sprache=$sprache' height='24' onmouseover='height=200' onmouseout='height=24'/>":"")."</td>
<td>".($vs->bild!=''?"<img src='../bild.php?src=vorschlag&amp;vorschlag_id=$vs->vorschlag_id&amp;sprache=$sprache' height='24' onmouseover='height=200' onmouseout='height=24'/>":"")."</td>
<td>";
$a[] = $vs->punkte;
if($vs->audio!='')
@@ -833,9 +854,9 @@ if($frage_id!='')
<td><a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;stg_kz=$stg_kz&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;stg_kz=$stg_kz&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 '<tr><td>Summe:</td><td align="left">'.number_format(array_sum($a),2, ".", "").'&nbsp;&nbsp;</td></tr>';
echo '</table><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>';
}
+132
View File
@@ -0,0 +1,132 @@
<?php
/* Copyright (C) 2015 fhcomplete.org
*
* 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: Andreas Österreicher <andreas.oesterreicher@technikum-wien.at>
*/
require_once("../../../config/cis.config.inc.php");
require_once('../../../include/basis_db.class.php');
require_once("../../../include/gebiet.class.php");
require_once('../../../include/functions.inc.php');
require_once("../../../include/benutzerberechtigung.class.php");
require_once("../../../include/studiengang.class.php");
if (!$db = new basis_db())
die('Fehler beim Oeffnen der Datenbankverbindung');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Testool Fragen Übersicht</title>
<link href="../../../skin/style.css.php" rel="stylesheet" type="text/css">
<link href="../../../skin/tablesort.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="../../../include/js/jquery1.9.min.js"></script>
<script type="text/javascript">
function deleteGebiet(id)
{
if(confirm("Wollen Sie dieses Gebiet wirklich löschen?"))
{
$("#data").html('<form action="uebersichtGebiete.php" name="sendform" id="sendform" method="POST"><input type="hidden" name="action" value="deleteGebiet" /><input type="hidden" name="id" value="'+id+'" /></form>');
document.sendform.submit();
}
return false;
}
$(document).ready(function()
{
$("#t1").tablesorter(
{
sortList: [[3,0]],
widgets: ["zebra"]
});
});
</script>
</head>
<body>
<h1>Gebiete Übersicht</h1>
<div id="data"></div>
<?php
$user = get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
if(!$rechte->isBerechtigt('basis/testtool', null, 's'))
die('<span class="error">Sie haben keine Berechtigung für diese Seite</span>');
if(isset($_POST['action']) && $_POST['action']=='deleteGebiet')
{
if(!isset($_POST['id']) || !is_numeric($_POST['id']))
die('Falsche Parameteruebergabe');
if(!$rechte->isBerechtigt('basis/testtool', null, 'suid'))
die('<span class="error">Sie haben keine Berechtigung für diesen Vorgang</span>');
$id = $_POST['id'];
$gebiet = new gebiet();
if(!$gebiet->delete($id))
echo '<span class="error">'.$gebiet->errormsg.'</span>';
}
$gebiet = new gebiet();
$gebiet->getAll();
$studiengang = new studiengang();
$studiengang->getAll('typ, kurzbz',false);
echo '<table id="t1" class="tablesorter">
<thead>
<tr>
<th>Action</th>
<th>ID</th>
<th>Kurzbz</th>
<th>Bezeichnung</th>
<th>Beschreibung</th>
<th>Zeit</th>
<th>Multipleresonse</th>
<th>Levelgleichverteilung</th>
<th>Ablauf</th>
</tr>
</thead>
<tbody>';
foreach($gebiet->result as $row_gebiet)
{
$ablauf = new gebiet();
$ablauf->loadAblaufGebiet($row_gebiet->gebiet_id);
echo '<tr>
<td>
<a href="edit_gebiet.php?gebiet_id='.$row_gebiet->gebiet_id.'"><img src="../../../skin/images/edit.png" title="Edit" height="15px"/></a>
<a href="#Delete" onclick="return deleteGebiet(\''.$row_gebiet->gebiet_id.'\');"><img src="../../../skin/images/delete.png" title="Delete" height="15px"/></a></td>
<td>'.$row_gebiet->gebiet_id.'</td>
<td>'.$row_gebiet->kurzbz.'</td>
<td>'.$row_gebiet->bezeichnung.'</td>
<td>'.$row_gebiet->beschreibung.'</td>
<td>'.$row_gebiet->zeit.'</td>
<td>'.($row_gebiet->multipleresponse?'Ja':'Nein').'</td>
<td>'.($row_gebiet->levelgleichverteilung?'Ja':'Nein').'</td>
<td>';
foreach($ablauf->result as $row_ablauf)
{
echo $studiengang->kuerzel_arr[$row_ablauf->studiengang_kz].'('.$row_ablauf->semester.') ';
}
echo '</td>
</tr>';
}
echo '</table>';
?>
</body>
+128 -96
View File
@@ -36,7 +36,7 @@ class frage extends basis_db
public $demo;
public $level;
public $kategorie_kurzbz;
public $sprache;
public $audio;
public $text;
@@ -45,12 +45,12 @@ class frage extends basis_db
public $prueflingfrage_id;
public $begintime;
public $endtime;
public $insertamum;
public $updateamum;
public $insertvon;
public $updatevon;
// ErgebnisArray
public $result=array();
public $num_rows=0;
@@ -63,7 +63,7 @@ class frage extends basis_db
public function __construct($frage_id=null)
{
parent::__construct();
if(!is_null($frage_id))
$this->load($frage_id);
}
@@ -73,13 +73,13 @@ class frage extends basis_db
* @param $frage_id ID der Frage die geladen werden soll
*/
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=".$this->db_add_param($frage_id, FHC_INTEGER);
if($this->db_query($qry))
@@ -96,7 +96,7 @@ class frage extends basis_db
$this->insertamum = $row->insertamum;
$this->insertvon = $row->insertvon;
$this->level = $row->level;
return true;
}
else
@@ -136,7 +136,7 @@ class frage extends basis_db
if($this->new) //Wenn new true ist dann ein INSERT absetzen ansonsten ein UPDATE
{
$qry = 'BEGIN;INSERT INTO testtool.tbl_frage (kategorie_kurzbz, gebiet_id, level, nummer, demo,
$qry = 'BEGIN;INSERT INTO testtool.tbl_frage (kategorie_kurzbz, gebiet_id, level, nummer, demo,
insertamum, insertvon, updateamum, updatevon) VALUES('.
$this->db_add_param($this->kategorie_kurzbz).','.
$this->db_add_param($this->gebiet_id, FHC_INTEGER).','.
@@ -159,7 +159,7 @@ class frage extends basis_db
' updatevon='.$this->db_add_param($this->updatevon).
" WHERE frage_id=".$this->db_add_param($this->frage_id, FHC_INTEGER, false).";";
}
if($this->db_query($qry))
{
if($this->new)
@@ -173,21 +173,21 @@ class frage extends basis_db
$this->db_query('COMMIT');
return true;
}
else
else
{
$this->errormsg = 'Fehler beim Lesen der Sequence';
$this->db_query('ROLLBACK');
return false;
}
}
else
else
{
$this->errormsg = 'Fehler beim Lesen der Sequence';
$this->db_query('ROLLBACK');
return false;
}
}
else
else
{
return true;
}
@@ -229,7 +229,7 @@ class frage extends basis_db
' updatevon='.$this->db_add_param($this->updatevon).
" WHERE frage_id=".$this->db_add_param($this->frage_id, FHC_INTEGER, false)." AND sprache=".$this->db_add_param($this->sprache).";";
}
if($this->db_query($qry))
{
return true;
@@ -250,7 +250,7 @@ class frage extends basis_db
*/
public function getFragen($gebiet_id, $nummer)
{
$qry = "SELECT * FROM testtool.tbl_frage
$qry = "SELECT * FROM testtool.tbl_frage
WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." AND nummer=".$this->db_add_param($nummer);
if($this->db_query($qry))
@@ -258,18 +258,18 @@ class frage extends basis_db
while($row = $this->db_fetch_object())
{
$obj = new frage();
$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 = $this->db_parse_bool($row->demo);
$this->result[] = $obj;
}
return true;
return true;
}
else
{
@@ -277,7 +277,7 @@ class frage extends basis_db
return false;
}
}
/**
* Liefert die Fragen eines Gebietes
*
@@ -286,7 +286,7 @@ class frage extends basis_db
*/
public function getFragenGebiet($gebiet_id)
{
$qry = "SELECT * FROM testtool.tbl_frage
$qry = "SELECT * FROM testtool.tbl_frage
WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." ORDER BY nummer";
if($this->db_query($qry))
@@ -294,18 +294,18 @@ class frage extends basis_db
while($row = $this->db_fetch_object())
{
$obj = new frage();
$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 = $this->db_parse_bool($row->demo);
$this->result[] = $obj;
}
return true;
return true;
}
else
{
@@ -328,26 +328,26 @@ class frage extends basis_db
{
if($demo)
{
$qry = "SELECT frage_id FROM testtool.tbl_frage
WHERE tbl_frage.gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)."
$qry = "SELECT frage_id FROM testtool.tbl_frage
WHERE tbl_frage.gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)."
AND demo ";
if(!is_null($frage_id))
$qry.=" AND nummer<(SELECT nummer FROM testtool.tbl_frage WHERE frage_id=".$this->db_add_param($frage_id, FHC_INTEGER).")";
$qry .= " ORDER BY nummer DESC LIMIT 1";
}
else
else
{
$qry = "SELECT frage_id FROM testtool.tbl_pruefling_frage JOIN testtool.tbl_frage USING(frage_id)
WHERE
tbl_frage.gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." AND
$qry = "SELECT frage_id FROM testtool.tbl_pruefling_frage JOIN testtool.tbl_frage USING(frage_id)
WHERE
tbl_frage.gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." AND
tbl_pruefling_frage.pruefling_id=".$this->db_add_param($pruefling_id, FHC_INTEGER)." AND
NOT demo ";
if(!is_null($frage_id))
$qry.=" AND tbl_pruefling_frage.nummer>(SELECT nummer FROM testtool.tbl_pruefling_frage WHERE pruefling_id=".$this->db_add_param($pruefling_id, FHC_INTEGER)." AND frage_id=".$this->db_add_param($frage_id, FHC_INTEGER)." LIMIT 1)";
elseif(is_null($frage_id) && $levelgebiet)
$qry.=" AND tbl_pruefling_frage.endtime is null ";
$qry.="ORDER BY tbl_pruefling_frage.nummer ASC LIMIT 1";
}
@@ -361,7 +361,7 @@ class frage extends basis_db
else
return false;
}
/**
* Laedt die Frage in der angegebenen Sprache
*
@@ -373,7 +373,7 @@ class frage extends basis_db
{
$qry = "SELECT * FROM testtool.tbl_frage_sprache JOIN testtool.tbl_frage USING(frage_id)
WHERE frage_id=".$this->db_add_param($frage_id, FHC_INTEGER)." AND sprache=".$this->db_add_param($sprache);
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
@@ -387,26 +387,26 @@ class frage extends basis_db
$this->insertvon = $row->insertvon;
$this->updateamum = $row->updateamum;
$this->updatevon = $row->updatevon;
$this->level = $row->level;
$this->demo = $this->db_parse_bool($row->demo);
$this->nummer = $row->nummer;
return true;
}
else
else
{
$this->errormsg = 'Fehler beim Laden der Frage';
return false;
}
}
else
else
{
$this->errormsg = 'Fehler beim Laden der Frage';
return false;
}
}
/**
* Liefert das naechste Level zu dem noch Fragen fehlen
*
@@ -420,10 +420,10 @@ class frage extends basis_db
if($row>0)
return $key;
}
return null;
}
/**
* Generiert den Fragenpool fuer den Pruefling bzw
* die naechste Frage bei gelevelten Gebieten
@@ -434,7 +434,7 @@ class frage extends basis_db
public function generateFragenpool($pruefling_id, $gebiet_id)
{
$gebiet = new gebiet($gebiet_id);
//Bei Levelgesteuerten Fragen wird nur die erste Frage angelegt
if($gebiet->level_start!='')
{
@@ -454,10 +454,10 @@ class frage extends basis_db
}
$maxfragen=1;
}
else
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=".$this->db_add_param($gebiet_id, FHC_INTEGER);
if($this->db_query($qry))
@@ -467,23 +467,23 @@ class frage extends basis_db
$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
$qry = "SELECT level, count(*) as anzahl FROM testtool.tbl_frage
WHERE NOT demo AND gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)."
GROUP BY level
ORDER BY level";
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
@@ -491,7 +491,7 @@ class frage extends basis_db
$level[$row->level]=round(($row->anzahl/$fragengesamt)*$maxfragen);
}
}
// Von jedem Gebiet muss mindestens eine Frage kommen
foreach ($level as $key=>$row)
{
@@ -502,9 +502,9 @@ class frage extends basis_db
}
}
}
$this->db_query('BEGIN;');
while($maxfragen>0)
{
//Bei levelgleichverteilung das Level der naechsten Frage holen
@@ -518,20 +518,20 @@ class frage extends basis_db
{
$nextlevel=null;
}
$this->frage_id=$this->getNewFrage($gebiet_id, $pruefling_id, $nextlevel);
if($this->frage_id=='')
break;
$this->pruefling_id=$pruefling_id;
//hoechste Nummer holen
$qry = "SELECT
$qry = "SELECT
tbl_pruefling_frage.nummer
FROM
testtool.tbl_pruefling_frage JOIN testtool.tbl_frage USING(frage_id)
WHERE
WHERE
tbl_frage.gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." AND
tbl_pruefling_frage.pruefling_id=".$this->db_add_param($pruefling_id, FHC_INTEGER)."
ORDER BY nummer DESC LIMIT 1;";
@@ -539,7 +539,7 @@ class frage extends basis_db
{
if($row = $this->db_fetch_object())
$this->nummer = $row->nummer+1;
else
else
$this->nummer = 1;
}
else
@@ -548,7 +548,7 @@ class frage extends basis_db
$this->db_query('ROLLBACK');
return false;
}
$this->begintime='';
$this->endtime='';
@@ -558,14 +558,14 @@ class frage extends basis_db
$this->db_query('ROLLBACK');
return false;
}
$maxfragen--;
}
$this->db_query('COMMIT;');
return true;
}
/**
* Laedt eine Prueflingfrage
*
@@ -579,7 +579,7 @@ class frage extends basis_db
$this->errormsg = 'prueflingfrage_id ist ungueltig';
return false;
}
$qry = "SELECT * FROM testtool.tbl_pruefling_frage WHERE prueflingfrage_id=".$this->db_add_param($prueflingfrage_id, FHC_INTEGER);
if($this->db_query($qry))
{
@@ -591,22 +591,22 @@ class frage extends basis_db
$this->nummer = $row->nummer;
$this->begintime = $row->begintime;
$this->endtime = $row->endtime;
return true;
}
else
else
{
$this->errormsg = 'Es wurde keine PrueflingFrage mit der uebergebenen ID gefunden';
return false;
}
}
else
else
{
$this->errormsg = 'Fehler beim Laden der PrueflingFrage';
return false;
}
}
/**
* Laedt eine Prueflingfrage
*
@@ -621,15 +621,15 @@ class frage extends basis_db
$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=".$this->db_add_param($pruefling_id, FHC_INTEGER)." AND frage_id=".$this->db_add_param($frage_id, FHC_INTEGER);
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
@@ -640,21 +640,21 @@ class frage extends basis_db
$this->nummer = $row->nummer;
$this->begintime = $row->begintime;
$this->endtime = $row->endtime;
return true;
}
else
else
{
return false;
}
}
else
else
{
$this->errormsg = 'Fehler beim Laden der PrueflingFrage';
return false;
}
}
/**
* Prueft die Daten vor dem Speichern in die Tabelle tbl_pruefling_frage
*
@@ -666,13 +666,13 @@ class frage extends basis_db
$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;
return false;
}
if(!is_numeric($this->nummer))
{
$this->errormsg = 'Nummer ist ungueltig';
@@ -680,7 +680,7 @@ class frage extends basis_db
}
return true;
}
/**
* Speichert einen Eintrag in der Tabelle tbl_pruefling_frage
*
@@ -695,7 +695,7 @@ class frage extends basis_db
if(is_null($new))
$new = $this->new;
if($new)
{
$qry = 'INSERT INTO testtool.tbl_pruefling_frage(pruefling_id, frage_id, nummer, begintime, endtime) VALUES('.
@@ -705,7 +705,7 @@ class frage extends basis_db
$this->db_add_param($this->begintime).','.
$this->db_add_param($this->endtime).');';
}
else
else
{
$qry = 'UPDATE testtool.tbl_pruefling_frage SET'.
' pruefling_id='.$this->db_add_param($this->pruefling_id, FHC_INTEGER).','.
@@ -715,18 +715,18 @@ class frage extends basis_db
' endtime='.$this->db_add_param($this->endtime).
" WHERE prueflingfrage_id=".$this->db_add_param($this->prueflingfrage_id, FHC_INTEGER, false);
}
if($this->db_query($qry))
{
return true;
}
else
else
{
$this->errormsg = 'Fehler beim Speichern in tbl_pruefling_frage';
return false;
}
}
/**
* Sucht eine neue Frage fuer einen Pruefling
*
@@ -738,35 +738,35 @@ class frage extends basis_db
{
$gebiet = new gebiet($gebiet_id);
$pruefling = new pruefling();
//Frage suchen die dem pruefling noch nicht zugeordnet ist
$qry = "SELECT frage_id FROM testtool.tbl_frage
WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." AND
frage_id NOT IN (SELECT frage_id FROM testtool.tbl_pruefling_frage
$qry = "SELECT frage_id FROM testtool.tbl_frage
WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." AND
frage_id NOT IN (SELECT frage_id FROM testtool.tbl_pruefling_frage
WHERE pruefling_id=".$this->db_add_param($pruefling_id, FHC_INTEGER, false)."
)
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);
$level2 = $pruefling->getPrueflingLevel($pruefling_id, $gebiet_id);
$qry.=" AND level=".$this->db_add_param($level2);
}
// Bei Levelgleichverteilung wird der Level mituebergeben
if(!is_null($level))
{
$qry.=" AND level=".$this->db_add_param($level);
}
//Sortierung
if($gebiet->zufallfrage)
$qry .= " ORDER BY random()";
else
else
$qry .= " ORDER BY nummer ASC";
$qry .= " LIMIT 1";
if($this->db_query($qry))
@@ -775,17 +775,49 @@ class frage extends basis_db
{
return $row->frage_id;
}
else
else
{
$this->errormsg = 'Es gibt keine Fragen die den Kriterien entsprechen';
return false;
}
}
else
else
{
$this->errormsg = 'Fehler beim Holen der Frage';
return false;
}
}
public function delete($frage_id)
{
$qry = "SELECT * FROM
testtool.tbl_antwort
JOIN testtool.tbl_vorschlag USING(vorschlag_id)
WHERE tbl_vorschlag.frage_id=".$this->db_add_param($frage_id, FHC_INTEGER);
if($result = $this->db_query($qry))
{
if($this->db_num_rows($result)>0)
{
$this->errormsg = 'Frage kann nicht gelöscht werden da bereits Antworten vorhanden sind';
return false;
}
}
$qry = "
DELETE FROM testtool.tbl_vorschlag_sprache WHERE vorschlag_id IN (SELECT vorschlag_id FROM testtool.tbl_vorschlag WHERE frage_id=".$this->db_add_param($frage_id, FHC_INTEGER).");
DELETE FROM testtool.tbl_vorschlag WHERE frage_id=".$this->db_add_param($frage_id, FHC_INTEGER).";
DELETE FROM testtool.tbl_frage_sprache WHERE frage_id=".$this->db_add_param($frage_id, FHC_INTEGER).";
DELETE FROM testtool.tbl_frage WHERE frage_id=".$this->db_add_param($frage_id, FHC_INTEGER);
if($this->db_query($qry))
{
return true;
}
else
{
$this->errormsg = 'Fehler beim loeschen der Frage';
return false;
}
}
}
?>
+226 -77
View File
@@ -26,7 +26,7 @@
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
class gebiet extends basis_db
class gebiet extends basis_db
{
//Tabellenspalten
public $gebiet_id;
@@ -48,7 +48,7 @@ class gebiet extends basis_db
public $insertvon;
public $updateamum;
public $updatevon;
// ErgebnisArray
public $result=array();
public $new;
@@ -60,7 +60,7 @@ class gebiet extends basis_db
public function __construct($gebiet_id=null)
{
parent::__construct();
if(!is_null($gebiet_id))
$this->load($gebiet_id);
}
@@ -98,7 +98,7 @@ class gebiet extends basis_db
$this->updateamum = $row->updateamum;
$this->updatevon = $row->updatevon;
$this->antwortenprozeile = $row->antwortenprozeile;
return true;
}
else
@@ -113,7 +113,7 @@ class gebiet extends basis_db
return false;
}
}
/**
* Prueft die Variablen vor dem Speichern
* auf Gueltigkeit.
@@ -184,15 +184,15 @@ class gebiet extends basis_db
{
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,
$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, antwortenprozeile, insertamum, insertvon , updateamum, updatevon) VALUES('.
$this->db_add_param($this->kurzbz).','.
$this->db_add_param($this->bezeichnung).','.
@@ -235,7 +235,7 @@ class gebiet extends basis_db
' updatevon='.$this->db_add_param($this->updatevon).
" WHERE gebiet_id=".$this->db_add_param($this->gebiet_id, FHC_INTEGER, false).";";
}
if($this->db_query($qry))
{
//aktuelle ID aus der Sequence holen
@@ -250,14 +250,14 @@ class gebiet extends basis_db
$this->db_query('COMMIT');
return true;
}
else
else
{
$this->errormsg = 'Fehler beim Lesen der Sequence';
$this->db_query('ROLLBACK;');
return false;
}
}
else
else
{
$this->errormsg = 'Fehler beim Lesen der Sequence';
$this->db_query('ROLLBACK');
@@ -273,7 +273,7 @@ class gebiet extends basis_db
return false;
}
}
/**
* prueft das Gebiet auf Gueltigkeit
* (diverse Plausichecks)
@@ -284,19 +284,19 @@ class gebiet extends basis_db
{
$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!='')
{
@@ -312,9 +312,9 @@ class gebiet extends basis_db
}
}
}
//Pruefen ob jede Fragen mindestens 2 Vorschlaege hat
$qry = "SELECT frage_id, nummer FROM testtool.tbl_frage
$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=".$this->db_add_param($gebiet_id, FHC_INTEGER)." AND NOT demo;";
if($this->db_query($qry))
@@ -337,7 +337,7 @@ class gebiet extends basis_db
}
}
}
// Wenn Levelgleichverteilung true ist, muss maxfragen mindestens so gross wie die Anzahl der level sein
if($this->levelgleichverteilung)
{
@@ -351,13 +351,13 @@ class gebiet extends basis_db
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
// 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))
{
@@ -365,10 +365,10 @@ class gebiet extends basis_db
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)
FROM testtool.tbl_frage JOIN testtool.tbl_vorschlag USING(frage_id)
WHERE punkte>0 AND not demo AND gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)."
GROUP BY frage_id, level) as a
GROUP BY level, punkte ) as b
GROUP BY frage_id, level) as a
GROUP BY level, punkte ) as b
GROUP BY level) as c
WHERE c.anzahl>1";
if($this->db_query($qry))
@@ -379,33 +379,33 @@ class gebiet extends basis_db
}
}
}
// 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";
}
// Pruefung, ob eine Frage mehrere gleiche Antworten oder gleiche Bilder hat
$qry = "SELECT text AS antwort, sprache, frage_id, tbl_frage.nummer, COUNT(text) AS Anz
FROM testtool.tbl_vorschlag_sprache
FROM testtool.tbl_vorschlag_sprache
JOIN testtool.tbl_vorschlag USING (vorschlag_id)
JOIN testtool.tbl_frage USING (frage_id)
WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)."
AND (bild IS NULL AND audio IS NULL)
GROUP BY antwort,frage_id,tbl_frage.nummer,sprache
HAVING ( COUNT(text) > 1 )
UNION
SELECT bild AS antwort, sprache, frage_id, tbl_frage.nummer, COUNT(bild) AS Anz
FROM testtool.tbl_vorschlag_sprache
FROM testtool.tbl_vorschlag_sprache
JOIN testtool.tbl_vorschlag USING (vorschlag_id)
JOIN testtool.tbl_frage USING (frage_id)
WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)."
@@ -419,13 +419,13 @@ class gebiet extends basis_db
$this->errormsg .= "Frage Nummer $row->nummer (ID: $row->frage_id) Sprache $row->sprache hat mehrere gleiche Antworten.\n";
}
}
if($this->errormsg=='')
return true;
else
else
return false;
}
/**
* Holt alle Gebiete aus der DB
*
@@ -434,13 +434,13 @@ class gebiet extends basis_db
public function getAll()
{
$qry = 'SELECT * FROM testtool.tbl_gebiet ORDER BY bezeichnung';
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$obj = new gebiet();
$obj->gebiet_id = $row->gebiet_id;
$obj->kurzbz = $row->kurzbz;
$obj->bezeichnung = $row->bezeichnung;
@@ -461,19 +461,19 @@ class gebiet extends basis_db
$obj->updateamum = $row->updateamum;
$obj->updatevon = $row->updatevon;
$obj->antwortenprozeile = $row->antwortenprozeile;
$this->result[] = $obj;
}
return true;
}
else
else
{
$this->errormsg = 'Fehler in Fkt getAll()';
return false;
}
}
/**
* Berechnet die maxpunkte fuer das Gebiet
*
@@ -483,10 +483,10 @@ class gebiet extends basis_db
{
if(!$this->load($gebiet_id))
return false;
if(!$this->levelgleichverteilung && ($this->level_start=='' || $this->level_start==0))
{
$qry = "SELECT sum(punkte) as max
$qry = "SELECT sum(punkte) as max
FROM testtool.tbl_vorschlag JOIN testtool.tbl_frage USING(frage_id)
WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." AND punkte>0 AND NOT demo";
if($this->maxfragen!='' && $this->maxfragen>0)
@@ -500,11 +500,11 @@ class gebiet extends basis_db
SELECT round((anz::decimal/fragengesamt::decimal)*$this->maxfragen*punkte) as punkteprolevel
FROM
(
SELECT
level, punkte, count(*) as anz,
(SELECT count(*) FROM testtool.tbl_frage
SELECT
level, punkte, count(*) as anz,
(SELECT count(*) FROM testtool.tbl_frage
WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER).") as fragengesamt
FROM
FROM
testtool.tbl_frage
JOIN testtool.tbl_vorschlag USING(frage_id)
WHERE
@@ -522,11 +522,11 @@ class gebiet extends basis_db
SELECT round((anz::decimal/fragengesamt::decimal)*$this->maxfragen*punkte) as punkteprolevel
FROM
(
SELECT
level, punkte, count(*) as anz,
(SELECT count(*) FROM testtool.tbl_frage
SELECT
level, punkte, count(*) as anz,
(SELECT count(*) FROM testtool.tbl_frage
WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER).") as fragengesamt
FROM
FROM
testtool.tbl_frage
JOIN testtool.tbl_vorschlag USING(frage_id)
WHERE
@@ -539,19 +539,19 @@ class gebiet extends basis_db
elseif($this->level_start!='')
{
//Maximalpunkte fuer geleveltes Gebiet ermitteln
//Punkte pro Level holen
$qry = "
SELECT level, punkte
SELECT level, punkte
FROM
(
SELECT level, frage_id, sum(punkte) as punkte
SELECT level, frage_id, sum(punkte) as punkte
FROM testtool.tbl_frage JOIN testtool.tbl_vorschlag USING(frage_id)
WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." AND punkte>0 AND level>=".$this->db_add_param($this->level_start)." AND NOT demo
WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." AND punkte>0 AND level>=".$this->db_add_param($this->level_start)." AND NOT demo
GROUP BY level, frage_id
) as a
) as a
GROUP by level, punkte ORDER BY level";
if($this->db_query($qry))
{
$maxfragen = $this->maxfragen;
@@ -572,26 +572,26 @@ class gebiet extends basis_db
return $maxpunkte;
}
}
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
return $row->max;
}
else
else
{
$this->errormsg = 'Fehler beim Ermitteln der Maximalpunkte';
return false;
}
}
else
else
{
$this->errormsg = 'Fehler beim Ermitteln der Maximalpunkte';
return false;
}
}
/**
* Prueft ob das Gebiet bereits gestartet wurde. Wahlweise pruefling_id oder prestudent_id
*
@@ -603,7 +603,7 @@ class gebiet extends basis_db
public function isGestartet($gebiet_id, $pruefling_id=null, $prestudent_id=null)
{
$this->errormsg='';
if(!is_numeric($gebiet_id) || $gebiet_id=='')
{
$this->errormsg = 'Gebiet_id muss eine gueltige Zahl sein';
@@ -619,40 +619,189 @@ class gebiet extends basis_db
$this->errormsg = 'Prestudent_id muss eine gueltige Zahl sein';
return false;
}
$qry = ' SELECT
begintime
FROM
$qry = ' SELECT
begintime
FROM
testtool.tbl_pruefling_frage
JOIN
JOIN
testtool.tbl_pruefling USING (pruefling_id)
JOIN
JOIN
testtool.tbl_frage USING (frage_id)
WHERE ';
if (!is_null($pruefling_id))
$qry.=' pruefling_id='.$this->db_add_param($pruefling_id, FHC_INTEGER);
else
$qry.=' prestudent_id='.$this->db_add_param($prestudent_id, FHC_INTEGER);
$qry.=' AND
$qry.=' AND
gebiet_id='.$this->db_add_param($gebiet_id, FHC_INTEGER).'
AND
AND
begintime IS NOT NULL';
if($result = $this->db_query($qry))
{
if($this->db_fetch_object($result))
return true;
return true;
else
{
return false;
{
return false;
}
}
else
{
$this->errormsg = 'Fehler bei der Abfrage aufgetreten';
return false;
$this->errormsg = 'Fehler bei der Abfrage aufgetreten';
return false;
}
}
/**
* Laedt die Ablaufe die zu einem Gebiet zugeordnet sind
* @param $gebiet_id
* @return boolean true wenn ok, false im Fehlerfall
*/
public function loadAblaufGebiet($gebiet_id)
{
$qry = "SELECT * FROM testtool.tbl_ablauf WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER);
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$obj = new stdClass();
$obj->ablauf_id = $row->ablauf_id;
$obj->studiengang_kz = $row->studiengang_kz;
$obj->gebiet_id = $row->gebiet_id;
$obj->reihung = $row->reihung;
$obj->gewicht = $row->gewicht;
$obj->semester = $row->semester;
$obj->ablauf_vorgaben_id = $row->ablauf_vorgaben_id;
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->updateamum = $row->updateamum;
$obj->updatevon = $row->updatevon;
$this->result[] = $obj;
}
return false;
}
}
/**
* Loescht ein Gebiet und den zugeordneten Ablauf
* @param $gebiet_id
* @return boolean true wenn ok, false im Fehlerfall
*/
public function delete($gebiet_id)
{
$qry = "SELECT * FROM testtool.tbl_frage WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER);
if($result = $this->db_query($qry))
{
if($this->db_num_rows($result)>0)
{
$this->errormsg = 'Bitte entfernen Sie zuerst alle Fragen aus dem Gebiet';
return false;
}
}
$qry = "
DELETE FROM testtool.tbl_ablauf WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)."
DELETE FROM testtool.tbl_gebiet WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER);
if($this->db_query($qry))
{
return true;
}
else
{
$this->errormsg = 'Fehler beim Loeschen des Gebiets';
return false;
}
}
/**
* Loescht einen Ablauf
* @param $ablauf_id
* @return boolean true wenn ok, false im Fehlerfall
*/
public function deleteAblaufZuordnung($ablauf_id)
{
$qry = "DELETE FROM testtool.tbl_ablauf WHERE ablauf_id=".$this->db_add_param($ablauf_id, FHC_INTEGER);
if($this->db_query($qry))
{
return true;
}
else
{
$this->errormsg = 'Fehler beim Entfernen des Ablaufs';
return false;
}
}
/**
* Laedt alle AblaufVorabe Eintraege
* @return boolean true wenn ok, false im Fehlerfall
*/
public function getAblaufVorgaben()
{
$qry = "SELECT * FROM testtool.tbl_ablauf_vorgaben ORDER BY studiengang_kz";
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$obj = new stdClass();
$obj->ablauf_vorgaben_id = $row->ablauf_vorgaben_id;
$obj->studiengang_kz = $row->studiengang_kz;
$obj->sprache = $row->sprache;
$obj->sprachwahl = $this->db_parse_bool($row->sprachwahl);
$obj->content_id = $row->content_id;
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Speichert den Ablauf
*/
public function saveAblauf()
{
if($this->new)
{
$qry = "INSERT INTO testtool.tbl_ablauf (studiengang_kz, gebiet_id, reihung,gewicht,semester,ablauf_vorgaben_id, insertamum, insertvon) VALUES(".
$this->db_add_param($this->studiengang_kz, FHC_INTEGER).','.
$this->db_add_param($this->gebiet_id, FHC_INTEGER).','.
$this->db_add_param($this->reihung, FHC_INTEGER).','.
$this->db_add_param($this->gewicht, FHC_INTEGER).','.
$this->db_add_param($this->semester, FHC_INTEGER).','.
$this->db_add_param($this->ablauf_vorgaben_id, FHC_INTEGER).','.
$this->db_add_param($this->insertamum).','.
$this->db_add_param($this->insertvon).');';
}
else
{
$this->errormsg='not implemented';
return false;
}
if($this->db_query($qry))
{
return true;
}
else
{
$this->errormsg = 'Fehler beim Speichern der Daten';
return true;
}
}
}
?>