From 14176aae5bde88432f4a1d32c7dcb4faa3945a19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Tue, 6 Nov 2007 16:39:00 +0000 Subject: [PATCH] --- cis/private/menu.php | 20 +- cis/private/tools/zeitaufzeichnung.php | 342 +++++++++++++++++++++++++ content/ToDo_FASo.html | 4 + include/zeitaufzeichnung.class.php | 272 ++++++++++++++++++++ 4 files changed, 637 insertions(+), 1 deletion(-) create mode 100644 cis/private/tools/zeitaufzeichnung.php create mode 100644 include/zeitaufzeichnung.class.php diff --git a/cis/private/menu.php b/cis/private/menu.php index ea0602ac8..cca876bac 100644 --- a/cis/private/menu.php +++ b/cis/private/menu.php @@ -157,7 +157,25 @@ else    LV-Plan '; - + + //Projekt-Zeitaufzeichnung + $qry = "SELECT count(*) as anzahl FROM fue.tbl_projektbenutzer WHERE uid='$user'"; + + if($result = pg_query($db_conn, $qry)) + { + if($row = pg_fetch_object($result)) + { + if($row->anzahl>0) + { + echo ' + +   +  Zeitaufzeichnung + '; + } + } + } + if ($is_student) { echo ' diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php new file mode 100644 index 000000000..22bdf8ec6 --- /dev/null +++ b/cis/private/tools/zeitaufzeichnung.php @@ -0,0 +1,342 @@ +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ +require_once('../../config.inc.php'); +require_once('../../../include/functions.inc.php'); +require_once('../../../include/person.class.php'); +require_once('../../../include/benutzer.class.php'); +require_once('../../../include/studiengang.class.php'); +require_once('../../../include/fachbereich.class.php'); +require_once('../../../include/zeitaufzeichnung.class.php'); +require_once('../../../include/datum.class.php'); + +echo ' + + + +Zeitaufzeichnung + + + + + + +'; + +echo ' + + + + +
  + + + + +
Zeitaufzeichnung
+
'; + +//Variablen initialisieren +if(!$conn = pg_pconnect(CONN_STRING)) + die('Datenbankverbindung fehlgeschlagen'); + +$user = get_uid(); +$datum = new datum(); +$studiengang = new studiengang($conn); +$studiengang->getAll('typ, kurzbz', false); +$stg_arr = array(); + +foreach ($studiengang->result as $stg) +{ + $stg_arr[$stg->studiengang_kz]=$stg->kuerzel; +} + +$zeitaufzeichnung_id = (isset($_GET['zeitaufzeichnung_id'])?$_GET['zeitaufzeichnung_id']:''); +$projekt_kurzbz = (isset($_POST['projekt'])?$_POST['projekt']:''); +$studiengang_kz = (isset($_POST['studiengang'])?$_POST['studiengang']:''); +$fachbereich_kurzbz = (isset($_POST['fachbereich'])?$_POST['fachbereich']:''); +$aktivitaet_kurzbz = (isset($_POST['aktivitaet'])?$_POST['aktivitaet']:''); +$von = (isset($_POST['von'])?$_POST['von']:date('d.m.Y H:i:s')); +$bis = (isset($_POST['bis'])?$_POST['bis']:date('d.m.Y H:i:s')); +$beschreibung = (isset($_POST['beschreibung'])?$_POST['beschreibung']:''); + +//Speichern der Daten +if(isset($_POST['save']) || isset($_POST['edit'])) +{ + $zeit = new zeitaufzeichnung($conn); + + if(isset($_POST['edit'])) + { + if(!$zeit->load($zeitaufzeichnung_id)) + die('Fehler beim Laden des Datensatzes'); + + $zeit->new = false; + } + else + { + $zeit->new = true; + $zeit->insertamum = date('Y-m-d H:i:s'); + $zeit->insertvon = $user; + } + + $zeit->uid = $user; + $zeit->aktivitaet_kurzbz = $aktivitaet_kurzbz; + $zeit->start = $von; + $zeit->ende = $bis; + $zeit->beschreibung = $beschreibung; + $zeit->studiengang_kz = $studiengang_kz; + $zeit->fachbereich_kurzbz = $fachbereich_kurzbz; + $zeit->updateamum = date('Y-m-d H:i:s'); + $zeit->updatevon = $user; + $zeit->projekt_kurzbz = $projekt_kurzbz; + + if(!$zeit->save()) + { + echo 'Fehler beim Speichern der Daten:'.$zeit->errormsg.'
'; + } + else + { + echo 'Daten wurden gespeichert
'; + } +} + +//Datensatz loeschen +if(isset($_GET['type']) && $_GET['type']=='delete') +{ + $zeit = new zeitaufzeichnung($conn); + + if($zeit->load($zeitaufzeichnung_id)) + { + if($zeit->uid==$user) + { + if($zeit->delete($zeitaufzeichnung_id)) + echo 'Eintrag wurde geloescht
'; + else + echo 'Fehler beim Loeschen des Eintrages
'; + } + else + echo 'Keine Berechtigung!
'; + } + else + echo 'Datensatz wurde nicht gefunden
'; +} + +//Laden der Daten zum aendern +if(isset($_GET['type']) && $_GET['type']=='edit') +{ + $zeit = new zeitaufzeichnung($conn); + + if($zeit->load($zeitaufzeichnung_id)) + { + if($zeit->uid==$user) + { + $uid = $zeit->uid; + $aktivitaet_kurzbz = $zeit->aktivitaet_kurzbz; + $von = date('d.m.Y H:i:s', $datum->mktime_fromtimestamp($zeit->start)); + $bis = date('d.m.Y H:i:s', $datum->mktime_fromtimestamp($zeit->ende)); + $beschreibung = $zeit->beschreibung; + $studiengang_kz = $zeit->studiengang_kz; + $fachbereich_kurzbz = $zeit->fachbereich_kurzbz; + $projekt_kurzbz = $zeit->projekt_kurzbz; + } + } +} + +//Projekte holen fuer zu denen der Benutzer zugeteilt ist +$qry_projekt = "SELECT distinct tbl_projekt.* FROM fue.tbl_projektbenutzer JOIN fue.tbl_projekt USING(projekt_kurzbz) WHERE beginn<=now() AND (ende>=now() OR ende is null)"; + +if($result_projekt = pg_query($conn, $qry_projekt)) +{ + if(pg_num_rows($result_projekt)>0) + { + $bn = new benutzer($conn); + if(!$bn->load($user)) + die("Benutzer $user wurde nicht gefunden"); + + echo " +
Zeitaufzeichnung von $bn->vorname $bn->nachnameNEU
"; + + //Formular + echo '

'; + + echo ''; + //Projekt + echo ''; + + //Studiengang + echo ''; + echo ''; + + //Aktivitaet + echo ''; + echo ''; + echo ''; + //Start/Ende + echo ' + + + + '; + //Beschreibung + echo ''; + echo ''; + else + echo ''; + echo '
ProjektStudiengang'; + echo '
Aktivität'; + + $qry = "SELECT * FROM fue.tbl_aktivitaet ORDER by beschreibung"; + if($result = pg_query($conn, $qry)) + { + echo ''; + } + //Fachbereich + echo 'Fachbereich
  
VonBis
Beschreibung
'; + //SpeichernButton + if($zeitaufzeichnung_id=='') + echo '
'; + echo '
'; + + echo '

'; + + //Uebersichtstabelle + echo "\n"; + echo " \n"; + echo " "; + echo " \n"; + + $qry = "SELECT *, ende-start as diff FROM campus.tbl_zeitaufzeichnung WHERE uid='$user' AND ende>(now() - INTERVAL '40 days') ORDER BY ende DESC"; + if($result = pg_query($conn, $qry)) + { + $i = 0; + while($row=pg_fetch_object($result)) + { + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + $i++; + } + } + echo "
IDProjektAktivitaetStartEndeDauerBeschreibungStudiengangFachbereichAktion
".$row->zeitaufzeichnung_id."".$row->projekt_kurzbz."$row->aktivitaet_kurzbz".date('d.m.Y H:i:s', $datum->mktime_fromtimestamp($row->start))."".date('d.m.Y H:i:s', $datum->mktime_fromtimestamp($row->ende))."".$row->diff."".(strlen($row->beschreibung)>53?substr($row->beschreibung,0,50).'...':$row->beschreibung)."".(isset($stg_arr[$row->studiengang_kz])?$stg_arr[$row->studiengang_kz]:$row->studiengang_kz)."$row->fachbereich_kurzbzzeitaufzeichnung_id' class='Item'>editzeitaufzeichnung_id' class='Item' onclick='return confdel()'>delete
\n"; + } + else + { + echo 'Sie sind derzeit keinen Projekten zugeordnet'; + } +} +else +{ + echo 'Fehler beim Ermitteln der Projekte'; +} + +?> +
+ + \ No newline at end of file diff --git a/content/ToDo_FASo.html b/content/ToDo_FASo.html index 602da8723..6d0061305 100644 --- a/content/ToDo_FASo.html +++ b/content/ToDo_FASo.html @@ -313,6 +313,10 @@ Studenten

Erledigte Anforderungen

    +
  • DiplomaSupplement - verliehener Titel ist nun geschlechtsabhängig
    + 06.11.2007 oesi
    +
    +
  • Das Feld Studiengang im PrestudentTab ist nun nicht mehr änderbar
    05.11.2007 oesi

    diff --git a/include/zeitaufzeichnung.class.php b/include/zeitaufzeichnung.class.php new file mode 100644 index 000000000..27cc0973b --- /dev/null +++ b/include/zeitaufzeichnung.class.php @@ -0,0 +1,272 @@ +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ +/** + * Klasse Zeitaufzeichnung + * @create 06-11-2007 + */ + +class zeitaufzeichnung +{ + var $conn; // resource DB-Handle + var $new; // boolean + var $errormsg; // string + var $result = array(); // zeitaufzeichnung Objekt + var $done=false; // boolean + + //Tabellenspalten + var $zeitaufzeichnung_id; // serial + var $uid; // varchar(16) + var $aktivitaet_kurzbz; // varchar(16) + var $start; // timestamp + var $ende; // timestamp + var $beschreibung; // varchar(256) + var $studiengang_kz; // integer + var $fachbereich_kurzbz; // varchar(16) + var $insertamum; // timestamp + var $insertvon; // varchar(16) + var $updateamum; // timestamp + var $updatevon; // varchar(16) + var $projekt_kurzbz; // varchar(16) + + + + // ************************************************************************* + // * Konstruktor + // * @param $conn Connection + // * $zeitaufzeichnung_id ID der Zeitaufzeichnung die geladen werden soll (Default=null) + // * $unicode wenn false dann wird das Encoding auf LATIN9 gesetzt + // * wenn true dann auf UNICODE + // * wenn null dann wird das Encoding nicht veraendert + // ************************************************************************* + function zeitaufzeichnung($conn, $zeitaufzeichnung_id=null,$unicode=false) + { + $this->conn = $conn; + + if($unicode!=null) + { + if ($unicode) + $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; + else + $qry = "SET CLIENT_ENCODING TO 'LATIN9';"; + + if(!pg_query($conn,$qry)) + { + $this->errormsg = "Encoding konnte nicht gesetzt werden"; + return false; + } + } + + if($zeitaufzeichnung_id != null) + $this->load($zeitaufzeichnung_id); + } + + // *********************************************** + // * Laedt die Zeitaufzeichnung mit der ID $zeitaufzeichnung_id + // * @param $adress_id ID der zu ladenden Adresse + // * @return true wenn ok, false im Fehlerfall + // *********************************************** + function load($zeitaufzeichnung_id) + { + + //Pruefen ob zeitaufzeichnung_id eine gueltige Zahl ist + if(!is_numeric($zeitaufzeichnung_id) || $zeitaufzeichnung_id == '') + { + $this->errormsg = 'Zeitaufzeichnung_id muss eine Zahl sein'; + return false; + } + + //Daten aus der Datenbank lesen + $qry = "SELECT * FROM campus.tbl_zeitaufzeichnung WHERE zeitaufzeichnung_id='$zeitaufzeichnung_id'"; + + if(!$result = pg_query($this->conn, $qry)) + { + $this->errormsg = 'Fehler bei einer Datenbankabfrage'; + return false; + } + + if($row = pg_fetch_object($result)) + { + $this->zeitaufzeichnung_id = $row->zeitaufzeichnung_id; + $this->uid = $row->uid; + $this->aktivitaet_kurzbz = $row->aktivitaet_kurzbz; + $this->start = $row->start; + $this->ende = $row->ende; + $this->beschreibung = $row->beschreibung; + $this->studiengang_kz = $row->studiengang_kz; + $this->fachbereich_kurzbz = $row->fachbereich_kurzbz; + $this->insertamum = $row->insertamum; + $this->insertvon = $row->insertvon; + $this->updateamum = $row->updateamum; + $this->updatevon = $row->updatevon; + $this->projekt_kurzbz = $row->projekt_kurzbz; + } + else + { + $this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden'; + return false; + } + + return true; + } + + // ******************************************* + // * Prueft die Variablen auf Gueltigkeit + // * @return true wenn ok, false im Fehlerfall + // ******************************************* + function validate() + { + $this->errormsg = ''; + return true; + } + + // ************************************************ + // * wenn $var '' ist wird "null" zurueckgegeben + // * wenn $var !='' ist werden datenbankkritische + // * Zeichen mit backslash versehen und das Ergebnis + // * unter Hochkomma gesetzt. + // ************************************************ + function addslashes($var) + { + return ($var!=''?"'".addslashes($var)."'":'null'); + } + + // *********************************************************************** + // * Speichert den aktuellen Datensatz in die Datenbank + // * Wenn $neu auf true gesetzt ist wird ein neuer Datensatz angelegt + // * andernfalls wird der Datensatz mit der ID in $adresse_id aktualisiert + // * @return true wenn ok, false im Fehlerfall + // *********************************************************************** + function save() + { + //Variablen pruefen + if(!$this->validate()) + return false; + + if($this->new) + { + //Neuen Datensatz einfuegen + $qry='BEGIN;INSERT INTO campus.tbl_zeitaufzeichnung (uid, aktivitaet_kurzbz, start, ende, beschreibung, + studiengang_kz, fachbereich_kurzbz, insertamum, insertvon, updateamum, updatevon, projekt_kurzbz) VALUES('. + $this->addslashes($this->uid).', '. + $this->addslashes($this->aktivitaet_kurzbz).', '. + $this->addslashes($this->start).', '. + $this->addslashes($this->ende).', '. + $this->addslashes($this->beschreibung).', '. + $this->addslashes($this->studiengang_kz).', '. + $this->addslashes($this->fachbereich_kurzbz).','. + $this->addslashes($this->insertamum).', '. + $this->addslashes($this->insertvon).', '. + $this->addslashes($this->updateamum).', '. + $this->addslashes($this->updatevon).', '. + $this->addslashes($this->projekt_kurzbz).');'; + } + else + { + //Updaten des bestehenden Datensatzes + + //Pruefen ob zeitaufzeichnung_id eine gueltige Zahl ist + if(!is_numeric($this->zeitaufzeichnung_id)) + { + $this->errormsg = 'zeitaufzeichnung_id muss eine gueltige Zahl sein: '.$this->zeitaufzeichnung_id."\n"; + return false; + } + + $qry='UPDATE campus.tbl_zeitaufzeichnung SET'. + ' uid='.$this->addslashes($this->uid).', '. + ' aktivitaet_kurzbz='.$this->addslashes($this->aktivitaet_kurzbz).', '. + ' start='.$this->addslashes($this->start).', '. + ' ende='.$this->addslashes($this->ende).', '. + ' beschreibung='.$this->addslashes($this->beschreibung).', '. + ' studiengang_kz='.$this->addslashes($this->studiengang_kz).', '. + ' fachbereich_kurzbz='.$this->addslashes($this->fachbereich_kurzbz).', '. + ' updateamum='.$this->addslashes($this->updateamum).', '. + ' updatevon='.$this->addslashes($this->updatevon).', '. + ' projekt_kurzbz='.$this->addslashes($this->projekt_kurzbz).' '. + 'WHERE zeitaufzeichnung_id='.$this->zeitaufzeichnung_id.';'; + } + + if(pg_query($this->conn,$qry)) + { + if($this->new) + { + //naechste ID aus der Sequence holen + $qry="SELECT currval('campus.tbl_zeitaufzeichnung_zeitaufzeichnung_id_seq') as id;"; + if($result = pg_query($this->conn, $qry)) + { + if($row = pg_fetch_object($result)) + { + $this->zeitaufzeichnung_id = $row->id; + pg_query($this->conn, 'COMMIT'); + return true; + } + else + { + pg_query($this->conn, 'ROLLBACK'); + $this->errormsg = "Fehler beim Auslesen der Sequence"; + return false; + } + } + else + { + pg_query($this->conn, 'ROLLBACK'); + $this->errormsg = 'Fehler beim Auslesen der Sequence'; + return false; + } + } + } + else + { + $this->errormsg = 'Fehler beim Speichern'; + return false; + } + return true; + } + + // ******************************************************** + // * Loescht den Datenensatz mit der ID die uebergeben wird + // * @param $zeitaufzeichnnung_id ID die geloescht werden soll + // * @return true wenn ok, false im Fehlerfall + // ******************************************************** + function delete($zeitaufzeichnung_id) + { + //Pruefen ob zeitaufzeichnung_id eine gueltige Zahl ist + if(!is_numeric($zeitaufzeichnung_id) || $zeitaufzeichnung_id == '') + { + $this->errormsg = 'zeitaufzeichnung_id muss eine gueltige Zahl sein'."\n"; + return false; + } + + //loeschen des Datensatzes + $qry="DELETE FROM campus.tbl_zeitaufzeichnung WHERE zeitaufzeichnung_id='$zeitaufzeichnung_id';"; + + if(pg_query($this->conn,$qry)) + { + return true; + } + else + { + $this->errormsg = 'Fehler beim Loeschen der Daten'."\n"; + return false; + } + } +} +?> \ No newline at end of file