Reihungstests werden nun explizit freigeschaltet anstatt eines Logins mit Zugangscode

This commit is contained in:
Andreas Österreicher
2012-06-11 13:30:59 +00:00
parent a6723136d9
commit 77a4d3a8c6
5 changed files with 128 additions and 44 deletions
+4 -5
View File
@@ -51,17 +51,17 @@ if(isset($_POST['tag']) && isset($_POST['monat']) && isset($_POST['jahr']))
$gebdatum='';
}
if (isset($_POST['prestudent']) && isset($gebdatum) && isset($_POST['zugangscode']))
if (isset($_POST['prestudent']) && isset($gebdatum))
{
$ps=new prestudent($_POST['prestudent']);
//Geburtsdatum Pruefen
if ($gebdatum==$ps->gebdatum)
{
//Zugangscode fuer zugeteilten Reihungstest pruefen
//Freischaltung fuer zugeteilten Reihungstest pruefen
$rt = new reihungstest();
if($rt->load($ps->reihungstest_id))
{
if($_POST['zugangscode']==$rt->zugangscode)
if($rt->freigeschaltet)
{
$pruefling = new pruefling();
if($pruefling->getPruefling($ps->prestudent_id))
@@ -90,7 +90,7 @@ if (isset($_POST['prestudent']) && isset($gebdatum) && isset($_POST['zugangscode
}
else
{
echo '<span class="error">Der angegebene Zugangscode ist falsch</span>';
echo '<span class="error">Der zuteilte Reihungstest ist noch nicht freigeschalten</span>';
}
}
else
@@ -272,7 +272,6 @@ if(isset($_POST['save']) && isset($_SESSION['prestudent_id']))
for($i=date('Y');$i>date('Y')-99;$i--)
echo '<OPTION value="'.$i.'">'.$i.'</OPTION>';
echo '</SELECT>';
echo ' Zugangscode: <input name="zugangscode" type="text" size="6" />';
echo '&nbsp; <INPUT type="submit" value="Login" />';
echo '</form>';
+8 -7
View File
@@ -43,7 +43,7 @@ class reihungstest extends basis_db
public $insertvon; // bigint
public $updateamum; // timestamp
public $updatevon; // bigint
public $zugangscode; // varchar(16)
public $freigeschaltet=false; // boolean
/**
* Konstruktor
@@ -87,7 +87,7 @@ class reihungstest extends basis_db
$this->insertvon = $row->insertvon;
$this->updateamum = $row->updateamum;
$this->updatevon = $row->updatevon;
$this->zugangscode = $row->zugangscode;
$this->freigeschaltet = $this->db_parse_bool($row->freigeschaltet);
return true;
}
else
@@ -132,7 +132,7 @@ class reihungstest extends basis_db
$obj->insertvon = $row->insertvon;
$obj->updateamum = $row->updateamum;
$obj->updatevon = $row->updatevon;
$obj->zugangscode = $row->zugangscode;
$obj->freigeschaltet = $this->db_parse_bool($row->freigeschaltet);
$this->result[] = $obj;
}
@@ -189,7 +189,7 @@ class reihungstest extends basis_db
//Neuen Datensatz einfuegen
$qry='BEGIN; INSERT INTO public.tbl_reihungstest (studiengang_kz, ort_kurzbz, anmerkung, datum, uhrzeit,
ext_id, insertamum, insertvon, updateamum, updatevon, zugangscode) VALUES('.
ext_id, insertamum, insertvon, updateamum, updatevon, freigeschaltet) VALUES('.
$this->db_add_param($this->studiengang_kz, FHC_INTEGER).', '.
$this->db_add_param($this->ort_kurzbz).', '.
$this->db_add_param($this->anmerkung).', '.
@@ -198,7 +198,7 @@ class reihungstest extends basis_db
$this->db_add_param($this->ext_id, FHC_INTEGER).', now(), '.
$this->db_add_param($this->insertvon).', now(), '.
$this->db_add_param($this->updatevon).','.
'trunc(random()*100000));';
$this->db_add_param($this->freigeschaltet, FHC_BOOLEAN).');';
}
else
{
@@ -210,7 +210,8 @@ class reihungstest extends basis_db
'uhrzeit='.$this->db_add_param($this->uhrzeit).', '.
'ext_id='.$this->db_add_param($this->ext_id, FHC_INTEGER).', '.
'updateamum= now(), '.
'updatevon='.$this->db_add_param($this->updatevon).' '.
'updatevon='.$this->db_add_param($this->updatevon).', '.
'freigeschaltet='.$this->db_add_param($this->freigeschaltet, FHC_BOOLEAN).' '.
'WHERE reihungstest_id='.$this->db_add_param($this->reihungstest_id, FHC_INTEGER, false).';';
}
@@ -277,7 +278,7 @@ class reihungstest extends basis_db
$obj->insertvon = $row->insertvon;
$obj->updateamum = $row->updateamum;
$obj->updatevon = $row->updatevon;
$obj->zugangscode = $row->zugangscode;
$obj->freigeschaltet = $this->db_parse_bool($row->freigeschaltet);
$this->result[] = $obj;
}
+52 -7
View File
@@ -3558,18 +3558,17 @@ if(!@$db->db_query("SELECT 1 from public.tbl_preoutgoing LIMIT 1"))
echo 'PreOutgoing Modul hinzugefuegt!<br>';
}
// Zugangscode fuer Reihungstest
if(!@$db->db_query("SELECT zugangscode FROM public.tbl_reihungstest LIMIT 1"))
// Freischaltung fuer Reihungstest
if(!@$db->db_query("SELECT freigeschaltet FROM public.tbl_reihungstest LIMIT 1"))
{
$qry = "
ALTER TABLE public.tbl_reihungstest ADD COLUMN zugangscode varchar(16);
UPDATE public.tbl_reihungstest SET zugangscode=trunc(random()*100000);
ALTER TABLE public.tbl_reihungstest ADD COLUMN freigeschaltet boolean NOT NULL DEFAULT false;
";
if(!$db->db_query($qry))
echo '<strong>public.tbl_reihungstest: '.$db->db_last_error().'</strong><br>';
else
echo 'Tabelle public.tbl_reihungstest Spalte zugangscode hinzugefuegt!<br>';
echo 'Tabelle public.tbl_reihungstest Spalte freigeschaltet hinzugefuegt!<br>';
}
// anmerkungsfelder und stdienrichtung für Outgoing
@@ -3607,6 +3606,52 @@ if(!@$db->db_query("SELECT nummer_myfare FROM wawi.tbl_betriebsmittel LIMIT 1"))
else
echo 'Tabelle wawi.tbl_betriebsmittel Spalte nummer_myfare hinzugefuegt';
}
// View fuer Testtool Auswertung
if(!@$db->db_query("SELECT * FROM testtool.vw_auswertung_kategorie_semester LIMIT 1"))
{
$qry = "
CREATE OR REPLACE testtool.vw_auswertung_kategorie_semester AS
SELECT
tbl_kategorie.kategorie_kurzbz, tbl_person.vorname, tbl_person.nachname,
tbl_person.gebdatum, tbl_person.geschlecht, tbl_prestudent.prestudent_id,
tbl_prestudent.reihungstest_id, tbl_gebiet.gebiet_id,
upper(tbl_studiengang.typ::character varying(1)::text || tbl_studiengang.kurzbz::text) AS stg_kurzbz,
tbl_studiengang.bezeichnung AS stg_bez, tbl_pruefling.registriert, tbl_pruefling.idnachweis,
tbl_pruefling.semester, tbl_pruefling.pruefling_id,
( SELECT sum(tbl_vorschlag.punkte) AS sum
FROM testtool.tbl_vorschlag
JOIN testtool.tbl_antwort USING (vorschlag_id)
JOIN testtool.tbl_frage USING (frage_id)
WHERE testtool.tbl_antwort.pruefling_id = testtool.tbl_pruefling.pruefling_id
AND testtool.tbl_frage.gebiet_id = testtool.tbl_gebiet.gebiet_id
AND testtool.tbl_frage.kategorie_kurzbz::text = testtool.tbl_kategorie.kategorie_kurzbz::text
) AS punkte
FROM testtool.tbl_pruefling
JOIN testtool.tbl_ablauf ON tbl_ablauf.studiengang_kz = tbl_pruefling.studiengang_kz
JOIN testtool.tbl_gebiet USING (gebiet_id)
JOIN testtool.tbl_kategorie USING (gebiet_id)
JOIN public.tbl_prestudent USING (prestudent_id)
JOIN public.tbl_person USING (person_id)
JOIN public.tbl_studiengang ON public.tbl_prestudent.studiengang_kz = public.tbl_studiengang.studiengang_kz;
";
if(!$db->db_query($qry))
echo '<strong>testtool.vw_auswertung_kategorie_semester: '.$db->db_last_error().'</strong><br>';
else
echo 'View testtool.vw_auswertung_kategorie_semester hinzugefuegt';
}
// Gesperrt Attribut fuer Tabelle Gruppe
if(!@$db->db_query("SELECT gesperrt FROM public.tbl_gruppe LIMIT 1"))
{
$qry = "ALTER TABLE public.tbl_gruppe ADD COLUMN gesperrt boolean;";
if(!$db->db_query($qry))
echo '<strong>public.tbl_gruppe: '.$db->db_last_error().'</strong><br>';
else
echo 'Tabelle public.tbl_gruppe Spalte gesperrt hinzugefuegt';
}
echo '<br>';
$tabellen=array(
@@ -3731,7 +3776,7 @@ $tabellen=array(
"public.tbl_firmatag" => array("firma_id","tag","insertamum","insertvon"),
"public.tbl_funktion" => array("funktion_kurzbz","beschreibung","aktiv","fachbereich","semester"),
"public.tbl_geschaeftsjahr" => array("geschaeftsjahr_kurzbz","start","ende","bezeichnung"),
"public.tbl_gruppe" => array("gruppe_kurzbz","studiengang_kz","semester","bezeichnung","beschreibung","sichtbar","lehre","aktiv","sort","mailgrp","generiert","updateamum","updatevon","insertamum","insertvon","ext_id","orgform_kurzbz","gid","content_visible"),
"public.tbl_gruppe" => array("gruppe_kurzbz","studiengang_kz","semester","bezeichnung","beschreibung","sichtbar","lehre","aktiv","sort","mailgrp","generiert","updateamum","updatevon","insertamum","insertvon","ext_id","orgform_kurzbz","gid","content_visible","gesperrt"),
"public.tbl_kontakt" => array("kontakt_id","person_id","kontakttyp","anmerkung","kontakt","zustellung","updateamum","updatevon","insertamum","insertvon","ext_id","standort_id"),
"public.tbl_kontaktmedium" => array("kontaktmedium_kurzbz","beschreibung"),
"public.tbl_kontakttyp" => array("kontakttyp","beschreibung"),
@@ -3759,7 +3804,7 @@ $tabellen=array(
"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","ausstellungsstaat"),
"public.tbl_prestudentstatus" => array("prestudent_id","status_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","zugangscode"),
"public.tbl_reihungstest" => array("reihungstest_id","studiengang_kz","ort_kurzbz","anmerkung","datum","uhrzeit","updateamum","updatevon","insertamum","insertvon","ext_id","freigeschaltet"),
"public.tbl_status" => array("status_kurzbz","beschreibung","anmerkung","ext_id"),
"public.tbl_semesterwochen" => array("semester","studiengang_kz","wochen"),
"public.tbl_sprache" => array("sprache","locale","flagge","index","content","bezeichnung"),
@@ -29,15 +29,12 @@ require_once('../../include/prestudent.class.php');
require_once('../../include/pruefling.class.php');
require_once('../../include/studiengang.class.php');
require_once('../../include/reihungstest.class.php');
require_once('../../include/studiensemester.class.php');
// Studiengang lesen
$s=new studiengang();
$s->getAll('typ, kurzbz', false);
$studiengang=$s->result;
$s=new studiengang();
$s->getAll('typ, kurzbz', false);
$studiengang=$s->result;
if (!$db = new basis_db())
die('Es konnte keine Verbindung zum Server aufgebaut werden.');
@@ -58,10 +55,10 @@ if(isset($_REQUEST['autocomplete']) && $_REQUEST['autocomplete']=='prestudent')
JOIN public.tbl_prestudent USING(person_id)
JOIN public.tbl_studiengang USING(studiengang_kz)
WHERE
lower(nachname) like '%".addslashes(mb_strtolower($search))."%' OR
lower(vorname) like '%".addslashes(mb_strtolower($search))."%' OR
lower(nachname || ' ' || vorname) like '%".addslashes(mb_strtolower($search))."%' OR
lower(vorname || ' ' || nachname) like '%".addslashes(mb_strtolower($search))."%'
lower(nachname) like '%".$db->db_escape(mb_strtolower($search))."%' OR
lower(vorname) like '%".$db->db_escape(mb_strtolower($search))."%' OR
lower(nachname || ' ' || vorname) like '%".$db->db_escape(mb_strtolower($search))."%' OR
lower(vorname || ' ' || nachname) like '%".$db->db_escape(mb_strtolower($search))."%'
";
if($result = $db->db_query($qry))
{
@@ -85,7 +82,6 @@ echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//DE" "http://www
<link rel="stylesheet" href="../../skin/jquery.css" type="text/css"/>
<link rel="stylesheet" href="../../skin/vilesci.css" type="text/css">
<link rel="stylesheet" href="../../include/js/tablesort/table.css" type="text/css">
<script src="../../include/js/tablesort/table.js" type="text/javascript"></script>
<script type="text/javascript" src="../../include/js/jquery.js"></script>
@@ -217,13 +213,13 @@ if(isset($_POST['deleteteilgebiet']))
if($pruefling->pruefling_id=='')
die('Pruefling wurde nicht gefunden');
$qry = "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']."');
$qry = "DELETE FROM testtool.tbl_pruefling_frage where pruefling_id=".$db->db_add_param($pruefling->pruefling_id, FHC_INTEGER)." AND
frage_id IN (SELECT frage_id FROM testtool.tbl_frage WHERE gebiet_id=".$db->db_add_param($_POST['gebiet']).");
DELETE FROM testtool.tbl_antwort
WHERE pruefling_id='$pruefling->pruefling_id' AND
WHERE pruefling_id=".$db->db_add_param($pruefling->pruefling_id)." AND
vorschlag_id IN (SELECT vorschlag_id FROM testtool.tbl_vorschlag WHERE frage_id IN
(SELECT frage_id FROM testtool.tbl_frage WHERE gebiet_id='".$_POST['gebiet']."'));";
(SELECT frage_id FROM testtool.tbl_frage WHERE gebiet_id=".$db->db_add_param($_POST['gebiet'])."));";
if($result = $db->db_query($qry))
{
echo '<b>'.$db->db_affected_rows($result).' Antworten wurden gelöscht</b>';
@@ -244,8 +240,8 @@ if(isset($_POST['delete_all']))
if($pruefling->pruefling_id=='')
die('Pruefling wurde nicht gefunden');
$qry = "DELETE FROM testtool.tbl_pruefling_frage where pruefling_id='$pruefling->pruefling_id';
DELETE FROM testtool.tbl_antwort WHERE pruefling_id='$pruefling->pruefling_id';";
$qry = "DELETE FROM testtool.tbl_pruefling_frage where pruefling_id=".$db->db_add_param($pruefling->pruefling_id).";
DELETE FROM testtool.tbl_antwort WHERE pruefling_id=".$db->db_add_param($pruefling->pruefling_id).";";
if($result = $db->db_query($qry))
@@ -272,7 +268,7 @@ if(isset($_POST['testergebnisanzeigen']) && isset($_POST['prestudent_id']))
JOIN testtool.tbl_pruefling_frage ON (tbl_pruefling.pruefling_id=tbl_pruefling_frage.pruefling_id AND tbl_frage.frage_id =tbl_pruefling_frage.frage_id)
JOIN public.tbl_prestudent USING (prestudent_id)
JOIN public.tbl_person USING (person_id)
WHERE prestudent_id='".$_POST['prestudent_id']."'
WHERE prestudent_id=".$db->db_add_param($_POST['prestudent_id'])."
ORDER BY kurzbz,tbl_pruefling_frage.begintime,nummer";
if($result = $db->db_query($qry))
{
@@ -318,8 +314,8 @@ if(isset($_POST['testergebnisanzeigen']) && isset($_POST['prestudent_id']))
echo '<hr><br>';
if(isset($_POST['savedummystg']) && isset($_POST['stg']))
{
$qry = "UPDATE public.tbl_prestudent SET studiengang_kz='".addslashes($_POST['stg'])."' WHERE prestudent_id='13478';
UPDATE testtool.tbl_pruefling SET studiengang_kz='".addslashes($_POST['stg'])."' WHERE prestudent_id='13478';";
$qry = "UPDATE public.tbl_prestudent SET studiengang_kz=".$db->db_add_param($_POST['stg'])." WHERE prestudent_id='13478';
UPDATE testtool.tbl_pruefling SET studiengang_kz=".$db->db_add_param($_POST['stg'])." WHERE prestudent_id='13478';";
if($db->db_query($qry))
echo '<b>Studiengang geändert!</b><br>';
else
@@ -443,7 +439,7 @@ foreach($stsem->studiensemester as $row)
FROM testtool.tbl_ablauf
JOIN testtool.tbl_gebiet USING (gebiet_id)
JOIN public.tbl_studiengang USING (studiengang_kz)
WHERE studiengang_kz='".$studiengang_kz."'
WHERE studiengang_kz=".$db->db_add_param($studiengang_kz)."
ORDER BY stg,semester,reihung";
}
@@ -517,9 +513,52 @@ else
echo "Kein Eintrag gefunden!";
echo "</tbody></table>";
echo "<br><br>";
echo "</form>";
echo "<br><br>";
echo '<hr>';
echo 'Freigeschaltene Reihungstests:';
if(isset($_GET['action']) && $_GET['action']=='sperren')
{
$rt = new reihungstest();
if($rt->load($_GET['reihungstest_id']))
{
$rt->freigeschaltet=false;
$rt->new=false;
if(!$rt->save())
echo 'Fehler beim Sperren:'.$rt->errormsg;
}
else
{
echo 'Fehler beim Laden des Reihungstests';
}
}
$qry = "SELECT * FROM public.tbl_reihungstest WHERE freigeschaltet ORDER BY datum";
if($result = $db->db_query($qry))
{
echo '<table class="liste">';
echo '<tr>
<th>Stg</th>
<th>Ort</th>
<th>Datum</th>
<th>Uhrzeit</th>
<th>Anmerkung</th>
<th>Action</th>
</tr>';
while($row = $db->db_fetch_object($result))
{
echo '<tr>';
echo '<td>'.$row->studiengang_kz.'</td>';
echo '<td>'.$row->ort_kurzbz.'</td>';
echo '<td>'.$row->datum.'</td>';
echo '<td>'.$row->uhrzeit.'</td>';
echo '<td>'.$row->anmerkung.'</td>';
echo '<td><a href="'.$_SERVER['PHP_SELF'].'?action=sperren&reihungstest_id='.$row->reihungstest_id.'">Sperren</a></td>';
echo '</tr>';
}
echo '</table>';
}
echo '</body>
@@ -249,6 +249,7 @@
$reihungstest->datum = $datum_obj->formatDatum($_POST['datum']);
$reihungstest->uhrzeit = $_POST['uhrzeit'];
$reihungstest->updateamum = date('Y-m-d H:i:s');
$reihungstest->freigeschaltet = isset($_POST['freigeschaltet']);
$reihungstest->updatevon = $user;
if($reihungstest->save())
@@ -401,8 +402,6 @@
echo "<input type='hidden' value='$reihungstest->reihungstest_id' name='reihungstest_id' />";
echo "<table>";
if($reihungstest->zugangscode!='')
echo '<tr><td>Zugangscode:</td><td><b>'.$db->convert_html_chars($reihungstest->zugangscode).'</b></td></tr>';
//Studiengang DropDown
echo "<tr><td>Studiengang</td><td><SELECT name='studiengang_kz'>";
@@ -448,6 +447,7 @@
echo '<tr><td>Anmerkung</td><td><input type="text" name="anmerkung" value="'.$db->convert_html_chars($reihungstest->anmerkung).'"></td></tr>';
echo '<tr><td>Datum</td><td><input type="text" name="datum" value="'.$datum_obj->convertISODate($reihungstest->datum).'"></td></tr>';
echo '<tr><td>Uhrzeit</td><td><input type="text" name="uhrzeit" value="'.$db->convert_html_chars($reihungstest->uhrzeit).'"> (Format: HH:MM:SS)</td></tr>';
echo '<tr><td>Freigeschaltet</td><td><input type="checkbox" name="freigeschaltet" '.($reihungstest->freigeschaltet?'checked="checked"':'').'"></td></tr>';
if(!$neu)
$val = 'Änderung Speichern';
else