This commit is contained in:
Andreas Österreicher
2008-08-25 15:55:59 +00:00
parent fe3c4c8002
commit df9fcc8010
4 changed files with 359 additions and 77 deletions
@@ -0,0 +1,278 @@
<?php
/* Copyright (C) 2006 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
*/
/*
* 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 "<span class='error'>Übung und Lehreinheit muss ausgewählt sein!</span>";
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 "<span class='error'>Hauptübung konnte nicht kopiert werden!</span>";
}
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 "<span class='error'>Übung konnte nicht kopiert werden!</span>";
}
//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."<br>";
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 "<span class='error'>Beispiele konnten nicht angelegt werden</span>";
}
//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 "<span class='error'>Fehler beim Datenbankzugriff!</span>";
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:<br><br>
<form action="'.$_SERVER['PHP_SELF'].'" method="GET">
ÜbungID die Kopiert werden soll: <input type="text" name="uebung_id_source"><br>
Lehreinheit_id in welche diese Übung kopiert werden soll: <input type="text" name="lehreinheit_id_target"><br>
<input type="submit" value="Kopieren">
</form>';
}
+4 -1
View File
@@ -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));
+77 -76
View File
@@ -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);
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;
return false;
}
else
return true;
}
}
else
return true;
}
}
}
}
}
?>