From 33aa7b7163db24268317d572610f8b91a97208ff Mon Sep 17 00:00:00 2001 From: kindlm Date: Fri, 11 Nov 2016 15:29:56 +0100 Subject: [PATCH] Testtool Aktiv und Studienplan MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Studienplan in tbl_ablauf - Aktiv-Attribut bei Frage und Vorschlag - Bezeichnung mehrsprachig in Gebiet - GUI für Ablauf-Pflege inkl. Studienplan - GUI für Gebiete hinzufügen - GUI für Pflege der mehrsprachigen Gebietsbezeichnung - Aktiv/Inaktiv setzen von Fragen und Vorschlägen in GUI - !!! Aktiv-Attribute greifen noch nicht im Testtool selbst !!! --- cis/testtool/admin/add_gebiet.php | 251 +++ cis/testtool/admin/edit_gebiet.php | 96 +- cis/testtool/admin/gebieteAnheangen.php | 478 ++++++ cis/testtool/admin/index.php | 1901 ++++++++++++----------- include/ablauf.class.php | 324 ++++ include/frage.class.php | 90 +- include/gebiet.class.php | 99 +- include/vorschlag.class.php | 18 +- system/dbupdate_3.2.php | 84 +- 9 files changed, 2361 insertions(+), 980 deletions(-) create mode 100644 cis/testtool/admin/add_gebiet.php create mode 100644 cis/testtool/admin/gebieteAnheangen.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..eaf52cb5d --- /dev/null +++ b/cis/testtool/admin/add_gebiet.php @@ -0,0 +1,251 @@ +, + * 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, 'index'); + +$sprache_user = getSprache(); + +$db = new basis_db(); + +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,bezeichnung'); + +echo 'Zurück zur Admin Seite

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


"; + +echo ' +
+ + + + + + + + + + '; + +foreach ($sprache->result as $row) +{ + echo ' + + + '; +} +echo ' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Kurzbezeichnung
Bezeichnung (intern)
Bezeichnung '.$row->bezeichnung_arr[$sprache_user].'
Beschreibung (intern)
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') +{ + if (!$rechte->isBerechtigt('basis/testtool', null, 'suid')) + die($rechte->errormsg); + + if (isset($_POST['kurzbz']) && $_POST['kurzbz'] != '' && isset($_POST['zeit']) && $_POST['zeit'] != '' && isset($_POST['antworten_pro_zeile']) && $_POST['antworten_pro_zeile'] != '') + { + //Test, ob kurzbz schon vorhanden + if ($result = $db->db_query('SELECT kurzbz FROM testtool.tbl_gebiet WHERE kurzbz = '.$db->db_add_param($_POST['kurzbz']).' LIMIT 1;')) + { + if ($db->db_num_rows($result) == 0) + { + $gebiet = new gebiet(); + + $bezeichnung_mehrsprachig = array(); + foreach ($sprache->result as $row_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_intern']; + $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 'Kurzbezeichnung ist schon vorhanden'; + } + } + else + { + echo 'Bitte füllen Sie alle Pflichtfelder aus'; + } +} + +echo ''; +?> diff --git a/cis/testtool/admin/edit_gebiet.php b/cis/testtool/admin/edit_gebiet.php index a58b5d117..3c786138f 100644 --- a/cis/testtool/admin/edit_gebiet.php +++ b/cis/testtool/admin/edit_gebiet.php @@ -29,13 +29,21 @@ 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()) +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, 'index'); + +$sprache_user = getSprache(); + echo ' @@ -56,7 +64,7 @@ echo ' function deleteZuordnung(ablauf_id) { - if(confirm("Wollen Sie dieses Zuordnung wirklich entfernen?")) + if (confirm("Wollen Sie dieses Zuordnung wirklich entfernen?")) { $("#data").html(\'
\'); document.sendform.submit(); @@ -70,22 +78,22 @@ echo '
'; -if(isset($_GET['gebiet_id'])) - $gebiet_id=$_GET['gebiet_id']; +if (isset($_GET['gebiet_id'])) + $gebiet_id = $_GET['gebiet_id']; else - $gebiet_id=''; + $gebiet_id = ''; $stg_kz = (isset($_GET['stg_kz'])?$_GET['stg_kz']:'-1'); echo '

 Gebiet bearbeiten

'; -if(!$rechte->isBerechtigt('basis/testtool')) - die('Sie haben keine Berechtigung fuer diese Seite'); +if (!$rechte->isBerechtigt('basis/testtool')) + die($rechte->errormsg); $gebiet = new gebiet(); $gebiet->getAll(); -echo 'Zurück zur Admin Seite

'; +echo 'Zurück zur Admin Seite

'; //Liste der Gebiete anzeigen echo '
'; @@ -93,13 +101,13 @@ echo 'Gebiet: echo '

'; // Ablaufzuordnung entfernen -if(isset($_POST['action']) && $_POST['action']=='deleteZuordnung') +if (isset($_POST['action']) && $_POST['action'] == 'deleteZuordnung') { - if(!isset($_POST['ablauf_id']) || !is_numeric($_POST['ablauf_id'])) + 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)) + 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') +if (isset($_POST['action']) && $_POST['action'] == 'saveAblauf') { $ablauf_vorgaben_id = $_POST['ablauf_vorgaben_id']; $studiengang_kz = $_POST['studiengang_kz']; @@ -143,22 +150,28 @@ if(isset($_POST['action']) && $_POST['action']=='saveAblauf') $ablauf->new = true; $ablauf->gebiet_id = $gebiet_id; - if($ablauf->saveAblauf()) + if ($ablauf->saveAblauf()) echo 'Ablauf gespeichert'; else echo 'Fehler beim Speichern:'.$ablauf->errormsg.''; - } //Speichern der Daten -if(isset($_POST['speichern'])) +if (isset($_POST['speichern'])) { - if(!$rechte->isBerechtigt('basis/testtool', null, 'suid')) - die('Sie haben keine Berechtigung fuer diese Aktion'); + if (!$rechte->isBerechtigt('basis/testtool', null, 'suid')) + die($rechte->errormsg); $gebiet = new gebiet(); - if($gebiet->load($gebiet_id)) + if ($gebiet->load($gebiet_id)) { + $bezeichnung_mehrsprachig = array(); + foreach ($sprache->result as $row_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']; @@ -177,7 +190,7 @@ if(isset($_POST['speichern'])) $gebiet->updatevon = $user; $gebiet->antwortenprozeile = $_POST['antwortenprozeile']; - if($gebiet->save(false)) + if ($gebiet->save(false)) { echo 'Daten erfolgreich gespeichert'; } @@ -192,7 +205,7 @@ if(isset($_POST['speichern'])) } } -if($gebiet_id!='') +if ($gebiet_id != '') { $gebiet = new gebiet($gebiet_id); @@ -202,16 +215,22 @@ if($gebiet_id!='') echo ''; //ID - echo 'ID'.$gebiet_id.''; + echo 'ID'; echo ''; //Kurzbz - echo 'Kurzbz'; + echo 'Kurzbz'; echo ''; //Bezeichnung - echo 'Bezeichnung'; + echo 'Bezeichnung (intern)'; echo ''; + foreach ($sprache->result as $s) + { + echo 'Bezeichnung '.$s->bezeichnung_arr[$sprache_user].''; + echo ''; + echo ''; + } //Beschreibung - echo 'Beschreibung'; + echo 'Beschreibung (intern)'; echo ''; //Zeit echo 'Zeit hh:mm:ss'; @@ -228,15 +247,15 @@ if($gebiet_id!='') echo ''; // empfohlene maximalpunkte berechnen und anzeigen $maximalpunkte = $gebiet->berechneMaximalpunkte($gebiet_id); - if($gebiet->maxpunkte!=$maximalpunkte) - $hinweis = 'empfohlene Maximalpunkteanzahl: '.$maximalpunkte.''; + if ($gebiet->maxpunkte != $maximalpunkte) + $hinweis = ' empfohlene Maximalpunkteanzahl: '.round($maximalpunkte).(round($maximalpunkte) != $maximalpunkte?' ('.$maximalpunkte.' gerundet)':'').''; else - $hinweis =''; + $hinweis = ''; echo 'Maximale Punkteanzahl'.$hinweis.''; echo ''; echo 'Maximale Fragenanzahl'; echo ''; - echo 'Antworten pro Zeile'; + echo 'Antworten pro Zeile'; echo ''; echo 'Start Level'; echo ''; @@ -256,9 +275,8 @@ if($gebiet_id!='') $gebiet->loadAblaufGebiet($gebiet_id); $studiengang = new studiengang(); - $studiengang->getAll('typ, kurzbz',false); + $studiengang->getAll('typ, kurzbz', false); - echo ''; echo ' @@ -271,7 +289,7 @@ if($gebiet_id!='') '; - foreach($gebiet->result as $row) + foreach ($gebiet->result as $row) { echo ' @@ -286,7 +304,7 @@ if($gebiet_id!='') echo '
'.$studiengang->kuerzel_arr[$row->studiengang_kz].'
'; + +//Studiengang Dropdown +echo ''; +echo 'Studiengang: '; + +// Studienplan Dropdown +echo "
Studienplan: "; +drawStudienplanDropdown($stg_kz, $db, "stp_id", 'studiengang_form'); +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']; + + if (!$ablauf->save(true)) + echo $ablauf->errormsg; + } + 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:
Reihung:
Gewichtung:
Semester:
Studienplan: '; + drawStudienplanDropdown($stg_kz, $db, $name = 'studienplan_id', null, 'width:100%', $ablauf->studienplan_id); + echo '
'; + } + 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']; + 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'] != '') +{ + $ablauf->getAblaufGebiete($stg_kz, $_GET['stp_id']); +} +else +{ + $ablauf->getAblaufGebiete($stg_kz); +} +$gebieteangehaengt = array(); +$studienplan = new studienplan(); + +if ($stg_kz != -1) +{ + echo ' + + + + + + + + + '; + foreach ($ablauf->result as $row) + { + $studienplan->loadStudienplan($row->studienplan_id); + $gebiet = new gebiet($row->gebiet_id); + array_push($gebieteangehaengt, $gebiet->gebiet_id); + echo ''; + } + + $gebiet->getAll(); + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo '
GebietReihungGewichtungSemesterStudienplan
'.$gebiet->kurzbz.' ('.$gebiet->bezeichnung.')'.$row->reihung.''.$row->gewicht.''.$row->semester.''.$studienplan->bezeichnung.' +
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 integer $stg_kz Studiengang. + * @param string $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 ''; +} +?> diff --git a/cis/testtool/admin/index.php b/cis/testtool/admin/index.php index 8ee04cb88..8ad81f88d 100644 --- a/cis/testtool/admin/index.php +++ b/cis/testtool/admin/index.php @@ -1,877 +1,1024 @@ -, - * Andreas Oesterreicher and - * Rudolf Hangl . - */ -/** - * Administrationsseite fuer das Testtool - */ - -header('Content-type: application/xhtml+xml'); - -require_once('../../../config/cis.config.inc.php'); -require_once('../../../include/functions.inc.php'); -require_once('../../../include/frage.class.php'); -require_once('../../../include/vorschlag.class.php'); -require_once('../../../include/benutzerberechtigung.class.php'); -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(); - -$user=get_uid(); -$rechte = new benutzerberechtigung(); -$rechte->getBerechtigungen($user); - -if(!$rechte->isBerechtigt('basis/testtool', null, 's')) - die('Sie haben keine Berechtigung fuer diese Seite'); - -$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']; -} -else -{ - $gebiet_id = ''; -} - -if(isset($_GET['nummer'])) -{ - $nummer = $_GET['nummer']; -} -else -{ - $nummer = ''; -} - -if(isset($_GET['frage_id'])) -{ - $frage_id = $_GET['frage_id']; -} -else -{ - $frage_id = ''; -} - -if(isset($_GET['vorschlag_id'])) -{ - $vorschlag_id = $_GET['vorschlag_id']; -} -else -{ - $vorschlag_id = ''; -} - -$save_vorschlag_error=false; -/**/ - -echo ''; -?> - - - - -Testtool-Administration - - - - - - - -

-
Testtool - Administrationsseite
- -

-isBerechtigt('basis/testtool', null, 'suid')) - die('Sie haben keine Berechtigung fuer diese Aktion'); - - if(isset($_FILES['bild']['tmp_name'])) - { - //Extension herausfiltern - $ext = explode('.',$_FILES['bild']['name']); - $ext = mb_strtolower($ext[count($ext)-1]); - - //--check that it's a jpeg or gif or png - if ($ext=='gif' || $ext=='png' || $ext=='jpg' || $ext=='jpeg') - { - $filename = $_FILES['bild']['tmp_name']; - //File oeffnen - $fp = fopen($filename,'r'); - //auslesen - $content = fread($fp, filesize($filename)); - fclose($fp); - //base64 codieren - $content = base64_encode($content); - - $frage = new frage(); - if($frage->getFrageSprache($_GET['frage_id'], $sprache)) - { - //HEX Wert in die Datenbank speichern - $frage->bild = $content; - $frage->new = false; - if($frage->save_fragesprache()) - echo "Bild gespeichert
"; - else - echo ''.$frage->errormsg.'
'; - } - else - echo ''.$frage->errormsg.'
'; - } - else - echo "File ist kein gueltiges Bild
"; - } -} -//Bei Upload eines Audiofiles -if(isset($_POST['submitaudio'])) -{ - if(!$rechte->isBerechtigt('basis/testtool', null, 'suid')) - die('Sie haben keine Berechtigung fuer diese Aktion'); - - if(isset($_FILES['audio']['tmp_name'])) - { - //Extension herausfiltern - $ext = explode('.',$_FILES['audio']['name']); - $ext = mb_strtolower($ext[count($ext)-1]); - - //--check that it's a mp3 - if ($ext=='mp3' || $ext=='ogg') - { - $filename = $_FILES['audio']['tmp_name']; - //File oeffnen - $content = file_get_contents($filename); - /*$fp = fopen($filename,'r'); - //auslesen - $content = fread($fp, filesize($filename)); - fclose($fp);*/ - //die('

'.$content); - //base64 codieren - $content = base64_encode($content); - $frage = new frage(); - if($frage->getFrageSprache($_GET['frage_id'], $sprache)) - { - //HEX Wert in die Datenbank speichern - $frage->audio = $content; - $frage->new = false; - if($frage->save_fragesprache()) - echo "Audio gespeichert
"; - else - echo ''.$frage->errormsg.'
'; - } - else - echo ''.$frage->errormsg.'
'; - } - else - echo "Es duerfen nur mp3 Dateien hochgeladen werden
"; - } -} - -//Speichern der Frage-Daten -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'])) - { - $frage->demo = isset($_POST['demo']); - $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; - - $xml = ''.$frage->text.''; - libxml_use_internal_errors(true); - if(simplexml_load_string($xml)) - { - if($frage->save_fragesprache()) - { - echo "Daten gespeichert
"; - $nummer = $frage->nummer; - } - else - echo 'Fehler:'.$frage->errormsg.'
'; - } - else - { - $frage_error_text = $frage->text; - echo 'Fehler: Text ist kein gueltiges XML:
'; - foreach (libxml_get_errors() as $error) - { - echo $error->message.'
'; - } - echo '

'; - } - } - else - echo ''.$frage->errormsg.'
'; - } - else - echo ''.$frage->errormsg.'
'; -} - -//Speichern eines Vorschlages -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'])) - { - //Extension herausfiltern - $ext = explode('.',$_FILES['bild']['name']); - $ext = mb_strtolower($ext[count($ext)-1]); - - //--check that it's a jpeg or gif or png - if ($ext=='gif' || $ext=='png' || $ext=='jpg' || $ext=='jpeg') - { - $filename = $_FILES['bild']['tmp_name']; - //File oeffnen - $fp = fopen($filename,'r'); - //auslesen - $bildcontent = fread($fp, filesize($filename)); - fclose($fp); - //base64 codieren - $bildcontent = base64_encode($bildcontent); - } - else - echo "Datei ist kein Bild!
"; - } - - $audiocontent=''; - if(isset($_FILES['audio']['tmp_name']) && is_uploaded_file($_FILES['audio']['tmp_name'])) - { - //Extension herausfiltern - $ext = explode('.',$_FILES['audio']['name']); - $ext = mb_strtolower($ext[count($ext)-1]); - - //--check that it's a jpeg or gif or png - if ($ext=='mp3') - { - $filename = $_FILES['audio']['tmp_name']; - //File oeffnen - $fp = fopen($filename,'r'); - //auslesen - $audiocontent = fread($fp, filesize($filename)); - fclose($fp); - //base64 codieren - $audiocontent = base64_encode($audiocontent); - } - else - echo "Datei ist kein Bild!
"; - } - $vorschlag = new vorschlag(); - $error=false; - - if($_POST['vorschlag_id']!='') - { - if($vorschlag->load($_POST['vorschlag_id'])) - { - $vorschlag->new = false; - $vorschlag->vorschlag_id = $_POST['vorschlag_id']; - } - else - { - echo 'Fehler beim Laden des Datensatzes
'; - $error = true; - } - } - else - { - $vorschlag->new = true; - $vorschlag->insertamum = date('Y-m-d H:i:s'); - $vorschlag->insertvon = $user; - } - if($_POST['nummer']=='' || !is_numeric($_POST['nummer'])) - { - $error = true; - echo 'Nummer ist ungueltig
'; - } - - if(!$error) - { - $vorschlag->bild = $bildcontent; - $vorschlag->audio = $audiocontent; - $vorschlag->frage_id = $_GET['frage_id']; - $vorschlag->nummer = $_POST['nummer']; - $vorschlag->punkte = $_POST['punkte']; - $vorschlag->text = $_POST['text']; - $vorschlag->sprache = $sprache; - $vorschlag->updateamum = date('Y-m-d H:i:s'); - $vorschlag->updatevon = $user; - - $xml = ''.$vorschlag->text.''; - libxml_use_internal_errors(true); - if(simplexml_load_string($xml)) - { - if($vorschlag->save()) - { - if($vorschlag->save_vorschlagsprache()) - { - echo "Vorschlag gespeichert
"; - } - else - { - $save_vorschlag_error=true; - echo "Fehler beim Speichern von Vorschlagsprache: $vorschlag->errormsg
"; - } - } - else - { - $save_vorschlag_error=true; - echo ''.$vorschlag->errormsg.'
'; - } - } - else - { - $vorschlag_error_text = $vorschlag->text; - echo 'Fehler: Text ist kein gueltiges XML:
'; - foreach (libxml_get_errors() as $error) - { - echo $error->message.'
'; - } - echo '

'; - } - } - else - $save_vorschlag_error=true; -} -//Vorschlag loeschen -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 ''.$vs->errormsg.'
'; - $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; - $frage_obj->insertamum = date('Y-m-d H:i:s'); - $frage_obj->insertvon = $user; - $frage_obj->sprache = $sprache; - $frage_obj->new = true; - if($frage_obj->save()) - { - if($frage_obj->save_fragesprache()) - { - echo 'Frage wurde erfolgreich angelegt'; - $nummer=999; - } - else - { - echo 'Fehler beim Speichern der FrageSprache: '.$frage_obj->errormsg.''; - } - } - else - { - echo 'Fehler beim Speichern der Frage: '.$frage_obj->errormsg.''; - } -} - -//Gebiet pruefen -if(isset($_GET['type']) && $_GET['type']=='gebietpruefen' && isset($_GET['gebiet_id'])) -{ - $gebiet = new gebiet($gebiet_id); - - if($gebiet->check_gebiet($gebiet_id) && $gebiet->warningmsg=='') - { - echo "Das Gebiet $gebiet->bezeichnung wurde erfolgreich ueberprueft"; - } - else - { - if($gebiet->errormsg!='') - { - echo "Bei der Ueberpruefung des Gebiets '$gebiet->bezeichnung' sind folgende Fehler aufgetreten:
"; - echo "".nl2br($gebiet->errormsg).""; - echo '

'; - } - if($gebiet->warningmsg!='') - { - echo "Folgende Warnungen sind aufgetreten:
"; - echo nl2br($gebiet->warningmsg); - echo '

'; - } - } - - $maxpunkte = $gebiet->berechneMaximalpunkte($gebiet_id); - if($gebiet->maxpunkte!=$maxpunkte) - { - echo '
die empfohlene Punkteanzahl betraegt '.$maxpunkte.' Punkte anstatt '.$gebiet->maxpunkte.' Punkte'; - } -} - -echo '
'; - -//Liste der Studiengänge -echo 'Studiengang: '; - -//Liste der Gebiete - $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 - $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:'; - - 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 - $selected=''; - - if ($stg_kz=="-1") - echo ''."\n"; - else - echo ''."\n"; - } - echo ''; - } - - echo " Pruefen | "; - echo " Bearbeiten"; - //echo "
Gebiet_id=".$gebiet_id.""; - echo '
'; - - //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)) - { - if($sprache=='') - $sprache = $row->sprache; - if($sprache==$row->sprache) - $selected='style="border:1px solid black;"'; - else - $selected=''; - echo " $row->sprache"; - } - } - echo '
'; - 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($result = $db->db_query($qry)) - { - echo 'Nummer: '; - while($row = $db->db_fetch_object($result)) - { - if($nummer=='') - $nummer = $row->nummer; - - if($nummer==$row->nummer) - echo " $row->nummer -"; - else - echo " $row->nummer -"; - } - echo " neue Frage hinzufuegen"; - if($nummer<$db->db_num_rows($result)-1) - echo " - Weiter >>"; - } - - echo "\n\n
"; - - //Fragen holen - $frage = new frage(); - $frage->getFragen($gebiet_id, $nummer); - - if(count($frage->result)==1) - { - $frage_id = $frage->result[0]->frage_id; - } - else - { - //Wenn fuer diese Nummer mehrere Fragen vorhanden sind, - //koennen diese extra ausgewaehlt werden - echo 'FrageID: '; - foreach ($frage->result as $row) - { - if($frage_id=='') - $frage_id=$row->frage_id; - - if($frage_id==$row->frage_id) - echo "$row->frage_id -"; - else - echo "$row->frage_id -"; - } - } -} -else -{ - echo ' Keine Gebiete in diesem Studiengang '; - echo '
'; -} - -if($frage_id!='') -{ - $frage->load($frage_id); - $frage->getFrageSprache($frage_id, $sprache); - - - echo '"; - //Vorschau fuer das Text-Feld - echo ""; - echo "
'; - echo '
- - -
'; - //Fragen - echo ""; - echo ""; - //Upload Feld fuer Bild - echo " - - "; - //Wenn ein Bild vorhanden ist, dann anzeigen - if($frage->bild!='') - { - echo "\n'; - //Zusaetzliche EingabeFelder anzeigen - echo ""; - echo " - "; - echo "
-
- Bild: - -
-
-
- Audio: - -
-
"; - } - else - { - echo "\n
\n"; - if($frage->audio=='') - echo "Kein Bild vorhanden\n"; - } - if($frage->audio!='') - { - 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 "
\n\n
"; - echo "
"; - echo ""; - echo "

"; - echo "
"; - echo "
"; - echo "
"; - echo "
"; - echo "
"; - echo "
"; - echo "
"; - echo "
"; - echo "
"; - echo "
"; - echo "
"; - echo "
"; - echo "
"; - echo "Operatoren:
π
·


Weitere"; - echo "
Demo demo?'checked="true"':'')." /> - Level - Nummer
"; - echo ""; - echo "
Vorschau:
$frage->text
"; - echo ''; - - $vorschlag = new vorschlag(); - - if($vorschlag_id!='') - if(!$vorschlag->load($vorschlag_id, $sprache)) - die($vorschlag->errormsg); - if($save_vorschlag_error) - { - $vorschlag->vorschlag_id = (isset($_POST['vorschlag_id'])?$_POST['vorschlag_id']:''); - $vorschlag->frage_id = $_GET['frage_id']; - $vorschlag->nummer = $_POST['nummer']; - $vorschlag->punkte = $_POST['punkte']; - $vorschlag->text = $_POST['text']; - $vorschlag->bild = ''; - } - //Vorschlag - echo 'Vorschlag'.($vorschlag_id!=''?' Edit':'').'

'; - echo "
"; - echo ""; - echo ''; - echo ""; - echo ''; - echo ""; - echo ''; - echo ''; - echo '"; - echo ""; - echo ''; - //Upload Feld fuer Bild - echo ""; - echo ''; - echo ''; - //Upload Feld fuer Audio - echo ""; - - echo ""; - //Vorschau fuer das Text-Feld - echo ""; - echo "
Nummer:"; - echo ""; - echo ""; - echo ""; - echo "
Punkte:"; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo "
Text:\n"; - echo ""; - echo "

"; - echo "
"; - echo "
"; - echo "
"; - echo "
"; - echo "
"; - echo "
"; - echo "
"; - echo "
"; - echo "
"; - echo "
"; - echo "
"; - echo "
"; - echo "
"; - echo "Operatoren:
π
·


Weitere"; - echo "
Bild:
Audio:
".($vorschlag_id!=''?"frage_id'\" />":'')."
Vorschau:
$vorschlag->text
"; - echo "
"; - - echo ''; - - $vorschlag = new vorschlag(); - $vorschlag->getVorschlag($frage_id, $sprache, false); - $i=0; - if(count($vorschlag->result)>0) - { - echo ''; - - $a=array(); - foreach ($vorschlag->result as $vs) - { - $i++; - echo ""; - if($vs->punkte>=0) - { - echo " - - - - - "; - - } - - echo ''; - echo '
NummerPunkteTextBildAudio
$vs->nummer$vs->punkte"; - } - else - echo "$vs->punkte"; - echo "$vs->text".($vs->bild!=''?"":"").""; - $a[] = $vs->punkte; - if($vs->audio!='') - { - echo ' '; - } - echo " editdelete
Summe:'.number_format(array_sum($a),2, ".", "").'  













'; - } -} - - -?> - - +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ +/** + * Administrationsseite fuer das Testtool + */ + +header('Content-type: application/xhtml+xml'); + +require_once('../../../config/cis.config.inc.php'); +require_once('../../../include/functions.inc.php'); +require_once('../../../include/frage.class.php'); +require_once('../../../include/vorschlag.class.php'); +require_once('../../../include/benutzerberechtigung.class.php'); +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(); + +$user = get_uid(); +$rechte = new benutzerberechtigung(); +$rechte->getBerechtigungen($user); + +if (!$rechte->isBerechtigt('basis/testtool', null, 's')) + die($rechte->errormsg); + +$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']; +} +else +{ + $gebiet_id = ''; +} + +if (isset($_GET['nummer'])) +{ + $nummer = $_GET['nummer']; +} +else +{ + $nummer = ''; +} + +if (isset($_GET['frage_id'])) +{ + $frage_id = $_GET['frage_id']; +} +else +{ + $frage_id = ''; +} + +if (isset($_GET['vorschlag_id'])) +{ + $vorschlag_id = $_GET['vorschlag_id']; +} +else +{ + $vorschlag_id = ''; +} +$filter = isset($_GET['filter'])?$_GET['filter']:''; + +$save_vorschlag_error = false; +/**/ + +echo ''; +?> + + + + +Testtool-Administration + + + + + + + +

+
Testtool - Administrationsseite
+ +

+isBerechtigt('basis/testtool', null, 'suid')) + die($rechte->errormsg); + + if (isset($_FILES['bild']['tmp_name'])) + { + //Extension herausfiltern + $ext = explode('.', $_FILES['bild']['name']); + $ext = mb_strtolower($ext[count($ext) - 1]); + + //--check that it's a jpeg or gif or png + if ($ext == 'gif' || $ext == 'png' || $ext == 'jpg' || $ext == 'jpeg') + { + $filename = $_FILES['bild']['tmp_name']; + //File oeffnen + $fp = fopen($filename, 'r'); + //auslesen + $content = fread($fp, filesize($filename)); + fclose($fp); + //base64 codieren + $content = base64_encode($content); + + $frage = new frage(); + if ($frage->getFrageSprache($_GET['frage_id'], $sprache)) + { + //HEX Wert in die Datenbank speichern + $frage->bild = $content; + $frage->new = false; + if ($frage->save_fragesprache()) + echo "Bild gespeichert
"; + else + echo ''.$frage->errormsg.'
'; + } + else + echo ''.$frage->errormsg.'
'; + } + else + echo "File ist kein gueltiges Bild
"; + } +} +//Bei Upload eines Audiofiles +if (isset($_POST['submitaudio'])) +{ + if (!$rechte->isBerechtigt('basis/testtool', null, 'suid')) + die($rechte->errormsg); + + if (isset($_FILES['audio']['tmp_name'])) + { + //Extension herausfiltern + $ext = explode('.', $_FILES['audio']['name']); + $ext = mb_strtolower($ext[count($ext) - 1]); + + //--check that it's a mp3 + if ($ext == 'mp3' || $ext == 'ogg') + { + $filename = $_FILES['audio']['tmp_name']; + //File oeffnen + $content = file_get_contents($filename); + /*$fp = fopen($filename,'r'); + //auslesen + $content = fread($fp, filesize($filename)); + fclose($fp);*/ + //die('

'.$content); + //base64 codieren + $content = base64_encode($content); + $frage = new frage(); + if ($frage->getFrageSprache($_GET['frage_id'], $sprache)) + { + //HEX Wert in die Datenbank speichern + $frage->audio = $content; + $frage->new = false; + if ($frage->save_fragesprache()) + echo "Audio gespeichert
"; + else + echo ''.$frage->errormsg.'
'; + } + else + echo ''.$frage->errormsg.'
'; + } + else + echo "Es duerfen nur mp3 Dateien hochgeladen werden
"; + } +} + +//Speichern der Frage-Daten +if (isset($_POST['submitdata'])) +{ + if (!$rechte->isBerechtigt('basis/testtool', null, 'suid')) + die($rechte->errormsg); + + $frage = new frage(); + if ($frage->load($_GET['frage_id'])) + { + $frage->demo = isset($_POST['demo']); + $frage->nummer = $_POST['nummer']; + $frage->level = $_POST['level']; + $frage->aktiv = isset($_POST['aktiv'])?true:false; + $frage->new = false; + + if ($frage->save()) + { + if ($frage->getFrageSprache($frage->frage_id, $sprache)) + { + $frage->new = false; + } + + if (isset($_POST['text'])) + $frage->text = $_POST['text']; + $frage->sprache = $sprache; + + $xml = ''.$frage->text.''; + libxml_use_internal_errors(true); + if (simplexml_load_string($xml) || $_POST['text'] == '') + { + if ($frage->save_fragesprache()) + { + echo "Daten gespeichert
"; + $nummer = $frage->nummer; + } + else + echo 'Fehler:'.$frage->errormsg.'
'; + } + else + { + $frage_error_text = $frage->text; + echo 'Fehler: Text ist kein gueltiges XML:
'; + foreach (libxml_get_errors() as $error) + { + echo $error->message.'
'; + } + echo '

'; + } + } + else + echo ''.$frage->errormsg.'
'; + } + else + echo ''.$frage->errormsg.'
'; +} + +//Speichern eines Vorschlages +if (isset($_POST['submitvorschlag'])) +{ + if (!$rechte->isBerechtigt('basis/testtool', null, 'suid')) + die($rechte->errormsg); + + $bildcontent = ''; + if (isset($_FILES['bild']['tmp_name']) && is_uploaded_file($_FILES['bild']['tmp_name'])) + { + //Extension herausfiltern + $ext = explode('.', $_FILES['bild']['name']); + $ext = mb_strtolower($ext[count($ext) - 1]); + + //--check that it's a jpeg or gif or png + if ($ext == 'gif' || $ext == 'png' || $ext == 'jpg' || $ext == 'jpeg') + { + $filename = $_FILES['bild']['tmp_name']; + //File oeffnen + $fp = fopen($filename, 'r'); + //auslesen + $bildcontent = fread($fp, filesize($filename)); + fclose($fp); + //base64 codieren + $bildcontent = base64_encode($bildcontent); + } + else + echo "Datei ist kein Bild!
"; + } + + $audiocontent = ''; + if (isset($_FILES['audio']['tmp_name']) && is_uploaded_file($_FILES['audio']['tmp_name'])) + { + //Extension herausfiltern + $ext = explode('.', $_FILES['audio']['name']); + $ext = mb_strtolower($ext[count($ext) - 1]); + + //--check that it's a jpeg or gif or png + if ($ext == 'mp3') + { + $filename = $_FILES['audio']['tmp_name']; + //File oeffnen + $fp = fopen($filename, 'r'); + //auslesen + $audiocontent = fread($fp, filesize($filename)); + fclose($fp); + //base64 codieren + $audiocontent = base64_encode($audiocontent); + } + else + echo "Datei ist kein Bild!
"; + } + $vorschlag = new vorschlag(); + $error = false; + + if ($_POST['vorschlag_id'] != '') + { + if ($vorschlag->load($_POST['vorschlag_id'])) + { + $vorschlag->new = false; + $vorschlag->vorschlag_id = $_POST['vorschlag_id']; + } + else + { + echo 'Fehler beim Laden des Datensatzes
'; + $error = true; + } + } + else + { + $vorschlag->new = true; + $vorschlag->insertamum = date('Y-m-d H:i:s'); + $vorschlag->insertvon = $user; + } + if ($_POST['nummer'] == '' || !is_numeric($_POST['nummer'])) + { + $error = true; + echo 'Nummer ist ungueltig
'; + } + + if (!$error) + { + $vorschlag->bild = $bildcontent; + $vorschlag->audio = $audiocontent; + $vorschlag->frage_id = $_GET['frage_id']; + $vorschlag->nummer = $_POST['nummer']; + $vorschlag->punkte = $_POST['punkte']; + $vorschlag->text = $_POST['text']; + $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); + if (simplexml_load_string($xml) || $_POST['text'] == '') + { + if ($vorschlag->save()) + { + if ($vorschlag->save_vorschlagsprache()) + { + echo "Vorschlag gespeichert
"; + } + else + { + $save_vorschlag_error = true; + echo "Fehler beim Speichern von Vorschlagsprache: $vorschlag->errormsg
"; + } + } + else + { + $save_vorschlag_error = true; + echo ''.$vorschlag->errormsg.'
'; + } + } + else + { + $vorschlag_error_text = $vorschlag->text; + echo 'Fehler: Text ist kein gueltiges XML:
'; + foreach (libxml_get_errors() as $error) + { + echo $error->message.'
'; + } + echo '

'; + } + } + else + $save_vorschlag_error = true; +} +//Vorschlag loeschen +if (isset($_GET['type']) && $_GET['type'] == 'delete' && isset($_GET['vorschlag_id'])) +{ + if (!$rechte->isBerechtigt('basis/testtool', null, 'suid')) + die($rechte->errormsg); + + $vs = new vorschlag(); + if (!$vs->delete($_GET['vorschlag_id'])) + echo ''.$vs->errormsg.'
'; + $vorschlag_id = ''; +} + +if (isset($_POST['type']) && $_POST['type'] == 'deleteFrage') +{ + if (!$rechte->isBerechtigt('basis/testtool', null, 'suid')) + die($rechte->errormsg); + + $frage = new frage(); + if (!$frage->delete($_GET['frage_id'])) + { + echo "Löschen fehlgeschlagen:".$frage->errormsg; + } + $nummer = ''; +} + +// anlegen einer neuen Frage +if (isset($_GET['type']) && $_GET['type'] == 'neuefrage') +{ + if (!$rechte->isBerechtigt('basis/testtool', null, 'suid')) + die($rechte->errormsg); + + $frage_obj = new frage(); + $nummer = $frage_obj->getMaxNummer($gebiet_id) + 1; + + $frage_obj->gebiet_id = $_GET['gebiet_id']; + $frage_obj->nummer = $nummer; + $frage_obj->demo = false; + $frage_obj->insertamum = date('Y-m-d H:i:s'); + $frage_obj->insertvon = $user; + $frage_obj->sprache = $sprache; + $frage_obj->aktiv = true; + $frage_obj->new = true; + if ($frage_obj->save()) + { + if ($frage_obj->save_fragesprache()) + { + echo 'Frage wurde erfolgreich angelegt'; + } + else + { + echo 'Fehler beim Speichern der FrageSprache: '.$frage_obj->errormsg.''; + } + } + else + { + echo 'Fehler beim Speichern der Frage: '.$frage_obj->errormsg.''; + } +} + +//Gebiet pruefen +if (isset($_GET['type']) && $_GET['type'] == 'gebietpruefen' && isset($_GET['gebiet_id'])) +{ + $gebiet = new gebiet($gebiet_id); + + if ($gebiet->check_gebiet($gebiet_id) && $gebiet->warningmsg == '') + { + echo "Das Gebiet $gebiet->bezeichnung wurde erfolgreich ueberprueft"; + } + else + { + if ($gebiet->errormsg != '') + { + echo "Bei der Ueberpruefung des Gebiets '$gebiet->bezeichnung' sind folgende Fehler aufgetreten:
"; + echo "".nl2br($gebiet->errormsg).""; + echo '

'; + } + if ($gebiet->warningmsg != '') + { + echo "Folgende Warnungen sind aufgetreten:
"; + echo nl2br($gebiet->warningmsg); + echo '

'; + } + } + + $maxpunkte = $gebiet->berechneMaximalpunkte($gebiet_id); + if ($gebiet->maxpunkte != $maxpunkte) + { + echo '
die empfohlene Punkteanzahl betraegt '.$maxpunkte.' Punkte anstatt '.$gebiet->maxpunkte.' Punkte'; + } +} + +//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 '
'; + +//Liste der Studiengänge +echo 'Studiengang: '; + +//Liste der Gebiete + $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 + $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:'; + + 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 + $selected = ''; + + if ($stg_kz == "-1") + echo ''."\n"; + else + echo ''."\n"; + } + echo ''; + } + + echo " Prüfen | "; + echo " Bearbeiten |"; + echo " Neues Gebiet | "; + //echo " PDF exportieren"; + //echo "
Gebiet_id=".$gebiet_id.""; + echo '
'; + + //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)) + { + if ($sprache == '') + $sprache = $row->sprache; + if ($sprache == $row->sprache) + $selected = 'style="border:1px solid black;"'; + else + $selected = ''; + echo " $row->sprache"; + } + } + echo '
'; + echo '
'; + + // Liste der Fragen + 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 Checkboxes + $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 '
Nummer: '; + while ($row = $db->db_fetch_object($result)) + { + if ($nummer == '') + $nummer = $row->nummer; + + $style = ''; + if ($db->db_parse_bool($row->aktiv) == false) + $style = 'style="color: lightgrey"'; + + if ($nummer == $row->nummer) + echo " $row->nummer -"; + else + echo " $row->nummer -"; + } + 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
"; + + //Fragen holen + $frage = new frage(); + $frage->getFragen($gebiet_id, $nummer); + + if (count($frage->result) == 1) + { + $frage_id = $frage->result[0]->frage_id; + } + else + { + //Wenn fuer diese Nummer mehrere Fragen vorhanden sind, + //koennen diese extra ausgewaehlt werden + echo 'FrageID: '; + foreach ($frage->result as $row) + { + if ($frage_id == '') + $frage_id = $row->frage_id; + + if ($frage_id == $row->frage_id) + echo "$row->frage_id -"; + else + echo "$row->frage_id -"; + } + } +} +else +{ + echo ' Keine Gebiete in diesem Studiengang '; + echo ''; +} + +if ($frage_id != '') +{ + $frage->load($frage_id); + $frage->getFrageSprache($frage_id, $sprache); + + + echo '"; + //Vorschau fuer das Text-Feld + echo ""; + echo "
'; + echo '
+ + +
'; + //Fragen + echo ""; + echo ""; + //Upload Feld fuer Bild + echo " + + "; + //Wenn ein Bild vorhanden ist, dann anzeigen + if ($frage->bild != '') + { + echo "\n'; + //Zusaetzliche EingabeFelder anzeigen + echo ""; + echo " + "; + echo "
+
+ Bild: + +
+
+
+ Audio: + +
+
"; + } + else + { + echo "\n
\n"; + if ($frage->audio == '') + echo "Kein Bild vorhanden\n"; + } + if ($frage->audio != '') + { + 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 "
\n\n
"; + echo "
"; + echo ""; + echo "

"; + echo "
"; + echo "
"; + echo "
"; + echo "
"; + echo "
"; + echo "
"; + echo "
"; + echo "
"; + echo "
"; + echo "
"; + echo "
"; + echo "
"; + echo "
"; + echo "Operatoren:
π
·


Weitere"; + echo "
Demo demo?'checked="true"':'')." /> + Level + Nummer + Aktiv aktiv == true?'checked="true"':'')." />
"; + echo ""; + echo "
Vorschau:
$frage->text
"; + echo ''; + + $vorschlag = new vorschlag(); + + if ($vorschlag_id != '') + if (!$vorschlag->load($vorschlag_id, $sprache)) + die($vorschlag->errormsg); + + if ($save_vorschlag_error) + { + $vorschlag->vorschlag_id = (isset($_POST['vorschlag_id'])?$_POST['vorschlag_id']:''); + $vorschlag->frage_id = $_GET['frage_id']; + $vorschlag->nummer = $_POST['nummer']; + $vorschlag->punkte = $_POST['punkte']; + $vorschlag->text = $_POST['text']; + $vorschlag->bild = ''; + } + //Vorschlag + echo 'Vorschlag'.($vorschlag_id != ''?' Edit':'').'

'; + echo "
"; + echo ""; + echo ''; + if (!isset($vorschlag_id) || $vorschlag_id != '') + { + echo ""; + echo ''; + echo ""; + echo ''; + echo ''; + echo '"; + echo ""; + echo ''; + //Upload Feld fuer Bild + echo ""; + echo ''; + echo ''; + //Upload Feld fuer Audio + echo ""; + + //Aktiv Checkbox + echo ""; + echo ""; + //Vorschau fuer das Text-Feld + echo ""; + 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, false); + echo "
Nummer:"; //@Todo: Count ($vorschlag->result) liefert die naechste Nummer nur dann richtig, falls keine Zahl dazwischen fehlt (1,3,4,..). Hier sollte die letzte Nummer ermittelt werden. + } + else + { + echo "
Nummer:"; + } + } + echo ""; + echo ""; + echo ""; + echo "
Punkte:"; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo "
Text:\n"; + echo ""; + echo "

"; + echo "
"; + echo "
"; + echo "
"; + echo "
"; + echo "
"; + echo "
"; + echo "
"; + echo "
"; + echo "
"; + echo "
"; + echo "
"; + echo "
"; + echo "
"; + echo "Operatoren:
π
·


Weitere"; + echo "
Bild:
Audio:
Aktivaktiv == true || is_null($vorschlag->aktiv)) + { + echo "checked='checked'"; + } + elseif ($vorschlag->aktiv == false) + { + echo ""; + } + echo "/>
".($vorschlag_id != ''?"frage_id'\" />":'')."
Vorschau:
$vorschlag->text
"; + echo "
"; + + echo ''; + + $vorschlag = new vorschlag(); + $vorschlag->getVorschlag($frage_id, $sprache, false, false); + $i = 0; + $allevorschlaege = ''; + if (count($vorschlag->result) > 0) + { + echo '
'; + echo ''; + + $a = array(); + foreach ($vorschlag->result as $vs) + { + $i++; + echo ""; + if ($vs->punkte >= 0) + { + echo " + + + + + "; + $allevorschlaege .= $vs->vorschlag_id.","; + } + + echo ''; + echo '
NummerPunkteTextBildAudioAktiv
$vs->nummer$vs->punkte"; + } + else + echo "$vs->punkte"; + echo "$vs->text".($vs->bild != ''?"":"").""; + $a[] = $vs->punkte; + if ($vs->audio != '') + { + echo ' '; + } + echo " editdeleteload($vs->vorschlag_id); + if ($vss->aktiv == true) echo "checked='checked'"; + + 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..4cf724c42 --- /dev/null +++ b/include/ablauf.class.php @@ -0,0 +1,324 @@ +, + * Andreas Oesterreicher , + * Rudolf Hangl and + * Andreas Moik . + */ +/** + * 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; + + /** + * 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 Studiengang) + * @param $studiengang_kz Studiengang + * @return boolean true wenn ok sonst false + */ + public function getAblaufGebiete($studiengang_kz, $studienplan_id=null) { + $qry = "SELECT * FROM testtool.tbl_ablauf WHERE studiengang_kz=".$studiengang_kz; + if (!is_null($studienplan_id)) + $qry .= " AND studienplan_id=".$studienplan_id; + + 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; + + $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; + } + } + } +} +?> diff --git a/include/frage.class.php b/include/frage.class.php index 59848f2f6..1c142a76f 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; @@ -80,7 +81,7 @@ class frage extends basis_db return false; } - $qry = "SELECT * FROM testtool.tbl_frage WHERE frage_id=".$this->db_add_param($frage_id, FHC_INTEGER); + $qry = "SELECT * FROM testtool.tbl_frage LEFT OUTER JOIN testtool.tbl_frage_sprache USING (frage_id) WHERE frage_id=".$this->db_add_param($frage_id, FHC_INTEGER); if($this->db_query($qry)) { @@ -96,6 +97,8 @@ class frage extends basis_db $this->insertamum = $row->insertamum; $this->insertvon = $row->insertvon; $this->level = $row->level; + $this->aktiv = $row->aktiv; + $this->bild = $row->bild; return true; } @@ -137,7 +140,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 +148,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 +160,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).";"; } @@ -222,12 +227,12 @@ class frage extends basis_db else { $qry = 'UPDATE testtool.tbl_frage_sprache SET'. - ' text='.$this->db_add_param($this->text).','. - ' bild='.$this->db_add_param($this->bild).','. - ' audio='.$this->db_add_param($this->audio).','. - ' updateamum='.$this->db_add_param($this->updateamum).','. - ' 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).";"; + ' text='.$this->db_add_param($this->text).','. + ' bild='.$this->db_add_param($this->bild).','. + ' audio='.$this->db_add_param($this->audio).','. + ' updateamum='.$this->db_add_param($this->updateamum).','. + ' 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)) @@ -265,6 +270,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); //TODO $this->result[] = $obj; } @@ -281,7 +287,7 @@ class frage extends basis_db /** * Liefert die Fragen eines Gebietes * - * @param $gebiet_id + * @param integer $gebiet_id * @return true wenn ok, sonst false */ public function getFragenGebiet($gebiet_id) @@ -301,6 +307,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,7 +353,7 @@ 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"; } @@ -391,6 +398,7 @@ class frage extends basis_db $this->level = $row->level; $this->demo = $this->db_parse_bool($row->demo); $this->nummer = $row->nummer; + $this->aktiv = $this->db_parse_bool($row->aktiv); return true; } @@ -535,6 +543,7 @@ class frage extends basis_db 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;"; + if($this->db_query($qry)) { if($row = $this->db_fetch_object()) @@ -819,5 +828,64 @@ 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; + } + } + + /** + * Gibt die letzte (hoechste) Nummer eines Gebiets zurueck + * + * @param integer $gebiet_id Gebiet der Fragen + * @return integer $number Nummer der letzten Frage des Gebiets, wenn gefunden, sonst false + */ + public function getMaxNummer($gebiet_id) + { + $number = ''; + $qry = "SELECT nummer FROM testtool.tbl_frage + WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." ORDER BY nummer DESC LIMIT 1"; + + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $number = $row->nummer; + } + return $number; + } + else + { + return false; + } + } } ?> diff --git a/include/gebiet.class.php b/include/gebiet.class.php index daabbffc6..8983100ce 100644 --- a/include/gebiet.class.php +++ b/include/gebiet.class.php @@ -72,7 +72,9 @@ class gebiet extends basis_db */ public function load($gebiet_id) { - $qry = "SELECT * FROM testtool.tbl_gebiet WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER); + $sprache = new sprache(); + $bezeichnung_mehrsprachig = $sprache->getSprachQuery('bezeichnung_mehrsprachig'); + $qry = "SELECT *,$bezeichnung_mehrsprachig FROM testtool.tbl_gebiet WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER); if($this->db_query($qry)) { @@ -81,6 +83,7 @@ class gebiet extends basis_db $this->gebiet_id = $row->gebiet_id; $this->kurzbz = $row->kurzbz; $this->bezeichnung = $row->bezeichnung; + $this->bezeichnung_mehrsprachig = $sprache->parseSprachResult('bezeichnung_mehrsprachig', $row); $this->beschreibung = $row->beschreibung; $this->zeit = $row->zeit; $this->multipleresponse = $this->db_parse_bool($row->multipleresponse); @@ -193,47 +196,65 @@ class gebiet extends basis_db { $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).','. - $this->db_add_param($this->beschreibung).','. - $this->db_add_param($this->zeit).','. - $this->db_add_param($this->multipleresponse, FHC_BOOLEAN).','. - $this->db_add_param($this->kategorien, FHC_BOOLEAN).','. - $this->db_add_param($this->maxfragen).','. - $this->db_add_param($this->zufallfrage, FHC_BOOLEAN).','. - $this->db_add_param($this->zufallvorschlag, FHC_BOOLEAN).','. - $this->db_add_param($this->level_start).','. - $this->db_add_param($this->level_sprung_auf).','. - $this->db_add_param($this->level_sprung_ab).','. - $this->db_add_param($this->levelgleichverteilung, FHC_BOOLEAN).','. - $this->db_add_param($this->maxpunkte).','. - $this->db_add_param($this->antwortenprozeile).','. - $this->db_add_param($this->insertamum).','. - $this->db_add_param($this->insertvon). - ',null, null);'; + levelgleichverteilung, maxpunkte, antwortenprozeile, '; + + foreach($this->bezeichnung_mehrsprachig as $key=>$value) + { + $idx = sprache::$index_arr[$key]; + $qry.=" bezeichnung_mehrsprachig[$idx],"; + } + + $qry.='insertamum, insertvon , updateamum, updatevon) VALUES('. + + $this->db_add_param($this->kurzbz).','. + $this->db_add_param($this->bezeichnung).','. + $this->db_add_param($this->beschreibung).','. + $this->db_add_param($this->zeit).','. + $this->db_add_param($this->multipleresponse, FHC_BOOLEAN).','. + $this->db_add_param($this->kategorien, FHC_BOOLEAN).','. + $this->db_add_param($this->maxfragen).','. + $this->db_add_param($this->zufallfrage, FHC_BOOLEAN).','. + $this->db_add_param($this->zufallvorschlag, FHC_BOOLEAN).','. + $this->db_add_param($this->level_start).','. + $this->db_add_param($this->level_sprung_auf).','. + $this->db_add_param($this->level_sprung_ab).','. + $this->db_add_param($this->levelgleichverteilung, FHC_BOOLEAN).','. + $this->db_add_param($this->maxpunkte).','. + $this->db_add_param($this->antwortenprozeile).','; + foreach($this->bezeichnung_mehrsprachig as $key=>$value) + $qry.=$this->db_add_param($value).','; + + $qry .= $this->db_add_param($this->insertamum).','. + $this->db_add_param($this->insertvon). + ',null, null);'; } else { $qry = 'UPDATE testtool.tbl_gebiet SET'. - ' kurzbz='.$this->db_add_param($this->kurzbz).','. - ' bezeichnung='.$this->db_add_param($this->bezeichnung).','. - ' beschreibung='.$this->db_add_param($this->beschreibung).','. - ' zeit='.$this->db_add_param($this->zeit).','. - ' multipleresponse='.$this->db_add_param($this->multipleresponse, FHC_BOOLEAN).','. - ' kategorien='.$this->db_add_param($this->kategorien, FHC_BOOLEAN).','. - ' maxfragen='.$this->db_add_param($this->maxfragen).','. - ' zufallfrage='.$this->db_add_param($this->zufallfrage, FHC_BOOLEAN).','. - ' zufallvorschlag='.$this->db_add_param($this->zufallvorschlag, FHC_BOOLEAN).','. - ' level_start='.$this->db_add_param($this->level_start).','. - ' level_sprung_auf='.$this->db_add_param($this->level_sprung_auf).','. - ' level_sprung_ab='.$this->db_add_param($this->level_sprung_ab).','. - ' levelgleichverteilung='.$this->db_add_param($this->levelgleichverteilung, FHC_BOOLEAN).','. - ' maxpunkte='.$this->db_add_param($this->maxpunkte).','. - ' antwortenprozeile='.$this->db_add_param($this->antwortenprozeile).','. - ' updateamum='.$this->db_add_param($this->updateamum).','. - ' updatevon='.$this->db_add_param($this->updatevon). - " WHERE gebiet_id=".$this->db_add_param($this->gebiet_id, FHC_INTEGER, false).";"; + ' kurzbz='.$this->db_add_param($this->kurzbz).','. + ' bezeichnung='.$this->db_add_param($this->bezeichnung).','. + ' beschreibung='.$this->db_add_param($this->beschreibung).','. + ' zeit='.$this->db_add_param($this->zeit).','. + ' multipleresponse='.$this->db_add_param($this->multipleresponse, FHC_BOOLEAN).','. + ' kategorien='.$this->db_add_param($this->kategorien, FHC_BOOLEAN).','. + ' maxfragen='.$this->db_add_param($this->maxfragen).','. + ' zufallfrage='.$this->db_add_param($this->zufallfrage, FHC_BOOLEAN).','. + ' zufallvorschlag='.$this->db_add_param($this->zufallvorschlag, FHC_BOOLEAN).','. + ' level_start='.$this->db_add_param($this->level_start).','. + ' level_sprung_auf='.$this->db_add_param($this->level_sprung_auf).','. + ' level_sprung_ab='.$this->db_add_param($this->level_sprung_ab).','. + ' levelgleichverteilung='.$this->db_add_param($this->levelgleichverteilung, FHC_BOOLEAN).','. + ' maxpunkte='.$this->db_add_param($this->maxpunkte).','. + ' antwortenprozeile='.$this->db_add_param($this->antwortenprozeile).','. + ' updateamum='.$this->db_add_param($this->updateamum).','. + ' updatevon='.$this->db_add_param($this->updatevon).','; + foreach($this->bezeichnung_mehrsprachig as $key=>$value) + { + $idx = sprache::$index_arr[$key]; + $qry .= " bezeichnung_mehrsprachig[$idx]=".$this->db_add_param($value).","; + } + $qry = mb_substr($qry,0,-1); + $qry .= ' WHERE gebiet_id='.$this->db_add_param($this->gebiet_id, FHC_INTEGER, false).';'; } if($this->db_query($qry)) @@ -241,7 +262,7 @@ class gebiet extends basis_db //aktuelle ID aus der Sequence holen if($new) { - $qry='SELECT currval("testtool.tbl_gebiet_gebiet_id_seq") as id;'; + $qry="SELECT currval('testtool.tbl_gebiet_gebiet_id_seq') as id;"; if($this->db_query($qry)) { if($row = $this->db_fetch_object()) diff --git a/include/vorschlag.class.php b/include/vorschlag.class.php index d9d70936d..85375133a 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 = $this->db_parse_bool($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).";"; } @@ -275,10 +279,9 @@ class vorschlag extends basis_db /** * Laedt die Vorschlaege zu einer Frage * - * @param $frage_id - * @param $sprache - * @param $random Wenn true, dann werden die Vorschlaege in zufaelliger - * Reihenfolge geladen, sonst nach nummer sortiert + * @param integer $frage_id + * @param string $sprache + * @param boolean $random Wenn true, dann werden die Vorschlaege in zufaelliger Reihenfolge geladen, sonst nach nummer sortiert */ public function getVorschlag($frage_id, $sprache, $random) { @@ -287,7 +290,6 @@ class vorschlag extends basis_db $qry.=" ORDER BY random()"; else $qry.=" ORDER BY nummer"; - if($result = $this->db_query($qry)) { while($row = $this->db_fetch_object($result)) diff --git a/system/dbupdate_3.2.php b/system/dbupdate_3.2.php index 735f0ddb9..dc6c37ab7 100755 --- a/system/dbupdate_3.2.php +++ b/system/dbupdate_3.2.php @@ -1345,9 +1345,81 @@ if(!$result = @$db->db_query("SELECT anmerkung FROM public.tbl_konto LIMIT 1")) if(!$db->db_query($qry)) echo 'public.tbl_konto '.$db->db_last_error().'
'; - else - echo 'public.tbl_konto: Spalte Anmerkung hinzugefuegt!
'; + else + echo 'public.tbl_konto: Spalte Anmerkung hinzugefuegt!
'; } + +// Studienplan_id zu testtool.tbl_ablauf +if(!$result = @$db->db_query("SELECT studienplan_id FROM testtool.tbl_ablauf LIMIT 1")) +{ + $qry = "ALTER TABLE testtool.tbl_ablauf ADD COLUMN studienplan_id integer; + ALTER TABLE testtool.tbl_ablauf ADD CONSTRAINT fk_studienplan_id FOREIGN KEY (studienplan_id) REFERENCES lehre.tbl_studienplan (studienplan_id) ON DELETE RESTRICT ON UPDATE CASCADE;"; + + if(!$db->db_query($qry)) + echo 'testtool.tbl_ablauf '.$db->db_last_error().'
'; + else + echo 'testtool.tbl_ablauf: Spalte studienplan_id hinzugefuegt!
'; +} + +// Aktiv-Attribut zu testtool.tbl_frage +if(!$result = @$db->db_query("SELECT aktiv FROM testtool.tbl_frage LIMIT 1")) +{ + $qry = "ALTER TABLE testtool.tbl_frage ADD COLUMN aktiv boolean DEFAULT TRUE; + UPDATE testtool.tbl_frage SET aktiv=TRUE;"; + + if(!$db->db_query($qry)) + echo 'testtool.tbl_frage '.$db->db_last_error().'
'; + else + echo 'testtool.tbl_frage: Spalte aktiv hinzugefuegt und auf TRUE gesetzt!
'; +} + +// Aktiv-Attribut zu testtool.tbl_vorschlag +if(!$result = @$db->db_query("SELECT aktiv FROM testtool.tbl_vorschlag LIMIT 1")) +{ + $qry = "ALTER TABLE testtool.tbl_vorschlag ADD COLUMN aktiv boolean DEFAULT TRUE; + UPDATE testtool.tbl_vorschlag SET aktiv=TRUE;"; + + if(!$db->db_query($qry)) + echo 'testtool.tbl_vorschlag '.$db->db_last_error().'
'; + else + echo 'testtool.tbl_vorschlag: Spalte aktiv hinzugefuegt!
'; +} + +// Bezeichnung_mehrsprachig in testtool.tbl_gebiet +if(!$result = @$db->db_query("SELECT bezeichnung_mehrsprachig FROM testtool.tbl_gebiet LIMIT 1")) +{ + $qry = "ALTER TABLE testtool.tbl_gebiet ADD COLUMN bezeichnung_mehrsprachig varchar(255)[];"; + + if(!$db->db_query($qry)) + echo 'testtool.tbl_gebiet '.$db->db_last_error().'
'; + else + echo 'testtool.tbl_gebiet: Spalte bezeichnung_mehrsprachig hinzugefuegt!
'; + + // Bezeichnung_mehrsprachig aus existierender Bezeichnung vorausfuellen. Ein Eintrag fuer jede Sprache mit Content aktiv. + $qry_help = "SELECT count(*) FROM public.tbl_sprache WHERE content=TRUE;"; + if(!$result = $db->db_query($qry_help)) + echo 'tbl_gebiet bezeichnung_mehrsprachig: Fehler beim ermitteln der Sprachen: '.$db->db_last_error().''; + else + { + $row = $db->db_fetch_row($result); + // In integer umwandeln + $row = intval($row[0]); + $bezeichnungen = ''; + for ($i = 1; $i <= $row; $i++) + { + $bezeichnungen .= "\"'||bezeichnung||'\","; + } + //Komma am Ende entfernen + $bezeichnungen = mb_substr($bezeichnungen,0,-1); + $qry = "UPDATE testtool.tbl_gebiet set bezeichnung_mehrsprachig = cast('{".$bezeichnungen."}' as varchar[]);"; + + if(!$db->db_query($qry)) + echo 'Setzen der bezeichnung_mehrsprachig fehlgeschlagen: '.$db->db_last_error().'
'; + else + echo 'testtool.tbl_gebiet: bezeichnung_mehrprachig automatisch aus existierender Bezeichnung uebernommen und fuer '.$row.' Sprachen gesetzt
'; + } +} + // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

Pruefe Tabellen und Attribute!

'; @@ -1577,15 +1649,15 @@ $tabellen=array( "public.tbl_variable" => array("name","uid","wert"), "public.tbl_vorlage" => array("vorlage_kurzbz","bezeichnung","anmerkung","mimetype"), "public.tbl_vorlagestudiengang" => array("vorlagestudiengang_id","vorlage_kurzbz","studiengang_kz","version","text","oe_kurzbz","style","berechtigung","anmerkung_vorlagestudiengang","aktiv"), - "testtool.tbl_ablauf" => array("ablauf_id","gebiet_id","studiengang_kz","reihung","gewicht","semester", "insertamum","insertvon","updateamum", "updatevon","ablauf_vorgaben_id"), + "testtool.tbl_ablauf" => array("ablauf_id","gebiet_id","studiengang_kz","reihung","gewicht","semester", "insertamum","insertvon","updateamum", "updatevon","ablauf_vorgaben_id","studienplan_id"), "testtool.tbl_ablauf_vorgaben" => array("ablauf_vorgaben_id","studiengang_kz","sprache","sprachwahl","content_id","insertamum","insertvon","updateamum", "updatevon"), "testtool.tbl_antwort" => array("antwort_id","pruefling_id","vorschlag_id"), - "testtool.tbl_frage" => array("frage_id","kategorie_kurzbz","gebiet_id","level","nummer","demo","insertamum","insertvon","updateamum","updatevon"), - "testtool.tbl_gebiet" => array("gebiet_id","kurzbz","bezeichnung","beschreibung","zeit","multipleresponse","kategorien","maxfragen","zufallfrage","zufallvorschlag","levelgleichverteilung","maxpunkte","insertamum", "insertvon", "updateamum", "updatevon", "level_start","level_sprung_auf","level_sprung_ab","antwortenprozeile"), + "testtool.tbl_frage" => array("frage_id","kategorie_kurzbz","gebiet_id","level","nummer","demo","insertamum","insertvon","updateamum","updatevon","aktiv"), + "testtool.tbl_gebiet" => array("gebiet_id","kurzbz","bezeichnung","beschreibung","zeit","multipleresponse","kategorien","maxfragen","zufallfrage","zufallvorschlag","levelgleichverteilung","maxpunkte","insertamum", "insertvon", "updateamum", "updatevon", "level_start","level_sprung_auf","level_sprung_ab","antwortenprozeile","bezeichnung_mehrsprachig"), "testtool.tbl_kategorie" => array("kategorie_kurzbz","gebiet_id"), "testtool.tbl_kriterien" => array("gebiet_id","kategorie_kurzbz","punkte","typ"), "testtool.tbl_pruefling" => array("pruefling_id","prestudent_id","studiengang_kz","idnachweis","registriert","semester"), - "testtool.tbl_vorschlag" => array("vorschlag_id","frage_id","nummer","punkte","insertamum","insertvon","updateamum","updatevon"), + "testtool.tbl_vorschlag" => array("vorschlag_id","frage_id","nummer","punkte","insertamum","insertvon","updateamum","updatevon","aktiv"), "testtool.tbl_pruefling_frage" => array("prueflingfrage_id","pruefling_id","frage_id","nummer","begintime","endtime"), "testtool.tbl_frage_sprache" => array("frage_id","sprache","text","bild","audio","insertamum","insertvon","updateamum","updatevon"), "testtool.tbl_vorschlag_sprache" => array("vorschlag_id","sprache","text","bild","audio","insertamum","insertvon","updateamum","updatevon"),