Erweiterungen für UnDo

This commit is contained in:
Andreas Österreicher
2007-03-16 14:18:12 +00:00
parent 1129507952
commit c8dc9b05b8
10 changed files with 321 additions and 10 deletions
+74 -5
View File
@@ -167,6 +167,32 @@ class lehreinheitmitarbeiter
// *******************************************
function validate()
{
if($this->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;
}
}
+66 -1
View File
@@ -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;
}
}
}
?>