diff --git a/cis/testtool/admin/copy_gebiet.php b/cis/testtool/admin/copy_gebiet.php new file mode 100644 index 000000000..970ce2e0e --- /dev/null +++ b/cis/testtool/admin/copy_gebiet.php @@ -0,0 +1,328 @@ +, + * Andreas Oesterreicher , + * Rudolf Hangl and + * Gerald Simane-Sequens + */ +/** + * Kopiert ein Testtool-Gebiet mit allen Fragen und Antworten aber ohne Zuordnungen zu Studiengängen und dgl. + */ + +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/frage.class.php'); +require_once('../../../include/antwort.class.php'); +require_once('../../../include/vorschlag.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'); +$gebietToCopy = (isset($_POST['gebietToCopy'])?$_POST['gebietToCopy']:(isset($_GET['gebietToCopy'])?$_GET['gebietToCopy']:'')); +$gebiet = new gebiet(); + +echo 'Zurück zur Admin Seite

'; +echo '

Gebiet kopieren

'; +echo '

Kopiert ein Gebiet mit allen Fragen und Antworten aber ohne Zuordnungen zu Studiengängen und dgl.

'; + +if(!$rechte->isBerechtigt('basis/testtool')) + die($rechte->errormsg); + +$returnmsg = ''; +//Speichern der Daten +if (isset($_POST['copyGebiet']) && $_POST['copyGebiet'] == 'copyGebiet') +{ + if (!$rechte->isBerechtigt('basis/testtool', null, 'suid')) + die($rechte->errormsg); + + if (isset($_POST['kurzbz']) && $_POST['kurzbz'] != '') + { + //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) + { + $gebietToCopy = $_POST['gebietToCopy']; + + // Zu kopierendes Gebiet laden + $gebiet = new gebiet($gebietToCopy); + + $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->insertamum = date('Y-m-d H:i:s'); + $gebiet->insertvon = $user; + + // Neues Gebiet speichern + if ($gebiet->save(true)) + { + $returnmsg .= '

Gebiet erfolgreich kopiert

'; + + // Array mit allen Fragen und Antworten anlegen + $frageAntwortArray = array(); + + // Fragen laden + $fragenToCopy = new frage(); + $fragenToCopy->getFragenGebiet($gebietToCopy); + // Sprachen laden und für jede Sprache die Fragen und Antworten laden + foreach ($sprache->result as $row_sprache) + { + $fragenSpracheToCopy = new frage(); + $indexFrageSprache = 0; + foreach ($fragenToCopy->result AS $copyFrage) + { + if ($fragenSpracheToCopy->getFrageSprache($copyFrage->frage_id, $row_sprache->sprache, true)) + { + $frageAntwortArray[$row_sprache->sprache][$indexFrageSprache]['nummer'] = $fragenSpracheToCopy->nummer; + $frageAntwortArray[$row_sprache->sprache][$indexFrageSprache]['demo'] = $fragenSpracheToCopy->demo; + $frageAntwortArray[$row_sprache->sprache][$indexFrageSprache]['kategorie_kurzbz'] = $fragenSpracheToCopy->kategorie_kurzbz; + $frageAntwortArray[$row_sprache->sprache][$indexFrageSprache]['level'] = $fragenSpracheToCopy->level; + $frageAntwortArray[$row_sprache->sprache][$indexFrageSprache]['aktiv'] = $fragenSpracheToCopy->aktiv; + $frageAntwortArray[$row_sprache->sprache][$indexFrageSprache]['text'] = $fragenSpracheToCopy->text; + $frageAntwortArray[$row_sprache->sprache][$indexFrageSprache]['bild'] = $fragenSpracheToCopy->bild; + $frageAntwortArray[$row_sprache->sprache][$indexFrageSprache]['audio'] = $fragenSpracheToCopy->audio; + + // Vorschläge laden + $vorschlagSprachenToCopy = new vorschlag(); + $vorschlagSprachenToCopy->getVorschlag($copyFrage->frage_id, $row_sprache->sprache, false); + + $indexVorschlagSprache = 0; + foreach ($vorschlagSprachenToCopy->result AS $vorschlagSprache) + { + $frageAntwortArray[$row_sprache->sprache][$indexFrageSprache]['vorschlaege'][$indexVorschlagSprache]['nummer'] = $vorschlagSprache->nummer; + $frageAntwortArray[$row_sprache->sprache][$indexFrageSprache]['vorschlaege'][$indexVorschlagSprache]['punkte'] = $vorschlagSprache->punkte; + $frageAntwortArray[$row_sprache->sprache][$indexFrageSprache]['vorschlaege'][$indexVorschlagSprache]['text'] = $vorschlagSprache->text; + $frageAntwortArray[$row_sprache->sprache][$indexFrageSprache]['vorschlaege'][$indexVorschlagSprache]['bild'] = $vorschlagSprache->bild; + $frageAntwortArray[$row_sprache->sprache][$indexFrageSprache]['vorschlaege'][$indexVorschlagSprache]['audio'] = $vorschlagSprache->audio; + $frageAntwortArray[$row_sprache->sprache][$indexFrageSprache]['vorschlaege'][$indexVorschlagSprache]['aktiv'] = $vorschlagSprache->aktiv; + $indexVorschlagSprache++; + } + } + $indexFrageSprache++; + } + } + + // Einfügen der Fragen und Antworten aus dem Array in das neue Gebiet + $anzahlFragenKopiert = 0; + + foreach ($frageAntwortArray AS $fragesprache => $index) + { + foreach ($index AS $frage => $value) + { + $newfragen = new frage(); + $newfragen->new = true; + + $newfragen->kategorie_kurzbz = $value["kategorie_kurzbz"]; + $newfragen->gebiet_id = $gebiet->gebiet_id; + $newfragen->level = $value["level"]; + $newfragen->nummer = $value["nummer"]; + $newfragen->demo = $value["demo"]; + $newfragen->insertamum = date('Y-m-d H:i:s'); + $newfragen->insertvon = $user; + $newfragen->aktiv = $value["aktiv"]; + + if ($newfragen->save()) + { + $newfragen->sprache = $fragesprache; + $newfragen->text = $value["text"]; + $newfragen->bild = $value["bild"]; + $newfragen->audio = $value["audio"]; + $newfragen->insertamum = date('Y-m-d H:i:s'); + $newfragen->insertvon = $user; + + if ($newfragen->save_fragesprache()) + { + if (isset($value["vorschlaege"])) + { + foreach ($value["vorschlaege"] AS $vorschlag => $content) + { + // Vorschläge speichern + $newvorschlaege = new vorschlag(); + $newvorschlaege->new = true; + + $newvorschlaege->frage_id = $newfragen->frage_id; + $newvorschlaege->nummer = $content["nummer"]; + $newvorschlaege->punkte = $content["punkte"]; + $newvorschlaege->aktiv = $content["aktiv"]; + $newvorschlaege->insertamum = date('Y-m-d H:i:s'); + $newvorschlaege->insertvon = $user; + + if ($newvorschlaege->save()) + { + $newvorschlaege->sprache = $fragesprache; + $newvorschlaege->text = $content["text"]; + $newvorschlaege->bild = $content["bild"]; + $newvorschlaege->audio = $content["audio"]; + $newvorschlaege->insertamum = date('Y-m-d H:i:s'); + $newvorschlaege->insertvon = $user; + + if ($newvorschlaege->save_vorschlagsprache()) + { + $anzahlFragenKopiert++; + } + } + } + } + } + else + { + $returnmsg .= '

Fehler beim Speichern der Fragesprache '.$fragesprache.' bei Frage: '.$newfragen->frage_id.'

'; + } + } + else + { + $returnmsg .= '

Fehler beim Speichern der Frage: '.$newfragen->frage_id.'

'; + } + } + } + } + else + { + $returnmsg .= '

Fehler beim Speichern: '.$gebiet->errormsg.'

'; + } + } + else + $returnmsg .= '

Kurzbezeichnung ist schon vorhanden

'; + } + } + else + { + $returnmsg .= '

Bitte füllen Sie alle Pflichtfelder aus

'; + } +} + + +$studiengang = new studiengang(); +$studiengang->getAll('typ, kurzbz', false); + +echo '

'.$returnmsg.'

'; +echo ' +
+ + + + + + + + + + + + + + '; + +foreach ($sprache->result as $row) +{ + echo ' + + + '; +} +echo ' + + + + + + + + +
Zu kopierendes Gebiet: '; + //Dropdown bestehender Gebiete + $gebiete = new gebiet(); + $gebiete->getAll(); + echo ''; +echo '
Daten neues Gebiet
Kurzbezeichnung
Bezeichnung (intern)
Bezeichnung '.$row->bezeichnung_arr[$sprache_user].'
Beschreibung (intern)
+ +
+'; + +echo ''; +?> diff --git a/cis/testtool/admin/index.php b/cis/testtool/admin/index.php index d433a747e..7fc7a7da3 100644 --- a/cis/testtool/admin/index.php +++ b/cis/testtool/admin/index.php @@ -690,6 +690,7 @@ if (($anzahl !== 0) || ($stg_kz == '-1') && ($stg_kz !== '')) echo " Prüfen | "; echo " Bearbeiten |"; echo " Neues Gebiet | "; + echo " Gebiet kopieren"; //echo " PDF exportieren"; //echo "
Gebiet_id=".$gebiet_id.""; echo ''; diff --git a/include/frage.class.php b/include/frage.class.php index cafb0c0fd..aef603a6d 100644 --- a/include/frage.class.php +++ b/include/frage.class.php @@ -400,7 +400,7 @@ class frage extends basis_db $this->text = $row->text; $this->bild = $row->bild; $this->audio = $row->audio; - $this->insertaum = $row->insertamum; + $this->insertamum = $row->insertamum; $this->insertvon = $row->insertvon; $this->updateamum = $row->updateamum; $this->updatevon = $row->updatevon; diff --git a/include/vorschlag.class.php b/include/vorschlag.class.php index e2bf566c9..eb2668902 100644 --- a/include/vorschlag.class.php +++ b/include/vorschlag.class.php @@ -299,6 +299,7 @@ class vorschlag extends basis_db $vs->frage_id = $row->frage_id; $vs->nummer = $row->nummer; $vs->punkte = $row->punkte; + $vs->aktiv = $this->db_parse_bool($row->aktiv); $qry = "SELECT * FROM testtool.tbl_vorschlag_sprache WHERE vorschlag_id=".$this->db_add_param($row->vorschlag_id, FHC_INTEGER)." AND sprache=".$this->db_add_param($sprache).";"; if($this->db_query($qry))