From 77a4d3a8c67dac9293dc280e3adf497b9885d755 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Mon, 11 Jun 2012 13:30:59 +0000 Subject: [PATCH] Reihungstests werden nun explizit freigeschaltet anstatt eines Logins mit Zugangscode --- cis/testtool/login.php | 9 +- include/reihungstest.class.php | 15 ++-- system/checksystem.php | 59 +++++++++++-- .../reihungstest_administration.php | 85 ++++++++++++++----- vilesci/stammdaten/reihungstestverwaltung.php | 4 +- 5 files changed, 128 insertions(+), 44 deletions(-) diff --git a/cis/testtool/login.php b/cis/testtool/login.php index 2774293fd..6195f2903 100644 --- a/cis/testtool/login.php +++ b/cis/testtool/login.php @@ -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 'Der angegebene Zugangscode ist falsch'; + echo 'Der zuteilte Reihungstest ist noch nicht freigeschalten'; } } else @@ -272,7 +272,6 @@ if(isset($_POST['save']) && isset($_SESSION['prestudent_id'])) for($i=date('Y');$i>date('Y')-99;$i--) echo ''; echo ''; - echo ' Zugangscode: '; echo '  '; echo ''; diff --git a/include/reihungstest.class.php b/include/reihungstest.class.php index 36001d037..b588b4154 100644 --- a/include/reihungstest.class.php +++ b/include/reihungstest.class.php @@ -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; } diff --git a/system/checksystem.php b/system/checksystem.php index 3ef6f3382..d4fb49ad0 100644 --- a/system/checksystem.php +++ b/system/checksystem.php @@ -3558,18 +3558,17 @@ if(!@$db->db_query("SELECT 1 from public.tbl_preoutgoing LIMIT 1")) echo 'PreOutgoing Modul hinzugefuegt!
'; } -// 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 'public.tbl_reihungstest: '.$db->db_last_error().'
'; else - echo 'Tabelle public.tbl_reihungstest Spalte zugangscode hinzugefuegt!
'; + echo 'Tabelle public.tbl_reihungstest Spalte freigeschaltet hinzugefuegt!
'; } // 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 'testtool.vw_auswertung_kategorie_semester: '.$db->db_last_error().'
'; + 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 'public.tbl_gruppe: '.$db->db_last_error().'
'; + else + echo 'Tabelle public.tbl_gruppe Spalte gesperrt hinzugefuegt'; +} echo '
'; $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"), diff --git a/vilesci/stammdaten/reihungstest_administration.php b/vilesci/stammdaten/reihungstest_administration.php index 04b33baef..fbea142e9 100644 --- a/vilesci/stammdaten/reihungstest_administration.php +++ b/vilesci/stammdaten/reihungstest_administration.php @@ -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 ' - @@ -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 ''.$db->db_affected_rows($result).' Antworten wurden gelöscht'; @@ -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 '

'; 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 'Studiengang geändert!
'; 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 ""; - echo "

"; - echo ""; +echo "

"; +echo '
'; +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 ''; + echo ' + + + + + + + '; + while($row = $db->db_fetch_object($result)) + { + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + } + echo '
StgOrtDatumUhrzeitAnmerkungAction
'.$row->studiengang_kz.''.$row->ort_kurzbz.''.$row->datum.''.$row->uhrzeit.''.$row->anmerkung.'Sperren
'; +} echo ' diff --git a/vilesci/stammdaten/reihungstestverwaltung.php b/vilesci/stammdaten/reihungstestverwaltung.php index 8dad637ed..cc01e8eac 100644 --- a/vilesci/stammdaten/reihungstestverwaltung.php +++ b/vilesci/stammdaten/reihungstestverwaltung.php @@ -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 ""; echo ""; - if($reihungstest->zugangscode!='') - echo ''; //Studiengang DropDown echo "'; echo ''; echo ''; + echo ''; if(!$neu) $val = 'Änderung Speichern'; else
Zugangscode:'.$db->convert_html_chars($reihungstest->zugangscode).'
Studiengang
Anmerkung
Datum
Uhrzeit (Format: HH:MM:SS)
Freigeschaltetfreigeschaltet?'checked="checked"':'').'">