diff --git a/content/lehrveranstaltungDBDML.php b/content/lehrveranstaltungDBDML.php
index 06267f93e..4ef717929 100644
--- a/content/lehrveranstaltungDBDML.php
+++ b/content/lehrveranstaltungDBDML.php
@@ -39,6 +39,7 @@ require_once('../include/lehreinheit.class.php');
require_once('../include/lehreinheitmitarbeiter.class.php');
require_once('../include/lehreinheitgruppe.class.php');
require_once('../include/benutzerberechtigung.class.php');
+require_once('../include/log.class.php');
$user = get_uid();
diff --git a/content/lehrveranstaltungdetailoverlay.xul.php b/content/lehrveranstaltungdetailoverlay.xul.php
index 1049a7ba9..e169655cb 100644
--- a/content/lehrveranstaltungdetailoverlay.xul.php
+++ b/content/lehrveranstaltungdetailoverlay.xul.php
@@ -352,7 +352,7 @@ echo "
-
+
diff --git a/content/tempus.js.php b/content/tempus.js.php
index 370ae64cf..ef22a87ba 100644
--- a/content/tempus.js.php
+++ b/content/tempus.js.php
@@ -98,3 +98,37 @@ function studiensemesterChange()
return true;
}
+function loadUndoList()
+{
+ menu = document.getElementById('menu-edit-undo');
+
+ var url = 'rdf/undo.rdf.php?'+gettimestamp();
+ menu.setAttribute('datasources', url);
+ debug('load:'+url);
+
+ return true;
+}
+
+function UnDo(log_id, bezeichnung)
+{
+ if(confirm('Wollen Sie folgenden Befehl wirklich Rueckgaengig machen: '+bezeichnung))
+ {
+ //Request absetzen
+ var req = new phpRequest('tempusDBDML.php','','');
+
+ req.add('type','undo');
+ req.add('log_id',log_id);
+
+ var response = req.executePOST();
+ var val = new ParseReturnValue(response)
+
+ if (!val.dbdml_return)
+ {
+ alert(val.dbdml_errormsg)
+ }
+ else
+ {
+ LvTreeRefresh();
+ }
+ }
+}
\ No newline at end of file
diff --git a/content/tempus.xul.php b/content/tempus.xul.php
index 0c0e2323c..633781632 100644
--- a/content/tempus.xul.php
+++ b/content/tempus.xul.php
@@ -61,7 +61,7 @@ echo '';
-
-
diff --git a/content/tempusDBDML.php b/content/tempusDBDML.php
new file mode 100644
index 000000000..6b8e9991d
--- /dev/null
+++ b/content/tempusDBDML.php
@@ -0,0 +1,117 @@
+,
+ * Andreas Oesterreicher and
+ * Rudolf Hangl .
+ */
+
+// ****************************************
+// * Insert/Update/Delete
+// * der Lehreinheiten
+// *
+// * Script sorgt fuer den Datenbanzugriff
+// * fuer das XUL - Lehreinheiten-Modul
+// *
+// * Derzeitige Funktionen:
+// * - Lehreinheitmitarbeiter Zuteilung hinzufuegen/bearbeiten/loeschen
+// * - Lehreinheitgruppe Zutelung hinzufuegen/loeschen
+// * - Lehreinheit anlegen/bearbeiten/loeschen
+// ****************************************
+
+require_once('../vilesci/config.inc.php');
+require_once('../include/functions.inc.php');
+require_once('../include/benutzerberechtigung.class.php');
+require_once('../include/log.class.php');
+
+$user = get_uid();
+
+error_reporting(0);
+
+// Datenbank Verbindung
+if (!$conn = @pg_pconnect(CONN_STRING))
+ $error_msg='Es konnte keine Verbindung zum Server aufgebaut werden!';
+
+$return = false;
+$errormsg = 'unknown';
+$data = '';
+$error = false;
+
+//Berechtigungen laden
+$rechte = new benutzerberechtigung($conn);
+$rechte->getBerechtigungen($user);
+if(!$rechte->isBerechtigt('admin'))
+{
+ $return = false;
+ $errormsg = 'Keine Berechtigung';
+ $data = '';
+ $error = true;
+}
+
+if(!$error)
+{
+ if(isset($_POST['type']) && $_POST['type']=='undo')
+ {
+ //UNDO Befehl ausfuehren
+
+ if (!isset($_POST['log_id']))
+ {
+ $return = false;
+ $errormsg = 'Fehlerhafte Parameteruebergabe';
+ $data = '';
+ $error = true;
+ }
+
+ if(!$error)
+ {
+ $log = new log($conn, null, null, true);
+
+ if($log->undo($log_id))
+ {
+ $return = true;
+ }
+ else
+ {
+ $return = false;
+ $errormsg = 'Fehler bei UnDo:'.$log->errormsg;
+ }
+ }
+ }
+ else
+ {
+ $return = false;
+ $errormsg = 'Unkown type';
+ $data = '';
+ }
+}
+?>
+
+
+
+
+
+
+ ]]>
+ ]]>
+
+
+
+
diff --git a/content/tempusoverlay.js.php b/content/tempusoverlay.js.php
index c50aabb8c..f3dd878af 100644
--- a/content/tempusoverlay.js.php
+++ b/content/tempusoverlay.js.php
@@ -19,6 +19,8 @@ function onVerbandSelect()
{
var contentFrame=document.getElementById('iframeTimeTableWeek');
var tree=document.getElementById('tree-verband');
+ if(tree.currentIndex==-1)
+ return;
var stg_kz=tree.view.getCellText(tree.currentIndex,"stg_kz");
var sem=tree.view.getCellText(tree.currentIndex,"sem");
var ver=tree.view.getCellText(tree.currentIndex,"ver");
diff --git a/content/tempusoverlay.xul.php b/content/tempusoverlay.xul.php
index f9919839d..986620a4f 100644
--- a/content/tempusoverlay.xul.php
+++ b/content/tempusoverlay.xul.php
@@ -25,7 +25,7 @@ echo '';
-stundensatz!='' && !is_numeric($this->stundensatz))
+ {
+ $this->errormsg = 'Stundensatz muss eine gueltige Zahl sein';
+ return false;
+ }
+ if($this->planstunden!='' && !is_numeric($this->planstunden))
+ {
+ $this->errormsg = 'Planstunden muss eine gueltige Zahl sein';
+ return false;
+ }
+ if($this->semesterstunden!='' && !is_numeric($this->semesterstunden))
+ {
+ $this->errormsg = 'Semesterstunden muss eine gueltige Zahl sein';
+ return false;
+ }
+ if($this->faktor!='' && !is_numeric($this->faktor))
+ {
+ $this->errormsg = 'Faktor muss eine gueltige Zahl sein';
+ return false;
+ }
+ if(strlen($this->anmerkung)>255)
+ {
+ $this->errormsg = 'Anmerkung darf nicht laenger als 255 Zeichen sein.';
+ return false;
+ }
+
return true;
}
@@ -289,13 +315,56 @@ class lehreinheitmitarbeiter
$this->errormsg = 'Lehreinheit_id ist ungueltig';
return false;
}
-
- $qry = "DELETE FROM lehre.tbl_lehreinheitmitarbeiter WHERE lehreinheit_id='$lehreinheit_id' AND mitarbeiter_uid='".addslashes($mitarbeiter_uid)."'";
- if(pg_query($this->conn, $qry))
- return true;
+ $qry_del = "DELETE FROM lehre.tbl_lehreinheitmitarbeiter WHERE lehreinheit_id='$lehreinheit_id' AND mitarbeiter_uid='".addslashes($mitarbeiter_uid)."'";
+ $qry = "SELECT * FROM lehre.tbl_lehreinheitmitarbeiter WHERE lehreinheit_id='$lehreinheit_id' AND mitarbeiter_uid='".addslashes($mitarbeiter_uid)."'";
+ if($result = pg_query($this->conn, $qry))
+ {
+ if($row = pg_fetch_object($result))
+ {
+ $undo = 'INSERT INTO lehre.tbl_lehreinheitmitarbeiter (lehreinheit_id, mitarbeiter_uid, semesterstunden, planstunden, '.
+ ' stundensatz, faktor, anmerkung, lehrfunktion_kurzbz, ext_id, insertamum, insertvon)'.
+ ' VALUES('.$this->addslashes($row->lehreinheit_id).','.
+ $this->addslashes($row->mitarbeiter_uid).','.
+ $this->addslashes($row->semesterstunden).','.
+ $this->addslashes($row->planstunden).','.
+ $this->addslashes($row->stundensatz).','.
+ $this->addslashes($row->faktor).','.
+ $this->addslashes($row->anmerkung).','.
+ $this->addslashes($row->lehrfunktion_kurzbz).','.
+ $this->addslashes($row->ext_id).','.
+ $this->addslashes($row->insertamum).','.
+ $this->addslashes($row->insertvon).');';
+
+ $log = new log($this->conn, null, null);
+ $log->sqlundo = $undo;
+ $log->sql = $qry_del;
+ $log->mitarbeiter_uid = get_uid();
+ $log->beschreibung = "Lektorzuteilung loeschen $mitarbeiter_uid - $lehreinheit_id";
+ if($log->save(true))
+ {
+ if(pg_query($this->conn, $qry_del))
+ return true;
+ else
+ {
+ $this->errormsg = 'Fehler beim Loeschen der Zuteilung';
+ return false;
+ }
+ }
+ else
+ {
+ $this->errormsg = 'UNDO Eintrag konnte nicht erstellt werden';
+ return false;
+ }
+ }
+ else
+ {
+ $this->errormsg = 'Datensatz wurde nicht gefunden';
+ return false;
+ }
+ }
else
{
- $this->errormsg = 'Fehler beim Loeschen der Zuteilung';
+ $this->errormsg = 'Fehler beim lesen der Daten';
return false;
}
}
diff --git a/include/log.class.php b/include/log.class.php
index 3c374dc4a..65aec80a9 100644
--- a/include/log.class.php
+++ b/include/log.class.php
@@ -111,7 +111,7 @@ class log
// ********************************************
function load_undo($uid)
{
- $qry = "SELECT * FROM public.tbl_log WHERE mitarbeiter_uid='".addslashes($uid)."' AND sqlundo is not null LIMIT 10";
+ $qry = "SELECT * FROM public.tbl_log WHERE mitarbeiter_uid='".addslashes($uid)."' AND sqlundo is not null ORDER BY executetime DESC LIMIT 10";
if($result=pg_query($this->conn, $qry))
{
@@ -227,5 +227,70 @@ class log
return false;
}
}
+
+ // ************************************
+ // * Fuehrt einen UnDo Befehl aus und
+ // * loescht anschliessend den Eintrag
+ // * aus dem Log
+ // * @param $log_id
+ // * @return true wenn ok, sonst false
+ // ************************************
+ function undo($log_id)
+ {
+ if(!is_numeric($log_id))
+ {
+ $this->errormsg = 'Log_id ist ungueltig';
+ return false;
+ }
+ pg_query($this->conn, 'BEGIN;');
+ //Undo Befehl aus Log holen
+ $qry = "SELECT * FROM public.tbl_log WHERE log_id='$log_id'";
+ if($result = pg_query($this->conn, $qry))
+ {
+ if($row = pg_fetch_object($result))
+ {
+ if($row->sqlundo!='')
+ {
+ //UnDo Befehl ausfuehren
+ if(pg_query($this->conn, $row->sqlundo))
+ {
+ //Log Eintrag aus Log entfernen
+ $qry = "DELETE FROM public.tbl_log WHERE log_id='$log_id';";
+ if(pg_query($this->conn, $qry))
+ {
+ pg_query($this->conn, 'COMMIT;');
+ return true;
+ }
+ else
+ {
+ pg_query($this->conn, 'ROLLBACK;');
+ $this->errormsg = 'UnDo Eintrag konnte nicht entfernt werden';
+ return false;
+ }
+ }
+ else
+ {
+ $this->errormsg ='UnDo Befehl konnte nicht durchgefuehrt werden';
+ return false;
+ }
+ }
+ else
+ {
+ $this->errormsg = 'Ungueltiger UnDo Befehl';
+ return false;
+ }
+ }
+ else
+ {
+ $this->errormsg = 'UnDo Befehl konnte nicht durchgefuehrt werden';
+ return false;
+ }
+ }
+ else
+ {
+ $this->errormsg = 'UnDo Befehl konnte nicht durchgefuehrt werden';
+ return false;
+ }
+ }
}
?>
\ No newline at end of file
diff --git a/locale/de-AT/tempus.dtd b/locale/de-AT/tempus.dtd
index c4fe5ac92..c732f5879 100644
--- a/locale/de-AT/tempus.dtd
+++ b/locale/de-AT/tempus.dtd
@@ -17,6 +17,12 @@
+
+
+
+
+
+