From 839cdf3998f341cd49fd6b73aeb7d0b5db366252 Mon Sep 17 00:00:00 2001 From: kindlm Date: Wed, 7 Sep 2016 18:22:56 +0200 Subject: [PATCH] New attributes and features in Testtool Administration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add new Gebiet - Edit Ablauf - Bezeichnung mehrsprachig für Gebiete - Aktiv Attribute für Fragen und Vorschläge (Noch nicht in Testtool selbst implementiert) --- cis/testtool/admin/add_gebiet.php | 239 ++++++++++++ cis/testtool/admin/edit_ablauf.php | 575 +++++++++++++++++++++++++++++ cis/testtool/admin/edit_gebiet.php | 29 +- cis/testtool/admin/index.php | 181 +++++++-- include/ablauf.class.php | 525 ++++++++++++++++++++++++++ include/frage.class.php | 53 ++- include/vorschlag.class.php | 10 +- 7 files changed, 1568 insertions(+), 44 deletions(-) create mode 100644 cis/testtool/admin/add_gebiet.php create mode 100644 cis/testtool/admin/edit_ablauf.php create mode 100644 include/ablauf.class.php diff --git a/cis/testtool/admin/add_gebiet.php b/cis/testtool/admin/add_gebiet.php new file mode 100644 index 000000000..5f7a5ad72 --- /dev/null +++ b/cis/testtool/admin/add_gebiet.php @@ -0,0 +1,239 @@ +, + * Andreas Oesterreicher , + * Rudolf Hangl and + * Gerald Simane-Sequens + */ +/** + * Seite zum Editieren von Testtool-Gebieten + */ + +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'); +require_once('../../../include/sprache.class.php'); + +if (!$user=get_uid()) + die('Sie sind nicht angemeldet. Es wurde keine Benutzer UID gefunden ! Zurück'); + +$rechte = new benutzerberechtigung(); +$rechte->getBerechtigungen($user); + +$sprache = new sprache(); +$sprache->getAll(true); + +echo ' + + + + + + + + + + +
+'; + +$stg_kz = (isset($_GET['stg_kz'])?$_GET['stg_kz']:'-1'); +$gebiet = new gebiet(); + +echo '

 Gebiet hinzufügen

'; + +if(!$rechte->isBerechtigt('basis/testtool')) + die($rechte->errormsg); + +$studiengang = new studiengang(); +$studiengang->getAll('typ, kurzbz', false); + +echo 'Zurück zur Admin Seite

'; + +//Dropdown Auswahl Studiengang +echo "Studiengang:


"; + +echo ' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ID
Kurzbz
Bezeichnung German
Bezeichnung English
Beschreibung
Zeit hh:mm:ss
Multiple Response
Kategorien
Zufällige Fragereihenfolge
Zufällige Vorschlagreihenfolge
Levelgleichverteilung
Maximale Punkteanzahl
Maximale Frageanzahl
Antworten pro Zeile
Start Level
Richtige Fragen bis Levelaufstieg
Falsche Fragen bis Levelabstieg
+ +
+'; + +//Speichern der Daten +if (isset($_POST['save']) && $_POST['save']=='save') +{ + /* + * kurzbz + * zeit + * antw/zeile + */ + + if(!$rechte->isBerechtigt('basis/testtool', null, 'suid')) + die('Sie haben keine Berechtigung fuer diese Aktion'); + + if (isset($_POST['kurzbz']) && $_POST['kurzbz']!='' && isset($_POST['zeit']) && $_POST['zeit']!='' && isset($_POST['antworten_pro_zeile']) && $_POST['antworten_pro_zeile']!='') + { + $gebiet = new gebiet(); + + $bezeichnung_mehrsprachig=array(); + foreach($sprache->result as $row_sprache) + { + if(isset($_POST['bezeichnung_mehrsprachig_'.$row_sprache->sprache])) + $bezeichnung_mehrsprachig[$row_sprache->sprache]=$_POST['bezeichnung_mehrsprachig_'.$row_sprache->sprache]; + } + $gebiet->bezeichnung_mehrsprachig = $bezeichnung_mehrsprachig; + + $gebiet->kurzbz = $_POST['kurzbz']; + $gebiet->bezeichnung = $_POST['bezeichnung_mehrsprachig_German']; + $gebiet->beschreibung = $_POST['beschreibung']; + $gebiet->zeit = $_POST['zeit']; + $gebiet->multipleresponse = isset($_POST['multiple_respone']); + $gebiet->kategorien = isset($_POST['kategorien']); + $gebiet->maxfragen = $_POST['maximale_fragenanzahl']; + $gebiet->zufallfrage = isset($_POST['zufaellige_fragereihenfolge']); + $gebiet->zufallvorschlag = isset($_POST['zufaellige_vorschlagreihenfolge']); + $gebiet->levelgleichverteilung = isset($_POST['levelgleichverteilung']); + $gebiet->maxpunkte = $_POST['maximale_punkteanzahl']; + $gebiet->level_start = $_POST['start_level']; + $gebiet->level_sprung_auf = $_POST['richtige_fragen_bis_levelaufstieg']; + $gebiet->level_sprung_ab = $_POST['falsche_fragen_bis_levelabstieg']; + $gebiet->insertamum = date('Y-m-d H:i:s'); + $gebiet->insertvon = $user; + $gebiet->antwortenprozeile = $_POST['antworten_pro_zeile']; + + if($gebiet->save(true)) + { + echo 'Daten erfolgreich gespeichert'; + } + else + { + echo 'Fehler beim Speichern: '.$gebiet->errormsg.''; + } + } + else + { + echo 'Bitte füllen Sie alle Pflichtfelder aus'; + } +} + +echo ''; +?> diff --git a/cis/testtool/admin/edit_ablauf.php b/cis/testtool/admin/edit_ablauf.php new file mode 100644 index 000000000..d6c54bc6f --- /dev/null +++ b/cis/testtool/admin/edit_ablauf.php @@ -0,0 +1,575 @@ +, + * Andreas Oesterreicher , + * Rudolf Hangl and + * Gerald Simane-Sequens + */ +/** + * Seite zum Editieren von Testtool-Gebieten + */ + +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'); +require_once('../../../include/sprache.class.php'); +require_once('../../../include/studienplan.class.php'); +require_once('../../../include/studiensemester.class.php'); +require_once('../../../include/organisationsform.class.php'); +require_once('../../../include/ablauf.class.php'); +require_once('../../../include/content.class.php'); + +if (!$user=get_uid()) + die('Sie sind nicht angemeldet. Es wurde keine Benutzer UID gefunden ! Zurück'); + +if (!$db = new basis_db()) +{ + die('Es konnte keine Verbindung zum Server aufgebaut werden.'); +} + +$rechte = new benutzerberechtigung(); +$rechte->getBerechtigungen($user); + +$sprache = new sprache(); +$sprache->getAll(true); + +echo ' + + + + + + + + + + +
+'; + +if(isset($_GET['gebiet_id'])) + $gebiet_id=$_GET['gebiet_id']; +else + $gebiet_id=''; + +$stg_kz = (isset($_GET['stg_kz'])?$_GET['stg_kz']:'-1'); +$stp_id = (isset($_GET['stp_id'])?$_GET['stp_id']:''); +$semester = (isset($_GET['semester'])?$_GET['semester']:''); + +echo '

 Gebiete an Studiengänge anhängen

'; + +if(!$rechte->isBerechtigt('basis/testtool')) + die($rechte->errormsg); + +$studiengang = new studiengang(); +$studiengang->getAll('typ, kurzbz',false); +$gebiet = new gebiet(); +$gebiet->getAll(); +$ablauf_vorgabe = new gebiet(); +$ablauf_vorgabe->getAblaufVorgaben(); + + +echo 'Zurück zur Admin Seite

'; +echo '
'; + +//Studiengang Dropdown +echo '
'; +echo 'Studiengang:
'; + +// Studienplan Dropdown +echo "
Studienplan: "; +drawStudienplanDropdown($stg_kz, $db, "stp_id", 'studiengang_form'); + +// Semester Dropdown +echo '
Semester: '; +echo "
"; +echo ""; +echo '

'; + +// Gebiet speichern +if (isset($_GET['action']) && $_GET['action']=='save') +{ + if (isset($_POST['gebiet_id']) && $_POST['gebiet_id']!='' && isset($_POST['reihung']) && $_POST['reihung']!='' && isset($_POST['gewicht']) && $_POST['gewicht']!='' && isset($_POST['semester']) && $_POST['semester']!='' && isset($_POST['studienplan']) && $_POST['studienplan']!='') + { + $ablauf = new ablauf(); + $ablauf->studiengang_kz = $_POST['stg_kz']; + $ablauf->gebiet_id = $_POST['gebiet_id']; + $ablauf->reihung = $_POST['reihung']; + $ablauf->gewicht = $_POST['gewicht']; + $ablauf->semester = $_POST['semester']; + $ablauf->insertvon = $user; + $ablauf->insertamum = date('Y-m-d H:i:s'); + $ablauf->studienplan_id = $_POST['studienplan']; + $ablauf->ablauf_vorgaben_id = $_POST['ablauf_vorgaben_id']; + + if (!$ablauf->save(true)) + echo $ablauf->errormsg; + } + else + { + echo 'Bitte füllen Sie alle Felder aus'; + } +} +// Ablauf-Vorgabe speichern +if (isset($_POST['saveAblaufVorgabe']) && $_POST['saveAblaufVorgabe']=='new') +{ + if (isset($_POST['stg_kz']) && $_POST['stg_kz']!='' && isset($_POST['content_id']) && $_POST['content_id']!='') + { + $content = new content(); + if ($content->getContent($_POST['content_id'])) + { + $ablauf = new ablauf(); + $ablauf->studiengang_kz = $_POST['stg_kz']; + $ablauf->sprache = $_POST['sprache']; + $ablauf->sprachwahl = ($_POST['sprachwahl']=='true'?true:false); + $ablauf->content_id = $_POST['content_id']; + $ablauf->insertvon = $user; + $ablauf->insertamum = date('Y-m-d H:i:s'); + + if (!$ablauf->saveAblaufVorgabe(true)) + echo $ablauf->errormsg; + } + else + echo 'Die Content ID '.$_POST['content_id'].' existiert nicht'; + } + else + { + echo 'Bitte füllen Sie alle Felder aus'; + } +} +// Gebiet entfernen +if (isset($_GET['action']) && $_GET['action']=='delete') +{ + if (isset($_POST['gebiet_id']) && $_POST['gebiet_id']!='') + { + $ablauf = new ablauf(); + $ablauf->getAblaufId($stg_kz, $_POST['gebiet_id']); + $ablauf_id = $ablauf->result[0]; + if ($ablauf->delete($ablauf_id)) + echo $ablauf->errormsg; + } + else + { + //echo 'Bitte füllen Sie alle Felder aus'; + } +} +// Gebiet bearbeiten +if (isset($_GET['action']) && $_GET['action']=='edit') +{ + if (isset($_POST['gebiet_id']) && $_POST['gebiet_id']!='') + { + $ablauf = new ablauf(); + $ablauf->getAblaufId($stg_kz, $_POST['gebiet_id']); + $ablauf_id = $ablauf->result[0]; + $ablauf = new ablauf($ablauf_id); + $ablauf = $ablauf->result[0]; + + $gebiet = new gebiet($_POST['gebiet_id']); + $studiengang = new studiengang($stg_kz); + + echo ' + + + + + + + + +
Studiengang_kz:
Gebiet:
Semester:
Reihung:
Gewichtung:
Studienplan: '; drawStudienplanDropdown($stg_kz, $db, $name='studienplan_id', null, 'width:100%', $ablauf->studienplan_id); echo '
Vorgaben-ID: +

'; + + } + else + { + //echo 'Bitte füllen Sie alle Felder aus'; + } +} +// Bearbeitetes Gebiet speichern +if (isset($_GET['action']) && $_GET['action']=='editsave') +{ + if (isset($_POST['reihung']) && $_POST['reihung']!='' && isset($_POST['gewicht']) && $_POST['gewicht']!='' && isset($_POST['semester']) && $_POST['semester']!='') + { + $ablauf = new ablauf(); + $ablauf->getAblaufId($stg_kz, $_POST['gebiet_id']); + $ablauf_id = $ablauf->result[0]; + $ablauf = new ablauf($ablauf_id); + $ablauf = $ablauf->result[0]; + $ablauf->reihung = $_POST['reihung']; + $ablauf->gewicht = $_POST['gewicht']; + $ablauf->semester = $_POST['semester']; + $ablauf->ablauf_vorgaben_id = $_POST['ablauf_vorgaben_id']; + if (isset($_POST['studienplan_id'])) // && $_POST['studienplan_id']!='' + $ablauf->studienplan_id = $_POST['studienplan_id']; + + if (!$ablauf->save(false)) + echo $ablauf->errormsg; + } + else + { + echo 'Bitte füllen Sie alle Felder aus'; + } +} + +// Liste aller zugehoerigen Gebiete anzeigen +$ablauf = new ablauf(); +if (isset($_GET['stp_id']) && $_GET['stp_id']!='') +{ + if (isset($semester) && $semester!='') + $ablauf->getAblaufGebiete($stg_kz, null, $semester); + else + $ablauf->getAblaufGebiete($stg_kz, $_GET['stp_id']); +} +else +{ + if (isset($semester) && $semester!='') + $ablauf->getAblaufGebiete($stg_kz, null, $semester); + else + $ablauf->getAblaufGebiete($stg_kz); +} +$gebieteangehaengt = array(); + +// Formular zum anlegen einer neuen Ablauf-Vorgabe + +echo 'Neue Ablauf-Vorgabe'; +echo ''; + +if ($stg_kz != -1) +{ + echo ' + + + + + + + + + + '; + $zaehler_reihung = 0; + foreach ($ablauf->result as $row) + { + if ($row->reihung>$zaehler_reihung) + $zaehler_reihung = $row->reihung; + $studienplan = new studienplan(); + $studienplan->loadStudienplan($row->studienplan_id); + $gebiet = new gebiet($row->gebiet_id); + $vorgabe = new ablauf(); + $vorgabe->loadAblaufVorgabe($row->ablauf_vorgaben_id); + array_push($gebieteangehaengt, $gebiet->gebiet_id); + echo ' + + + + + + '; + } + + $gebiet->getAll(); + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo '
GebietSemesterReihungGewichtungStudienplanVorgaben
'.$gebiet->bezeichnung.' ('.$gebiet->kurzbz.')'.$row->semester.''.$row->reihung.''.$row->gewicht.''.$studienplan->bezeichnung.'('.$row->ablauf_vorgaben_id.') Sprache: '.$vorgabe->sprache.' | Sprachwahl: '.($vorgabe->sprachwahl==true?'Ja':'Nein').' | Content_id: '.$vorgabe->content_id.' +
edit + +
+
delete + +
'; drawStudienplanDropdown($stg_kz, $db, "studienplan"); echo '
'; +} + + + + +// 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 'Ablauf wurde entfernt'; + else + echo 'Fehler beim Entfernen:'.$ablauf->errormsg.''; + +} +// 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 'Ablauf gespeichert'; + else + echo 'Fehler beim Speichern:'.$ablauf->errormsg.''; + +} +/* +//Speichern eines neuen Eintrags +if(isset($_POST['speichern'])) +{ + if(!$rechte->isBerechtigt('basis/testtool', null, 'suid')) + die($rechte->errormsg); + + $gebiet = new gebiet(); + if($gebiet->load($gebiet_id)) + { + $bezeichnung_mehrsprachig=array(); + foreach($sprache->result as $row_sprache) + { + if(isset($_POST['bezeichnung_mehrsprachig_'.$row_sprache->sprache]) && $_POST['bezeichnung_mehrsprachig_'.$row_sprache->sprache]!='') + $bezeichnung_mehrsprachig[$row_sprache->sprache]=$_POST['bezeichnung_mehrsprachig_'.$row_sprache->sprache]; + } + $gebiet->bezeichnung_mehrsprachig = $bezeichnung_mehrsprachig; + + $gebiet->kurzbz = $_POST['kurzbz']; + $gebiet->bezeichnung = $_POST['bezeichnung_mehrsprachig_German']; + $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; + $gebiet->antwortenprozeile = $_POST['antwortenprozeile']; + + if($gebiet->save(false)) + { + echo 'Daten erfolgreich gespeichert'; + } + else + { + echo 'Fehler beim Speichern: '.$gebiet->errormsg.''; + } + } + else + { + echo 'Fehler beim Laden des Gebiets'; + } +}*/ + +echo ''; + + +/** + * Zeichnet das Dropdown zur Auswahl des Studienplans + * @param $stg_kz Studiengang + * @param $db Datenbankverbindung + * @param string $name Name des "; + echo ""; + // Pruefen ob uebergebene StudienplanID in Auswahl enthalten + // ist und ggf auf leer setzen + if($studienplan_id!='') + { + $studienplan_found=false; + foreach($studienplan_arr as $stoid=>$row_sto) + { + if(array_key_exists($studienplan_id, $studienplan_arr[$stoid])) + { + $studienplan_found=true; + break; + } + } + if(!$studienplan_found) + { + $studienplan_id=''; + } + } + foreach($studienordnung_arr as $stoid=>$row_sto) + { + $selected=''; + + echo ''; + + foreach ($studienplan_arr[$stoid] as $stpid=>$row_stp) + { + if (isset($_GET['stp_id']) && $_GET['stp_id']==$stpid) + $selected = 'selected'; + if (isset($studienplan) && $studienplan==$stpid) + $selected = 'selected'; + echo ''; + $selected = ''; + } + } + echo ''; +} + + +?> \ No newline at end of file diff --git a/cis/testtool/admin/edit_gebiet.php b/cis/testtool/admin/edit_gebiet.php index a58b5d117..8559fb01d 100644 --- a/cis/testtool/admin/edit_gebiet.php +++ b/cis/testtool/admin/edit_gebiet.php @@ -29,13 +29,19 @@ require_once('../../../include/functions.inc.php'); require_once('../../../include/gebiet.class.php'); require_once('../../../include/benutzerberechtigung.class.php'); require_once('../../../include/studiengang.class.php'); +require_once('../../../include/sprache.class.php'); if (!$user=get_uid()) die('Sie sind nicht angemeldet. Es wurde keine Benutzer UID gefunden ! Zurück'); +$db = new basis_db(); + $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($user); +$sprache = new sprache(); +$sprache->getAll(true); + echo ' @@ -85,7 +91,7 @@ if(!$rechte->isBerechtigt('basis/testtool')) $gebiet = new gebiet(); $gebiet->getAll(); -echo 'Zurück zur Admin Seite

'; +echo 'Zurück zur Admin Seite

'; //Liste der Gebiete anzeigen echo '
'; @@ -159,6 +165,14 @@ if(isset($_POST['speichern'])) $gebiet = new gebiet(); if($gebiet->load($gebiet_id)) { + $bezeichnung_mehrsprachig=array(); + foreach($sprache->result as $row_sprache) + { + if(isset($_POST['bezeichnung_mehrsprachig_'.$row_sprache->sprache]) && $_POST['bezeichnung_mehrsprachig_'.$row_sprache->sprache]!='') + $bezeichnung_mehrsprachig[$row_sprache->sprache]=$_POST['bezeichnung_mehrsprachig_'.$row_sprache->sprache]; + } + $gebiet->bezeichnung_mehrsprachig = $bezeichnung_mehrsprachig; + $gebiet->kurzbz = $_POST['kurzbz']; $gebiet->bezeichnung = $_POST['bezeichnung']; $gebiet->beschreibung = $_POST['beschreibung']; @@ -202,14 +216,20 @@ if($gebiet_id!='') echo ''; //ID - echo 'ID'.$gebiet_id.''; + echo 'ID'; echo ''; //Kurzbz - echo 'Kurzbz'; + echo 'Kurzbz'; echo ''; //Bezeichnung - echo 'Bezeichnung'; + echo 'Bezeichnung'; echo ''; + foreach($sprache->result as $s) + { + echo 'Bezeichnung '.$s->sprache.''; + echo ''; + echo ''; + } //Beschreibung echo 'Beschreibung'; echo ''; @@ -258,7 +278,6 @@ if($gebiet_id!='') $studiengang = new studiengang(); $studiengang->getAll('typ, kurzbz',false); - echo ''; echo ' diff --git a/cis/testtool/admin/index.php b/cis/testtool/admin/index.php index 8ee04cb88..c962a1073 100644 --- a/cis/testtool/admin/index.php +++ b/cis/testtool/admin/index.php @@ -33,21 +33,18 @@ require_once('../../../include/benutzerberechtigung.class.php'); require_once('../../../include/studiengang.class.php'); if (!$db = new basis_db()) -{ die('Fehler beim Oeffnen der Datenbankverbindung'); -} - $PHP_SELF=$_SERVER['PHP_SELF']; session_cache_limiter('none'); -session_start(); +//session_start(); $user=get_uid(); $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($user); if(!$rechte->isBerechtigt('basis/testtool', null, 's')) - die('Sie haben keine Berechtigung fuer diese Seite'); + die($rechte->errormsg); $studiengang = new studiengang(); $studiengang->getAll('typ, kurzbz', false); @@ -88,6 +85,7 @@ else { $vorschlag_id = ''; } +$filter = isset($_GET['filter'])?$_GET['filter']:''; $save_vorschlag_error=false; /**/ @@ -169,7 +167,7 @@ font-size: 10pt;

Testtool - Administrationsseite
- +

demo = isset($_POST['demo']); $frage->nummer = $_POST['nummer']; $frage->level = $_POST['level']; + $frage->aktiv = isset($_POST['aktiv']); $frage->new = false; if($frage->save()) { + if(!$frage->getFrageSprache($frage->frage_id, $sprache)) { $frage->new=true; } - $frage->text = $_POST['text']; + if (isset($_POST['text'])) + $frage->text = $_POST['text']; $frage->sprache = $sprache; $xml = ''.$frage->text.''; @@ -414,6 +415,7 @@ if(isset($_POST['submitvorschlag'])) $vorschlag->sprache = $sprache; $vorschlag->updateamum = date('Y-m-d H:i:s'); $vorschlag->updatevon = $user; + $vorschlag->aktiv = isset($_POST['aktiv'])?true:false; $xml = ''.$vorschlag->text.''; libxml_use_internal_errors(true); @@ -482,9 +484,11 @@ if(isset($_GET['type']) && $_GET['type']=='neuefrage') die('Sie haben keine Berechtigung fuer diese Aktion'); $frage_obj = new frage(); + $frage_obj->getFragenGebiet($gebiet_id); + $nummer=(count($frage_obj->result)); $frage_obj->gebiet_id = $_GET['gebiet_id']; - $frage_obj->nummer=999; + $frage_obj->nummer=$nummer; $frage_obj->demo=false; $frage_obj->insertamum = date('Y-m-d H:i:s'); $frage_obj->insertvon = $user; @@ -495,7 +499,6 @@ if(isset($_GET['type']) && $_GET['type']=='neuefrage') if($frage_obj->save_fragesprache()) { echo 'Frage wurde erfolgreich angelegt'; - $nummer=999; } else { @@ -540,6 +543,53 @@ if(isset($_GET['type']) && $_GET['type']=='gebietpruefen' && isset($_GET['gebiet } } +//Vorschlaege aktiv und inaktiv setzen +if(isset($_GET['type']) && $_GET['type']=='vorschlaegeaktiv') +{ + if (isset($_POST['allevorschlaege'])) + { + $vs = new vorschlag(); + $vs->new = false; + if(isset($_POST['vorschlagaktiv'])) + { + + $vorschlaegeAktiv = array(); + $vorschlaegeInaktiv = array(); + $checkedVorschlaege = $_POST['vorschlagaktiv']; + $allevorschlaege = array(); + $allevorschlaege = explode(",", rtrim($_POST['allevorschlaege'], ",")); + + foreach ($allevorschlaege as $vorschlag) + { + $vs->load($vorschlag, $sprache); + if (in_array($vorschlag, $checkedVorschlaege)) + { + $vs->aktiv = true; + $vs->save(); + } + else + { + $vs->aktiv = false; + $vs->save(); + } + } + } + else + { + $allevorschlaege = array(); + $allevorschlaege = explode(",", rtrim($_POST['allevorschlaege'], ",")); + + foreach ($allevorschlaege as $vorschlag) + { + $vs->load($vorschlag, $sprache); + $vs->aktiv = false; + $vs->save(); + } + + } + } +} + echo '
'; + echo '
'; //Liste der Studiengänge @@ -555,7 +605,7 @@ echo 'Studiengang: '; @@ -594,7 +644,8 @@ if (($anzahl!==0) || ($stg_kz=='-1') && ($stg_kz!=='')) } echo " Pruefen | "; - echo " Bearbeiten"; + echo " Bearbeiten |"; + echo " Hinzufügen"; //echo "
Gebiet_id=".$gebiet_id.""; echo '
'; @@ -619,10 +670,38 @@ if (($anzahl!==0) || ($stg_kz=='-1') && ($stg_kz!=='')) echo '
'; // Liste der Fragen - $qry = "SELECT distinct nummer FROM testtool.tbl_frage WHERE gebiet_id=".$db->db_add_param($gebiet_id)." ORDER BY nummer"; + if ($filter=='aktiv') { + $qry = "SELECT distinct nummer, aktiv FROM testtool.tbl_frage WHERE gebiet_id=".$db->db_add_param($gebiet_id)." AND aktiv ORDER BY nummer"; + } elseif ($filter=='inaktiv') { + $qry = "SELECT distinct nummer, aktiv FROM testtool.tbl_frage WHERE gebiet_id=".$db->db_add_param($gebiet_id)." AND NOT aktiv ORDER BY nummer"; + } else { + $qry = "SELECT distinct nummer, aktiv FROM testtool.tbl_frage WHERE gebiet_id=".$db->db_add_param($gebiet_id)." ORDER BY nummer"; + } if($result = $db->db_query($qry)) { + // Aktiv / Inaktiv Filter + echo 'Filter: '; + $aktivchecked = ($filter=='aktiv'||$filter=='')?'checked="checked"':''; + $inaktivchecked = ($filter=='inaktiv'||$filter=='')?'checked="checked"':''; + if ($filter=='aktiv') { + $link = ""; + echo ' + aktiv + + inaktiv'; + } elseif ($filter=='inaktiv') { + echo ' + aktiv + + inaktiv'; + } elseif ($filter=='') { + echo ' + aktiv + + inaktiv'; + } + echo '
'; echo 'Nummer: '; while($row = $db->db_fetch_object($result)) { @@ -630,13 +709,22 @@ if (($anzahl!==0) || ($stg_kz=='-1') && ($stg_kz!=='')) $nummer = $row->nummer; if($nummer==$row->nummer) - echo " $row->nummer -"; + echo " aktiv=="f"?"style='color: grey'":"")." class='Item'>$row->nummer -"; else - echo " $row->nummer -"; + echo " aktiv=="f"?"style='color: grey'":"")." class='Item'>$row->nummer -"; } - echo " neue Frage hinzufuegen"; - if($nummer<$db->db_num_rows($result)-1) - echo " - Weiter >>"; + echo " neue Frage hinzufuegen"; + $frage_obj = new frage(); + if ($filter=='aktiv') { + $nextNummer = $frage_obj->getNextFrageNummer($nummer, $gebiet_id, true); + } elseif ($filter=='inaktiv') { + $nextNummer = $frage_obj->getNextFrageNummer($nummer, $gebiet_id, false); + } else { + $nextNummer = $frage_obj->getNextFrageNummer($nummer, $gebiet_id); + } + //if($nummer<$db->db_num_rows($result)-1) + if ($nextNummer!='') + echo " - Weiter >>"; } echo "\n\n
"; @@ -679,7 +767,7 @@ if($frage_id!='') echo '"; //Upload Feld fuer Bild echo "'; //Zusaetzliche EingabeFelder anzeigen echo ""; echo " + Nummer + Aktiv aktiv=='t'?'checked="true"':'')." />"; echo "
'; - echo ' + echo ' '; @@ -688,13 +776,13 @@ if($frage_id!='') echo "
-
+ Bild:
-
+ Audio:
@@ -722,12 +810,12 @@ if($frage_id!='') echo '
"; - echo "
"; + echo ""; echo ""; //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 ""; + echo ""; echo "
\n\n
\n\n
"; echo ""; echo "

"; @@ -749,7 +837,8 @@ if($frage_id!='') echo "
Demo demo?'checked="true"':'')." /> Level - Nummer
"; echo ""; @@ -775,10 +864,27 @@ if($frage_id!='') } //Vorschlag echo 'Vorschlag'.($vorschlag_id!=''?' Edit':'').'

'; - echo "
"; + echo ""; echo ""; echo ''; - echo ""; + //Aktiv Checkbox + echo ""; echo ""; //Vorschau fuer das Text-Feld echo ""; @@ -831,10 +944,11 @@ if($frage_id!='') $vorschlag = new vorschlag(); $vorschlag->getVorschlag($frage_id, $sprache, false); - $i=0; + $i=0; $allevorschlaege=''; if(count($vorschlag->result)>0) { - echo '
Nummer:"; + if (!isset($vorschlag_id) || $vorschlag_id!='') + { + echo "
Nummer:"; + } + else + { + if (isset($_GET['gebiet_id']) && isset($_GET['nummer'])) + { + $fragef1 = new frage(); + $fragef1->getFragen($_GET['gebiet_id'], $_GET['nummer']); + $vorschlag->getVorschlag($fragef1->result[0]->frage_id, $sprache, false); + echo "
Nummer:"; + } + else + { + echo "
Nummer:"; + } + } echo ""; echo ""; echo ""; @@ -821,6 +927,13 @@ if($frage_id!='') //Upload Feld fuer Audio echo "Audio:
Aktivaktiv=='t') + { + echo "checked='checked'"; + } + echo "/>
".($vorschlag_id!=''?"frage_id'\" />":'')."
Vorschau:
$vorschlag->text
'; + echo ''; + echo '
NummerPunkteTextBildAudio
'; $a=array(); foreach ($vorschlag->result as $vs) @@ -862,12 +976,17 @@ if($frage_id!='') echo " - "; - + "; + $allevorschlaege .= $vs->vorschlag_id.","; } - echo ''; - echo '
NummerPunkteTextBildAudioAktiv
edit delete
load($vs->vorschlag_id); + if ($vss->aktiv=='t') echo "checked='checked'"; + + echo "/>
Summe:'.number_format(array_sum($a),2, ".", "").'  













'; + echo '
Summe:'.number_format(array_sum($a),2, ".", "").'  













'; } } diff --git a/include/ablauf.class.php b/include/ablauf.class.php new file mode 100644 index 000000000..715a67784 --- /dev/null +++ b/include/ablauf.class.php @@ -0,0 +1,525 @@ +, + * Manfred Kindl + */ +/** + * Klasse zur Verwaltung der Ablaeufe der Raihungstests + */ +require_once(dirname(__FILE__).'/basis_db.class.php'); + +class ablauf extends basis_db +{ + public $new; + public $result = array(); + + //Tabellenspalten + public $studiengang_kz; + public $gebiet_id; + public $reihung; + public $gewicht; + public $ablauf_id; + public $insertamum; + public $insertvon; + public $updateamum; + public $updatevon; + public $semester; + public $ablauf_vorgaben_id; + public $studienplan_id; + public $sprachwahl; + public $sprache; + public $content_id; + + /** + * Konstruktor + * @param $ablauf_id ID des zu ladenden Datensatzes + */ + public function __construct($ablauf_id=null) + { + parent::__construct(); + + if(!is_null($ablauf_id)) + $this->load($ablauf_id); + } + + /** + * Laedt einen Datensatz + * @param abschlusspruefung_id ID des zu ladenden Datensatzes + */ + public function load($ablauf_id) + { + //id auf Gueltigkeit pruefen + if(!is_numeric($ablauf_id)) + { + $this->errormsg = 'ablauf_id muss eine gueltige Zahl sein'; + return false; + } + + //laden des Datensatzes + $qry = "SELECT + * + FROM + testtool.tbl_ablauf + WHERE ablauf_id=".$this->db_add_param($ablauf_id, FHC_INTEGER, false).";"; + + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $obj = new ablauf(); + + $obj->studiengang_kz = $row->studiengang_kz; + $obj->gebiet_id = $row->gebiet_id; + $obj->reihung = $row->reihung; + $obj->gewicht = $row->gewicht; + $obj->ablauf_id = $row->ablauf_id; + $obj->semester = $row->semester; + $obj->ablauf_vorgaben_id = $row->ablauf_vorgaben_id; + $obj->studienplan_id = $row->studienplan_id; + $obj->updateamum = $row->updateamum; + $obj->updatevon = $row->updatevon; + $obj->insertamum = $row->insertamum; + $obj->insertvon = $row->insertvon; + + $this->result[] = $obj; + return true; + } + else + { + $this->errormsg = 'Fehler bei der Datenbankabfrage'; + return false; + } + } + else + { + $this->errormsg = 'Fehler bei der Datenbankabfrage'; + return false; + } + } + + /** + * Loescht einen Datensatz + * @param abschlusspruefung_id ID des zu loeschenden Datensatzes + * @return true wenn ok, false im Fehlerfall + */ + public function delete($ablauf_id) + { + //abschlusspruefung_id auf Gueltigkeit pruefen + if(!is_numeric($ablauf_id)) + { + $this->errormsg = 'ablauf_id muss eine gueltige Zahl sein'; + return false; + } + + $qry = "DELETE FROM testtool.tbl_ablauf + WHERE ablauf_id=".$this->db_add_param($ablauf_id, FHC_INTEGER, false).";"; + + if($this->db_query($qry)) + { + return true; + } + else + { + $this->errormsg = 'Fehler beim Loeschen'; + return false; + } + } + + /** + * Prueft die Daten vor dem Speichern + * + * @return true wenn ok, false wenn Fehler + */ + protected function validate() + { + if($this->studiengang_kz=='') + { + $this->errormsg = 'studiengang_kz muss eingegeben werden'; + return false; + } + if($this->gebiet_id=='') + { + $this->errormsg = 'gebiet_id muss eingetragen werden'; + return false; + } + if($this->reihung=='') + { + $this->errormsg = 'reihung muss eingetragen werden'; + return false; + } + if($this->gewicht=='') + { + $this->errormsg = 'gewicht muss eingetragen werden'; + return false; + } + if($this->semester=='') + { + $this->errormsg = 'semester muss eingetragen werden'; + return false; + } + return true; + } + + /** + * Speichert den aktuellen Datensatz + * Wenn $neu auf true gesetzt ist wird ein neuer Datensatz angelegt + * andernfalls wird der Datensatz mit der ID in $akte_id aktualisiert + * @return true wenn ok, false im Fehlerfall + */ + public function save($new=null) + { + if(!$this->validate()) + return false; + if($new==null) + $new = $this->new; + + if($new) + { + //Neuen Datensatz anlegen + $qry = "BEGIN;INSERT INTO testtool.tbl_ablauf (studiengang_kz, gebiet_id, reihung, + gewicht, semester, ablauf_vorgaben_id, studienplan_id, + updateamum, updatevon, 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->studienplan_id).', '. + $this->db_add_param($this->updateamum).', '. + $this->db_add_param($this->updatevon).', '. + $this->db_add_param($this->insertamum).', '. + $this->db_add_param($this->insertvon).');'; + + } + else + { + //Bestehenden Datensatz aktualisieren + $qry= "UPDATE testtool.tbl_ablauf SET". + " studiengang_kz=".$this->db_add_param($this->studiengang_kz, FHC_INTEGER).",". + " gebiet_id=".$this->db_add_param($this->gebiet_id, FHC_INTEGER).",". + " reihung=".$this->db_add_param($this->reihung, FHC_INTEGER).",". + " gewicht=".$this->db_add_param($this->gewicht, FHC_INTEGER).",". + " semester=".$this->db_add_param($this->semester, FHC_INTEGER).",". + " ablauf_vorgaben_id=".$this->db_add_param($this->ablauf_vorgaben_id, FHC_INTEGER).",". + " studienplan_id=".$this->db_add_param($this->studienplan_id).",". + " updateamum=".$this->db_add_param($this->updateamum).",". + " updatevon=".$this->db_add_param($this->updatevon). + " WHERE ablauf_id=".$this->db_add_param($this->ablauf_id, FHC_INTEGER); + } + + if($this->db_query($qry)) + { + if($new) + { + $qry = "SELECT currval('testtool.tbl_ablauf_ablauf_id_seq') as id"; + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $this->ablauf_id = $row->id; + $this->db_query('COMMIT;'); + return true; + } + else + { + $this->errormsg = 'Fehler beim Auslesen der Sequence'; + $this->db_query('ROLLBACK'); + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Auslesen der Sequence'; + $this->db_query('ROLLBACK'); + return false; + } + } + else + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern des Datensatzes'; + return false; + } + } + + /** + * Laedt die zugehoerigen Gebiete zum angegebenen Studiengang (gegebenfalls auch Studienplan) + * @param $studiengang_kz ID des Studiengang + * @param $studienplan_id ID des Studienplans + * @param $semester + * @return boolean true wenn ok sonst false + */ + public function getAblaufGebiete($studiengang_kz, $studienplan_id=null, $semester=null) + { + $qry = "SELECT * FROM testtool.tbl_ablauf WHERE studiengang_kz=".$studiengang_kz; + if (!is_null($studienplan_id)) + $qry .= " AND studienplan_id=".$studienplan_id; + if (!is_null($semester)) + $qry .= " AND semester=".$semester; + + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + $obj = new stdClass(); + + $obj->gebiet_id = $row->gebiet_id; + $obj->reihung = $row->reihung; + $obj->gewicht = $row->gewicht; + $obj->semester = $row->semester; + $obj->studienplan_id = $row->studienplan_id; + $obj->ablauf_vorgaben_id = $row->ablauf_vorgaben_id; + + $this->result[]= $obj; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Leadt die ablauf_id zu einer Kombination aus Studiengang und Gebiet + * @param $studiengang_kz Studiengang + * @param $gebiet_id Gebiet + * @return boolean true wenn ok sonst false + */ + public function getAblaufId($studiengang_kz, $gebiet_id) + { + $qry = "SELECT + * + FROM + testtool.tbl_ablauf + WHERE studiengang_kz=".$studiengang_kz." AND gebiet_id=".$gebiet_id.";"; + + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $this->result[] = $row->ablauf_id; + return true; + } + else + { + $this->errormsg = 'Fehler bei der Datenbankabfrage'; + return false; + } + } + } + + /** + * Laedt eine Ablauf-Vorgabe + * @param $ablauf_vorgaben_id ID des zu ladenden Datensatzes + */ + public function loadAblaufVorgabe($ablauf_vorgaben_id) + { + //id auf Gueltigkeit pruefen + if(!is_numeric($ablauf_vorgaben_id)) + { + $this->errormsg = '$ablauf_vorgaben_id muss eine gueltige Zahl sein'; + return false; + } + + //laden des Datensatzes + $qry = "SELECT + * + FROM + testtool.tbl_ablauf_vorgaben + WHERE ablauf_vorgaben_id=".$this->db_add_param($ablauf_vorgaben_id, FHC_INTEGER, false).";"; + + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $this->studiengang_kz = $row->studiengang_kz; + $this->sprache = $row->sprache; + $this->sprachwahl = $this->db_parse_bool($row->sprachwahl); + $this->content_id = $row->content_id; + $this->updateamum = $row->updateamum; + $this->updatevon = $row->updatevon; + $this->insertamum = $row->insertamum; + $this->insertvon = $row->insertvon; + + return true; + } + else + { + $this->errormsg = 'Fehler bei der Datenbankabfrage'; + return false; + } + } + else + { + $this->errormsg = 'Fehler bei der Datenbankabfrage'; + return false; + } + } + + /** + * Speichert eine Ablauf-Vorgabe + * Wenn $neu auf true gesetzt ist wird ein neuer Datensatz angelegt + * andernfalls wird der Datensatz mit der ID in $ablauf_vorgaben_id aktualisiert + * @return true wenn ok, false im Fehlerfall + */ + public function saveAblaufVorgabe($new=null) + { + if($new==null) + $new = $this->new; + + if($new) + { + //Neuen Datensatz anlegen + $qry = "BEGIN;INSERT INTO testtool.tbl_ablauf_vorgaben (studiengang_kz, sprache, sprachwahl, + content_id, updateamum, updatevon, insertamum, insertvon) VALUES (". + $this->db_add_param($this->studiengang_kz, FHC_INTEGER).', '. + $this->db_add_param($this->sprache).', '. + $this->db_add_param($this->sprachwahl, FHC_BOOLEAN).', '. + $this->db_add_param($this->content_id, FHC_INTEGER).', '. + $this->db_add_param($this->updateamum).', '. + $this->db_add_param($this->updatevon).', '. + $this->db_add_param($this->insertamum).', '. + $this->db_add_param($this->insertvon).');'; + + } + else + { + //Bestehenden Datensatz aktualisieren + $qry= "UPDATE testtool.tbl_ablauf_vorgaben SET". + " studiengang_kz=".$this->db_add_param($this->studiengang_kz, FHC_INTEGER).",". + " sprache=".$this->db_add_param($this->sprache).",". + " sprachwahl=".$this->db_add_param($this->sprachwahl, FHC_BOOLEAN).",". + " content_id=".$this->db_add_param($this->content_id, FHC_INTEGER).",". + " updateamum=".$this->db_add_param($this->updateamum).",". + " updatevon=".$this->db_add_param($this->updatevon). + " WHERE ablauf_vorgaben_id=".$this->db_add_param($this->ablauf_vorgaben_id, FHC_INTEGER); + } + + if($this->db_query($qry)) + { + if($new) + { + $qry = "SELECT currval('testtool.tbl_ablauf_vorgaben_ablauf_vorgaben_id_seq') as id"; + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $this->ablauf_vorgaben_id = $row->id; + $this->db_query('COMMIT;'); + return true; + } + else + { + $this->errormsg = 'Fehler beim Auslesen der Sequence'; + $this->db_query('ROLLBACK'); + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Auslesen der Sequence'; + $this->db_query('ROLLBACK'); + return false; + } + } + else + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern des Datensatzes'; + return false; + } + } + + /** + * Laedt alle Ablauf-Vorgaben Eintraege + * @return boolean true wenn ok sonst false + */ + public function getAllAblaufVorgaben() + { + $qry = "SELECT * FROM testtool.tbl_ablauf_vorgaben"; + + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + $obj = new ablauf(); + + $obj->ablauf_vorgaben_id = $row->ablauf_vorgaben_id; + $obj->studiengang_kz = $row->studiengang_kz; + $obj->sprache = $row->sprache; + $obj->sprachwahl = $row->sprachwahl; + $obj->content_id = $row->content_id; + + $this->result[]= $obj; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Laedt einen Ablauf-Vorgabe Eintrag anhand der uebergebenen Studiengangskennzahl + * @param $studiengang_kz ID des Studiengang + * @return boolean true wenn ok sonst false + */ + public function getAblaufVorgabeStudiengang($studiengang_kz) + { + //id auf Gueltigkeit pruefen + if(!is_numeric($studiengang_kz)) + { + $this->errormsg = '$studiengang_kz muss eine gueltige Zahl sein'; + return false; + } + + $qry = "SELECT * FROM testtool.tbl_ablauf_vorgaben WHERE studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER, false); + + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + $obj = new ablauf(); + + $obj->ablauf_vorgaben_id = $row->ablauf_vorgaben_id; + $obj->studiengang_kz = $row->studiengang_kz; + $obj->sprache = $row->sprache; + $obj->sprachwahl = $row->sprachwahl; + $obj->content_id = $row->content_id; + + $this->result[]= $obj; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } +} +?> diff --git a/include/frage.class.php b/include/frage.class.php index 59848f2f6..347255795 100644 --- a/include/frage.class.php +++ b/include/frage.class.php @@ -36,6 +36,7 @@ class frage extends basis_db public $demo; public $level; public $kategorie_kurzbz; + public $aktiv; public $sprache; public $audio; @@ -96,6 +97,7 @@ class frage extends basis_db $this->insertamum = $row->insertamum; $this->insertvon = $row->insertvon; $this->level = $row->level; + $this->aktiv = $row->aktiv; return true; } @@ -137,7 +139,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, - insertamum, insertvon, updateamum, updatevon) VALUES('. + insertamum, insertvon, aktiv, updateamum, updatevon) VALUES('. $this->db_add_param($this->kategorie_kurzbz).','. $this->db_add_param($this->gebiet_id, FHC_INTEGER).','. $this->db_add_param($this->level).','. @@ -145,6 +147,7 @@ class frage extends basis_db $this->db_add_param($this->demo, FHC_BOOLEAN).','. $this->db_add_param($this->insertamum).','. $this->db_add_param($this->insertvon).','. + $this->db_add_param($this->aktiv, FHC_BOOLEAN).','. 'null,null);'; } else @@ -156,7 +159,8 @@ class frage extends basis_db ' nummer='.$this->db_add_param($this->nummer).','. ' demo='.$this->db_add_param($this->demo, FHC_BOOLEAN).','. ' updateamum='.$this->db_add_param($this->updateamum).','. - ' updatevon='.$this->db_add_param($this->updatevon). + ' updatevon='.$this->db_add_param($this->updatevon).','. + ' aktiv='.$this->db_add_param($this->aktiv, FHC_BOOLEAN). " WHERE frage_id=".$this->db_add_param($this->frage_id, FHC_INTEGER, false).";"; } @@ -265,6 +269,7 @@ class frage extends basis_db $obj->level = $row->level; $obj->nummer = $row->nummer; $obj->demo = $this->db_parse_bool($row->demo); + $obj->aktiv = $this->db_parse_bool($row->aktiv); $this->result[] = $obj; } @@ -301,6 +306,7 @@ class frage extends basis_db $obj->level = $row->level; $obj->nummer = $row->nummer; $obj->demo = $this->db_parse_bool($row->demo); + $obj->aktiv = $this->db_parse_bool($row->aktiv); $this->result[] = $obj; } @@ -346,9 +352,9 @@ class frage extends basis_db 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.=" AND tbl_pruefling_frage.endtime is null"; - $qry.="ORDER BY tbl_pruefling_frage.nummer ASC LIMIT 1"; + $qry.=" ORDER BY tbl_pruefling_frage.nummer ASC LIMIT 1"; } if($this->db_query($qry)) @@ -367,12 +373,16 @@ class frage extends basis_db * * @param $frage_id * @param $sprache + * @param $aktiv Default: null * @return true wenn ok, false im Fehlerfall */ - public function getFrageSprache($frage_id, $sprache) + public function getFrageSprache($frage_id, $sprache, $aktiv=null) { $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 (!is_null($aktiv)) + $qry .= " AND aktiv=".$aktiv; if($this->db_query($qry)) { @@ -819,5 +829,38 @@ class frage extends basis_db return false; } } + + /** + * Gibt die Nummer der naechsten Frage zurueck (nicht fuer den test sondern fuer die testtool-administrationsseite) + * + * @param $frage_nummer Nummer der aktuellen Frage + * @param $gebiet_id Gebiet der Fragen + * @param $aktiv true wenn nur aktiv, false wenn nur inaktiv, null wenn beides + */ + public function getNextFrageNummer($frage_nummer, $gebiet_id, $aktiv=null) + { + $erg = ''; + $qry = "SELECT nummer FROM testtool.tbl_frage + WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." + AND nummer>".$this->db_add_param($frage_nummer, FHC_INTEGER); + + if (!is_null($aktiv) && $aktiv) + $qry .= " AND aktiv"; + if (!is_null($aktiv) && !$aktiv) + $qry .= " AND NOT aktiv"; + + $qry .= " ORDER BY nummer ASC LIMIT 1"; //Es wird immer nur ein Maximum geben, deswegen kein max() + + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $erg .= $row->nummer; + } + return $erg; + } else { + return false; + } + } } ?> diff --git a/include/vorschlag.class.php b/include/vorschlag.class.php index d9d70936d..106753b1c 100644 --- a/include/vorschlag.class.php +++ b/include/vorschlag.class.php @@ -32,6 +32,7 @@ class vorschlag extends basis_db public $frage_id; public $nummer; public $punkte; + public $aktiv; public $text; public $bild; @@ -75,6 +76,7 @@ class vorschlag extends basis_db $this->frage_id = $row->frage_id; $this->punkte = $row->punkte; $this->nummer = $row->nummer; + $this->aktiv = $row->aktiv; $this->loadVorschlagSprache($vorschlag_id, $sprache); return true; } @@ -142,14 +144,15 @@ class vorschlag extends basis_db if($this->new) //Wenn new true ist dann ein INSERT absetzen ansonsten ein UPDATE { - $qry = 'BEGIN;INSERT INTO testtool.tbl_vorschlag (frage_id, nummer, punkte, insertamum, insertvon, updateamum, updatevon) VALUES('. + $qry = 'BEGIN;INSERT INTO testtool.tbl_vorschlag (frage_id, nummer, punkte, insertamum, insertvon, updateamum, updatevon, aktiv) VALUES('. $this->db_add_param($this->frage_id, FHC_INTEGER).','. $this->db_add_param($this->nummer).','. $this->db_add_param($this->punkte).','. $this->db_add_param($this->insertamum).','. $this->db_add_param($this->insertvon).','. $this->db_add_param($this->updateamum).','. - $this->db_add_param($this->updatevon).');'; + $this->db_add_param($this->updatevon).','. + $this->db_add_param($this->aktiv, FHC_BOOLEAN).');'; } else { @@ -158,7 +161,8 @@ class vorschlag extends basis_db ' nummer='.$this->db_add_param($this->nummer).','. ' punkte='.$this->db_add_param($this->punkte).','. ' updateamum='.$this->db_add_param($this->updateamum).','. - ' updatevon='.$this->db_add_param($this->updatevon). + ' updatevon='.$this->db_add_param($this->updatevon).','. + ' aktiv='.$this->db_add_param($this->aktiv, FHC_BOOLEAN). " WHERE vorschlag_id=".$this->db_add_param($this->vorschlag_id, FHC_INTEGER, false).";"; }