diff --git a/cis/private/lehre/benotungstool/copy_uebung.php b/cis/private/lehre/benotungstool/copy_uebung.php new file mode 100644 index 000000000..52f87c2cb --- /dev/null +++ b/cis/private/lehre/benotungstool/copy_uebung.php @@ -0,0 +1,278 @@ +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ +/* + * Script zum Kopieren einer Kreuzerltool Uebung zu einer anderen Lehreinheit + * (zB fuer die Uebernahme der Uebungen aus dem Vorjahr) + */ +require_once('../../../config.inc.php'); +require_once('../../../../include/functions.inc.php'); +require_once('../../../../include/lehrveranstaltung.class.php'); +require_once('../../../../include/studiengang.class.php'); +require_once('../../../../include/studiensemester.class.php'); +require_once('../../../../include/lehreinheit.class.php'); +require_once('../../../../include/benutzerberechtigung.class.php'); +require_once('../../../../include/uebung.class.php'); +require_once('../../../../include/beispiel.class.php'); +require_once('../../../../include/datum.class.php'); + + +if(!$conn = pg_pconnect(CONN_STRING)) + die('Fehler beim Connecten zur DB'); + +$user = get_uid(); +$rechte = new benutzerberechtigung($conn); +$rechte->getBerechtigungen($user); + +if(!$rechte->isBerechtigt('admin')) + die('Sie haben keine Rechte für diese Seite'); + +if(isset($_GET['uebung_id_source'])) + $uebung_id_source=$_GET['uebung_id_source']; +else + $uebung_id_source=''; + +if(isset($_GET['lehreinheit_id_target'])) + $lehreinheit_id_target=$_GET['lehreinheit_id_target']; +else + $lehreinheit_id_target=''; + +if($uebung_id_source!='' && $lehreinheit_id_target!='') +{ + $copy_insert = 0; + $copy_update = 0; + $copy_insert_bsp = 0; + $copy_update_bsp = 0; + if (!is_numeric($uebung_id_source) or !is_numeric($lehreinheit_id_target)) + echo "Übung und Lehreinheit muss ausgewählt sein!"; + else + { + $ueb_1 = new uebung($conn, $uebung_id_source); + $lehreinheit_id=$ueb_1->lehreinheit_id; + $nummer_source = $ueb_1->nummer; + $qry = "SELECT * from campus.tbl_uebung where nummer = '".$nummer_source."' and lehreinheit_id = '".$lehreinheit_id_target."'"; + //echo $qry; + if($result1 = pg_query($conn, $qry)) + { + if (pg_num_rows($result1) >0) + { + $row1 = pg_fetch_object($result1); + $ueb_1_target =new uebung($conn, $row1->uebung_id); + $ueb_1_target->new = false; + $new = null; + $ueb_1_target->insertamum = null; + $ueb_1_target->insertvon = null; + $ueb_1_target->updateamum = date('Y-m-d H:i:s'); + $ueb_1_target->updatevon = $user; + $copy_update++; + } + else + { + $ueb_1_target =new uebung($conn); + $ueb_1_target->new = true; + $new = true; + $ueb_1_target->insertamum = date('Y-m-d H:i:s'); + $ueb_1_target->insertvon = $user; + $ueb_1_target->updateamum = null; + $ueb_1_target->updatevon = null; + $copy_insert++; + } + $ueb_1_target->gewicht = $ueb_1->gewicht; + $ueb_1_target->punkte = null; + $ueb_1_target->angabedatei=null; + $ueb_1_target->freigabevon = null; + $ueb_1_target->freigabebis = null; + $ueb_1_target->abgabe = false; + $ueb_1_target->beispiele = false; + $ueb_1_target->statistik = false; + $ueb_1_target->maxstd = null; + $ueb_1_target->maxbsp=null; + $ueb_1_target->liste_id=null; + $ueb_1_target->bezeichnung = $ueb_1->bezeichnung; + $ueb_1_target->positiv = $ueb_1->positiv; + $ueb_1_target->defaultbemerkung = $ueb_1->defaultbemerkung; + $ueb_1_target->lehreinheit_id = $lehreinheit_id_target; + $ueb_1_target->nummer = $nummer_source; + + if (!$ueb_1_target->save($new)) + { + $error = 1; + echo "Hauptübung konnte nicht kopiert werden!"; + } + + else + { + // Subübungen durchlaufen + $error = 0; + $ueb_2 = new uebung($conn); + + $ueb_2->load_uebung($lehreinheit_id,2,$uebung_id_source); + + $ueb_2anzahl = count($ueb_2->uebungen); + if ($ueb_2anzahl >0) + { + foreach ($ueb_2->uebungen as $subrow) + { + + $nummer_source2 = $subrow->nummer; + $qry2 = "SELECT * from campus.tbl_uebung where nummer = '".$nummer_source2."' and lehreinheit_id = '".$lehreinheit_id_target."'"; + $result2 = pg_query($conn, $qry2); + + if (pg_num_rows($result2) >0) + { + $row2 = pg_fetch_object($result2); + $ueb_2_target =new uebung($conn, $row2->uebung_id); + $ueb_2_target->new = false; + $new = null; + $ueb_2_target->insertamum = null; + $ueb_2_target->insertvon = null; + $ueb_2_target->updateamum = date('Y-m-d H:i:s'); + $ueb_2_target->updatevon = $user; + $copy_update++; + } + else + { + $ueb_2_target =new uebung($conn); + $ueb_2_target->new = true; + $new = true; + $ueb_2_target->insertamum = date('Y-m-d H:i:s'); + $ueb_2_target->insertvon = $user; + $ueb_2_target->updateamum = null; + $ueb_2_target->updatevon = null; + $copy_insert++; + } + $ueb_2_target->gewicht = $subrow->gewicht; + $ueb_2_target->punkte = $subrow->punkte; + $ueb_2_target->angabedatei=null; + $ueb_2_target->freigabevon = $subrow->freigabevon; + $ueb_2_target->freigabebis = $subrow->freigabebis; + $ueb_2_target->abgabe = $subrow->abgabe; + $ueb_2_target->beispiele = $subrow->beispiele; + $ueb_2_target->statistik = $subrow->statistik; + $ueb_2_target->maxstd = $subrow->maxstd; + $ueb_2_target->maxbsp=$subrow->maxbsp; + $ueb_2_target->liste_id=$ueb_1_target->uebung_id; + $ueb_2_target->bezeichnung = $subrow->bezeichnung; + $ueb_2_target->positiv = $subrow->positiv; + $ueb_2_target->defaultbemerkung = $subrow->defaultbemerkung; + $ueb_2_target->lehreinheit_id = $lehreinheit_id_target; + $ueb_2_target->nummer = $nummer_source2; + + if (!$ueb_2_target->save($new)) + { + $error = 1; + echo "Übung konnte nicht kopiert werden!"; + } + + //angabedatei syncen + if ($subrow->angabedatei != "") + { + $angabedatei_source = $subrow->angabedatei; + $angabedatei_target = makeUploadName($conn, 'angabe', $lehreinheit_id, $ueb_2_target->uebung_id, $stsem); + $angabedatei_target .= ".".substr($angabedatei_source, strrpos($angabedatei_source, '.') + 1); + echo $angabedatei_source."->".$angabedatei_target."
"; + exec("cp ".BENOTUNGSTOOL_PATH."angabe/".$angabedatei_source." ".BENOTUNGSTOOL_PATH."angabe/".$angabedatei_target); + $angabeupdate = "update campus.tbl_uebung set angabedatei = '".$angabedatei_target."' where uebung_id = '".$ueb_2_target->uebung_id."'"; + pg_query($conn, $angabeupdate); + } + + if (($error == 0) and $ueb_2_target->beispiele) + { + // beispiele synchronisieren + $bsp_obj = new beispiel($conn); + $bsp_obj->load_beispiel($subrow->uebung_id); + foreach ($bsp_obj->beispiele as $bsp) + { + $nummer_source_bsp = $bsp->nummer; + $qrybsp = "SELECT * from campus.tbl_beispiel where nummer = '".$nummer_source_bsp."' and uebung_id = '".$ueb_2_target->uebung_id."'"; + $resultbsp = pg_query($conn, $qrybsp); + + if (pg_num_rows($resultbsp) >0) + { + $rowbsp = pg_fetch_object($resultbsp); + $bsp_target =new beispiel($conn, $rowbsp->beispiel_id); + $bsp_target->new = false; + $new = null; + $bsp_target->insertamum = null; + $bsp_target->insertvon = null; + $bsp_target->updateamum = date('Y-m-d H:i:s'); + $bsp_target->updatevon = $user; + $copy_update_bsp++; + } + else + { + $bsp_target =new beispiel($conn); + $bsp_target->new = true; + $new = true; + $bsp_target->insertamum = date('Y-m-d H:i:s'); + $bsp_target->insertvon = $user; + $bsp_target->updateamum = null; + $bsp_target->updatevon = null; + $copy_insert_bsp++; + } + $bsp_target->uebung_id = $ueb_2_target->uebung_id; + $bsp_target->nummer = $nummer_source_bsp; + $bsp_target->bezeichnung = $bsp->bezeichnung; + $bsp_target->punkte = $bsp->punkte; + + if (!$bsp_target->save($new)) + { + $error = 1; + echo "Beispiele konnten nicht angelegt werden"; + } + + //Notenschlüssel synchronisieren + $clear = "delete from campus.tbl_notenschluesseluebung where uebung_id = '".$ueb_1_target->uebung_id."'"; + pg_query($conn, $clear); + + $qry_ns_source = "SELECT * from campus.tbl_notenschluesseluebung where uebung_id = '".$uebung_id_source."'"; + $result_ns_source = pg_query($conn, $qry_ns_source); + while($row_ns = pg_fetch_object($result_ns_source)) + { + $ns_insert = "INSERT INTO campus.tbl_notenschluesseluebung values ('".$ueb_1_target->uebung_id."','".$row_ns->note."', '".$row_ns->punkte."')"; + pg_query($conn, $ns_insert); + } + + } + } + + } + } + } + + } + else + echo "Fehler beim Datenbankzugriff!"; + + if ($error == 0) + echo "Übung erfolgreich kopiert! (Ü: ".$copy_insert."/".$copy_update."; B: ".$copy_insert_bsp."/".$copy_update_bsp.")"; + } +} +else +{ + echo ' + Script zum Kopieren einer Übung in eine beliebige Lehreinheit:

+
+ ÜbungID die Kopiert werden soll:
+ Lehreinheit_id in welche diese Übung kopiert werden soll:
+ +
'; +} \ No newline at end of file diff --git a/cis/public/info/verordnungen/benutzungsordnung_bibliothek.doc b/cis/public/info/verordnungen/benutzungsordnung_bibliothek.doc index 8ec181e64..84ce963fc 100644 Binary files a/cis/public/info/verordnungen/benutzungsordnung_bibliothek.doc and b/cis/public/info/verordnungen/benutzungsordnung_bibliothek.doc differ diff --git a/content/pdfExport.php b/content/pdfExport.php index 262fe285c..745a92c61 100644 --- a/content/pdfExport.php +++ b/content/pdfExport.php @@ -185,7 +185,10 @@ if(!$xml_doc->load($xml_url)) //echo 'XML:'.$xml_doc->saveXML().':'; //XSL aus der DB holen -$qry = "SELECT text FROM public.tbl_vorlagestudiengang WHERE (studiengang_kz=0 OR studiengang_kz='".addslashes($xsl_stg_kz)."') AND vorlage_kurzbz='$xsl' ORDER BY studiengang_kz DESC, version DESC LIMIT 1"; +$qry = "SELECT text FROM public.tbl_vorlagestudiengang WHERE (studiengang_kz=0"; +if($xsl_stg_kz!='') +$qry.=" OR studiengang_kz='".addslashes($xsl_stg_kz)."'"; +$qry.=") AND vorlage_kurzbz='$xsl' ORDER BY studiengang_kz DESC, version DESC LIMIT 1"; //echo $qry; if(!$result = pg_query($conn, $qry)) die('Fehler beim Laden der Vorlage'.pg_errormessage($conn)); diff --git a/include/uebung.class.php b/include/uebung.class.php index 96dd7a8fc..20ac1d8c0 100644 --- a/include/uebung.class.php +++ b/include/uebung.class.php @@ -48,7 +48,7 @@ class uebung var $liste_id; //integer var $maxbsp; //smallint var $maxstd; //smallint - var $nummer; //smallint + var $nummer; //smallint var $prozent; //Studentuebung @@ -58,12 +58,12 @@ class uebung var $note; // smalint var $mitarbeitspunkte; // smalint var $anmerkung; // text - var $benotungsdatum; // timestamp - - //Abgabe - var $abgabe_abgabe_id; // integer - var $abgabedatei; // varchar(64) - var $abgabezeit; // timestamp + var $benotungsdatum; // timestamp + + //Abgabe + var $abgabe_abgabe_id; // integer + var $abgabedatei; // varchar(64) + var $abgabezeit; // timestamp var $abgabe_anmerkung; // text // ************************************************************************* @@ -129,7 +129,7 @@ class uebung $this->liste_id = $row->liste_id; $this->maxbsp = $row->maxbsp; $this->maxstd = $row->maxstd; - $this->nummer = $row->nummer; + $this->nummer = $row->nummer; $this->prozent = $row->prozent; return true; } @@ -145,19 +145,19 @@ class uebung return false; } } - - function toggle_prozent_punkte($uebung_id) - { - $qry = "update campus.tbl_uebung set prozent = not prozent where uebung_id = '".$uebung_id."'"; - if(pg_query($this->conn, $qry)) - return true; - else - { - return false; - $this->errormsg = "toggle misslungen"; - } - } - + + function toggle_prozent_punkte($uebung_id) + { + $qry = "update campus.tbl_uebung set prozent = not prozent where uebung_id = '".$uebung_id."'"; + if(pg_query($this->conn, $qry)) + return true; + else + { + return false; + $this->errormsg = "toggle misslungen"; + } + } + function load_studentuebung($student_uid, $uebung_id) { $qry = "SELECT * FROM campus.tbl_studentuebung WHERE student_uid='$student_uid' AND uebung_id='$uebung_id'"; @@ -193,7 +193,7 @@ class uebung return false; } } - + function load_abgabe($abgabe_id) { $qry = "SELECT * FROM campus.tbl_abgabe WHERE abgabe_id = '$abgabe_id'"; @@ -219,32 +219,32 @@ class uebung $this->errormsg = 'Fehler beim Laden des Eintrages'; return false; } - } - + } + function check_studentuebung($uebung_id) { $qry = "SELECT * FROM campus.tbl_studentuebung WHERE uebung_id='$uebung_id'"; - if($result = pg_query($this->conn, $qry)) - { - if (pg_num_rows($result) >0) - return true; - else + if($result = pg_query($this->conn, $qry)) + { + if (pg_num_rows($result) >0) + return true; + else return false; - } - else + } + else return false; } - + function get_next_nummer() { $qry = "SELECT max(nummer) FROM campus.tbl_uebung"; $result = pg_query($this->conn, $qry); - $row = pg_fetch_object($result); - $next = $row->max + 1; + $row = pg_fetch_object($result); + $next = $row->max + 1; $this->next_nummer = $next; - } - + } + function load_uebung($lehreinheit_id, $level=null, $uebung_id=null) { if(!is_numeric($lehreinheit_id)) @@ -265,7 +265,7 @@ class uebung while($row = pg_fetch_object($result)) { $uebung_obj = new uebung($this->conn); - + $uebung_obj->uebung_id = $row->uebung_id; $uebung_obj->gewicht = $row->gewicht; $uebung_obj->punkte = $row->punkte; @@ -286,7 +286,7 @@ class uebung $uebung_obj->liste_id = $row->liste_id; $uebung_obj->maxstd = $row->maxstd; $uebung_obj->maxbsp = $row->maxbsp; - $uebung_obj->nummer = $row->nummer; + $uebung_obj->nummer = $row->nummer; $uebung_obj->prozent = $row->prozent; $this->uebungen[] = $uebung_obj; @@ -513,7 +513,7 @@ class uebung return false; } } - + function abgabe_save($new=null) { if(is_null($new)) @@ -573,7 +573,7 @@ function abgabe_save($new=null) return false; } } - + // ************************************************************ // * Loescht eine Uebung plus die abhaengigen eintraege in den @@ -586,45 +586,45 @@ function abgabe_save($new=null) $this->errormsg = 'Uebung_id ist ungueltig'; return false; } - - // subübungen wegräumen - $qry = "SELECT * FROM campus.tbl_uebung WHERE liste_id = '".$uebung_id."'"; + + // subübungen wegräumen + $qry = "SELECT * FROM campus.tbl_uebung WHERE liste_id = '".$uebung_id."'"; if($result=pg_query($this->conn, $qry)) { - while($row = pg_fetch_object($result)) - { - + while($row = pg_fetch_object($result)) + { + foreach (glob(BENOTUNGSTOOL_PATH."angabe/*".$row->uebung_id.".*") as $angabe) { if(file_exists($angabe)) unlink($angabe); } - $qry = "DELETE FROM campus.tbl_studentbeispiel WHERE beispiel_id IN(SELECT beispiel_id FROM campus.tbl_beispiel WHERE uebung_id='$row->uebung_id'); - DELETE FROM campus.tbl_abgabe WHERE abgabe_id IN(SELECT abgabe_id FROM campus.tbl_studentuebung WHERE uebung_id='$row->uebung_id'); + $qry = "DELETE FROM campus.tbl_studentbeispiel WHERE beispiel_id IN(SELECT beispiel_id FROM campus.tbl_beispiel WHERE uebung_id='$row->uebung_id'); + DELETE FROM campus.tbl_abgabe WHERE abgabe_id IN(SELECT abgabe_id FROM campus.tbl_studentuebung WHERE uebung_id='$row->uebung_id'); DELETE FROM campus.tbl_studentuebung WHERE uebung_id='$row->uebung_id'; DELETE FROM campus.tbl_beispiel WHERE uebung_id='$row->uebung_id'; - DELETE FROM campus.tbl_uebung WHERE uebung_id='$row->uebung_id'; + DELETE FROM campus.tbl_uebung WHERE uebung_id='$row->uebung_id'; DELETE FROM campus.tbl_studentuebung WHERE uebung_id = '$row->uebung_id'"; if(!pg_query($qry)) { $this->errormsg = 'Fehler beim Loeschen der Daten'; return false; - } - } - } - - + } + } + } + + foreach (glob(BENOTUNGSTOOL_PATH."angabe/*".$uebung_id.".*") as $angabe) { if(file_exists($angabe)) unlink($angabe); } - $qry = "DELETE FROM campus.tbl_studentbeispiel WHERE beispiel_id IN(SELECT beispiel_id FROM campus.tbl_beispiel WHERE uebung_id='$uebung_id'); - DELETE FROM campus.tbl_abgabe WHERE abgabe_id IN(SELECT abgabe_id FROM campus.tbl_studentuebung WHERE uebung_id='$uebung_id'); + $qry = "DELETE FROM campus.tbl_studentbeispiel WHERE beispiel_id IN(SELECT beispiel_id FROM campus.tbl_beispiel WHERE uebung_id='$uebung_id'); + DELETE FROM campus.tbl_abgabe WHERE abgabe_id IN(SELECT abgabe_id FROM campus.tbl_studentuebung WHERE uebung_id='$uebung_id'); DELETE FROM campus.tbl_studentuebung WHERE uebung_id='$uebung_id'; DELETE FROM campus.tbl_beispiel WHERE uebung_id='$uebung_id'; - DELETE FROM campus.tbl_uebung WHERE uebung_id='$uebung_id'; + DELETE FROM campus.tbl_uebung WHERE uebung_id='$uebung_id'; DELETE FROM campus.tbl_studentuebung WHERE uebung_id = '$uebung_id'"; if(pg_query($qry)) @@ -633,12 +633,12 @@ function abgabe_save($new=null) { $this->errormsg = 'Fehler beim Loeschen der Daten'; return false; - } - - + } + + } - + // ************************************************************ // * Loescht eine Uebung plus die abhaengigen eintraege in den // * Tabellen studentuebung, studentbeispiel, und beispiel @@ -650,31 +650,32 @@ function abgabe_save($new=null) $this->errormsg = 'abgabe_id ist ungueltig'; return false; } - - // subübungen wegräumen - $qry = "SELECT * FROM campus.tbl_abgabe WHERE abgabe_id = '".$abgabe_id."'"; + + // subübungen wegräumen + $qry = "SELECT * FROM campus.tbl_abgabe WHERE abgabe_id = '".$abgabe_id."'"; if($result=pg_query($this->conn, $qry)) { - while($row = pg_fetch_object($result)) - { + while($row = pg_fetch_object($result)) + { - + if(file_exists(BENOTUNGSTOOL_PATH."abgabe/".$row->abgabedatei)) - unlink(BENOTUNGSTOOL_PATH."abgabe/".$row->abgabedatei); - $qry = "UPDATE campus.tbl_studentuebung set abgabe_id = null where abgabe_id = '$abgabe_id'; + unlink(BENOTUNGSTOOL_PATH."abgabe/".$row->abgabedatei); + + $qry = "UPDATE campus.tbl_studentuebung set abgabe_id = null where abgabe_id = '$abgabe_id'; DELETE FROM campus.tbl_abgabe WHERE abgabe_id = '$abgabe_id'"; if(!pg_query($qry)) { $this->errormsg = 'Fehler beim Loeschen der Daten'; return false; - } - else - return true; - } - } + } + else + return true; + } + } - } - + } + } ?> \ No newline at end of file