diff --git a/content/student/studentkontooverlay.xul.php b/content/student/studentkontooverlay.xul.php
index 9f0fa772c..1c7b985e1 100644
--- a/content/student/studentkontooverlay.xul.php
+++ b/content/student/studentkontooverlay.xul.php
@@ -36,6 +36,138 @@ echo '';
>
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/content/student/studentoverlay.js.php b/content/student/studentoverlay.js.php
index e56b5166b..fd26bd576 100644
--- a/content/student/studentoverlay.js.php
+++ b/content/student/studentoverlay.js.php
@@ -636,6 +636,23 @@ function StudentAuswahl()
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
var datasource = rdfService.GetDataSource(url);
rollentree.database.AddDataSource(datasource);
+
+ //Zeugnis
+ kontotree = document.getElementById('student-konto-tree');
+ url='rdf/konto.rdf.php?person_id='+person_id+"&"+gettimestamp();
+
+ //Alte DS entfernen
+ var oldDatasources = kontotree.database.GetDataSources();
+ while(oldDatasources.hasMoreElements())
+ {
+ kontotree.database.RemoveDataSource(oldDatasources.getNext());
+ }
+ //Refresh damit die entfernten DS auch wirklich entfernt werden
+ kontotree.builder.rebuild();
+
+ var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
+ var datasource = rdfService.GetDataSource(url);
+ kontotree.database.AddDataSource(datasource);
//Zeugnis
zeugnistree = document.getElementById('student-zeugnis-tree');
@@ -851,4 +868,55 @@ function StudentAkteDel()
StudentTreeRefresh();
}
+}
+
+// ****
+// * Wenn eine buchung Ausgewaehlt wird, dann werden
+// * die Details geladen und angezeigt
+// ****
+function StudentKontoAuswahl()
+{
+ netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+ var tree = document.getElementById('student-konto-tree');
+
+ if (tree.currentIndex==-1) return;
+
+ //Ausgewaehlte Nr holen
+ var col = tree.columns ? tree.columns["student-konto-tree-buchungsnr"] : "student-konto-tree-buchungsnr";
+ var buchungsnr=tree.view.getCellText(tree.currentIndex,col);
+
+ //Daten holen
+ var url = 'rdf/konto.rdf.php?buchungsnr='+buchungsnr+'&'+gettimestamp();
+
+ var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
+ getService(Components.interfaces.nsIRDFService);
+
+ var dsource = rdfService.GetDataSourceBlocking(url);
+
+ var subject = rdfService.GetResource("http://www.technikum-wien.at/konto/" + buchungsnr);
+
+ var predicateNS = "http://www.technikum-wien.at/konto/rdf";
+
+ //Daten holen
+
+ person_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#person_id" ));
+ studiengang_kz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#studiengang_kz" ));
+ studiensemester_kurzbz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#studiensemester_kurzbz" ));
+ buchungsnr_verweis = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#buchungsnr_verweis" ));
+ betrag = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#betrag" ));
+ buchungsdatum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#buchungsdatum" ));
+ buchungstext = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#buchungstext" ));
+ mahnspanne = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#mahnspanne" ));
+ buchungstyp_kurzbz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#buchungstyp_kurzbz" ));
+
+ document.getElementById('student-konto-textbox-betrag').value=betrag;
+ document.getElementById('student-konto-textbox-buchungsdatum').value=buchungsdatum;
+ document.getElementById('student-konto-textbox-buchungstext').value=buchungstext;
+ document.getElementById('student-konto-textbox-mahnspanne').value=mahnspanne;
+ document.getElementById('student-konto-menulist-buchungstyp').value=buchungstyp_kurzbz;
+}
+
+function StudentKontoDisableFields(val)
+{
+
}
\ No newline at end of file
diff --git a/include/konto.class.php b/include/konto.class.php
new file mode 100644
index 000000000..2fc6dc800
--- /dev/null
+++ b/include/konto.class.php
@@ -0,0 +1,372 @@
+,
+ * Andreas Oesterreicher and
+ * Rudolf Hangl .
+ */
+/**
+ * Klasse Konto
+ * @create 2007-05-14
+ */
+
+class konto
+{
+ var $conn; // @var resource DB-Handle
+ var $new; // @var boolean
+ var $errormsg; // @var string
+ var $result = array(); // @var adresse Objekt
+
+ //Tabellenspalten
+ var $buchungsnr;
+ var $person_id;
+ var $studiengang_kz;
+ var $studiensemester_kurzbz;
+ var $buchungsnr_verweis;
+ var $betrag;
+ var $buchungsdatum;
+ var $buchungstext;
+ var $mahnspanne;
+ var $buchungstyp_kurzbz;
+ var $updateamum;
+ var $updatevon;
+ var $insertamum;
+ var $insertvon;
+ var $ext_id;
+
+ var $beschreibung;
+
+ // **************************************************************************
+ // * Konstruktor
+ // * @param $conn Connection
+ // * $buchungsnr ID der Adresse die geladen werden soll (Default=null)
+ // **************************************************************************
+ function konto($conn, $buchungsnr=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($buchungsnr!=null)
+ $this->load($buchungsnr);
+ }
+
+ // ************************************************
+ // * Laedt die Funktion mit der ID $buchungsnr
+ // * @param $buchungsnr ID der zu ladenden Email
+ // * @return true wenn ok, false im Fehlerfall
+ // ************************************************
+ function load($buchungsnr)
+ {
+ if(!is_numeric($buchungsnr))
+ {
+ $this->errormsg = 'Buchungsnr muss eine gueltige Zahl sein';
+ return false;
+ }
+
+ $qry = "SELECT * FROM public.tbl_konto WHERE buchungsnr='$buchungsnr'";
+
+ if($result = pg_query($this->conn, $qry))
+ {
+ if($row = pg_fetch_object($result))
+ {
+ $this->buchungsnr = $row->buchungsnr;
+ $this->person_id = $row->person_id;
+ $this->studiengang_kz = $row->studiengang_kz;
+ $this->studiensemester_kurzbz = $row->studiensemester_kurzbz;
+ $this->buchungsnr_verweis = $row->buchungsnr_verweis;
+ $this->betrag = $row->betrag;
+ $this->buchungsdatum = $row->buchungsdatum;
+ $this->buchungstext = $row->buchungstext;
+ $this->mahnspanne = $row->mahnspanne;
+ $this->buchungstyp_kurzbz = $row->buchungstyp_kurzbz;
+ $this->updatamum = $row->updateamum;
+ $this->updatevon = $row->updatevon;
+ $this->insertamum = $row->insertamum;
+ $this->insertvon = $row->insertvon;
+ $this->ext_id = $row->ext_id;
+ return true;
+ }
+ else
+ {
+ $this->errormsg = 'Datensatz wurde nicht gefunden';
+ return false;
+ }
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim laden der Daten';
+ return false;
+ }
+ }
+
+ // *******************************************
+ // * Prueft die Variablen auf gueltigkeit
+ // * @return true wenn ok, false im Fehlerfall
+ // *******************************************
+ function checkvars()
+ {
+ 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 $kontakt_id aktualisiert
+ // * @param $new true wenn insert false wenn update
+ // * @return true wenn ok, false im Fehlerfall
+ // ***********************************************************************
+ function save($new=null)
+ {
+ //Variablen pruefen
+ if(!$this->checkvars())
+ return false;
+
+ if($new==null)
+ $new = $this->new;
+
+ if($new)
+ {
+ //Neuen Datensatz einfuegen
+
+ $qry='BEGIN;INSERT INTO public.tbl_konto (person_id, studiengang_kz, studiensemester_kurzbz, buchungsnr_verweis, betrag, buchungsdatum, buchungstext, mahnspanne, buchungstyp_kurzbz, updateamum, updatevon, insertamum, insertvon, ext_id) VALUES('.
+ $this->addslashes($this->person_id).', '.
+ $this->addslashes($this->studiengang_kz).', '.
+ $this->addslashes($this->studiensemester_kurzbz).', '.
+ $this->addslashes($this->buchungsnr_verweis).', '.
+ $this->addslashes($this->betrag).', '.
+ $this->addslashes($this->buchungsdatum).', '.
+ $this->addslashes($this->buchungstext).', '.
+ $this->addslashes($this->mahnspanne).', '.
+ $this->addslashes($this->buchungstyp_kurzbz).', '.
+ $this->addslashes($this->updateamum).', '.
+ $this->addslashes($this->updatevon).', '.
+ $this->addslashes($this->insertamum).', '.
+ $this->addslashes($this->insertvon).', '.
+ $this->addslashes($this->ext_id).');';
+ }
+ else
+ {
+ //Updaten des bestehenden Datensatzes
+ $qry = 'UPDATE public.tbl_konto SET '.
+ ' person_id='.$this->addslashes($this->person_id).','.
+ ' studiengang_kz='.$this->addslashes($this->studiengang_kz).','.
+ ' studiensemester_kurzbz='.$this->addslashes($this->studiensemester_kurzbz).','.
+ ' buchungsnr_verweis='.$this->addslashes($this->buchungsnr_verweis).','.
+ ' betrag='.$this->addslashes($this->betrag).','.
+ ' buchungsdatum='.$this->addslashes($this->buchungsdatum).','.
+ ' buchungstext='.$this->addslashes($this->buchungstext).','.
+ ' mahnspanne='.$this->addslashes($this->mahnspanne).','.
+ ' buchungstyp_kurzbz='.$this->addslashes($this->buchungstyp_kurzbz).','.
+ ' updateamum='.$this->addslashes($this->updateamum).','.
+ ' updatevon='.$this->addslashes($this->updatevon).','.
+ ' insertamum='.$this->addslashes($this->insertamum).','.
+ ' insertvon='.$this->addslashes($this->insertvon).','.
+ ' ext_id='.$this->addslashes($this->ext_id).';';
+
+ }
+ //echo $qry;
+
+ if(pg_query($this->conn, $qry))
+ {
+ if($new)
+ {
+ $qry = "SELECT currval('public.tbl_konto_buchungsnr_seq') as id";
+ if($result = pg_query($this->conn, $qry))
+ {
+ if($row = pg_fetch_object($result))
+ {
+ $this->buchungsnr = $row->id;
+ pg_query($this->conn, 'COMMIT;');
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Auslesen der Sequence';
+ pg_query($this->conn, 'ROLLBACK;');
+ return false;
+ }
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Auslesen der Sequence';
+ pg_query($this->conn, 'ROLLBACK;');
+ return false;
+ }
+ }
+ return true;
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Speichern der Daten';
+ return true;
+ }
+ }
+
+ /**
+ * Loescht den Datenensatz mit der ID die uebergeben wird
+ * @param buchungsnr ID die geloescht werden soll
+ * @return true wenn ok, false im Fehlerfall
+ */
+ function delete($buchungsnr)
+ {
+ //Pruefen ob Verweise auf diese Buchung Vorhanden sind
+ $qry = "SELECT count(*) as anzahl FROM public.tbl_konto WHERE buchungsnr_verweis='".addslashes($buchungsnr)."'";
+ if($result = pg_query($this->conn, $qry))
+ {
+ if($row = pg_fetch_object($this->conn, $qry))
+ {
+ if($row->anzahl>0)
+ {
+ $this->errormsg = 'Bitte zuerst die zugeordneten Buchungen loeschen';
+ return false;
+ }
+ else
+ {
+ //Wenn keine Verweise Vorhanden sind, dann die Buchung loeschen
+ $qry = "DELETE FROM public.tbl_konto WHERE buchungsnr_verweis='".addslashes($buchungsnr)."'";
+ if(pg_query($this->conn, $qry))
+ return true;
+ else
+ {
+ $this->errormsg = 'Fehler beim Loeschen der Buchung';
+ return false;
+ }
+ }
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Ermitteln der Verweise';
+ return false;
+ }
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Ermitteln der Verweise';
+ return false;
+ }
+ }
+
+ // ******************************************
+ // * Laedt alle Buchungen einer Person
+ // * und legt diese geordnet in ein Array
+ // * @param person_id
+ // * @return true wenn ok, false wenn fehler
+ // ******************************************
+ function getBuchungen($person_id)
+ {
+ if(!is_numeric($person_id))
+ {
+ $this->errormsg = 'Person_id muss eine gueltige Zahl sein';
+ return false;
+ }
+
+ $qry = "SELECT * FROM public.tbl_konto WHERE person_id='".$person_id."' ORDER BY buchungsdatum";
+
+ if($result = pg_query($this->conn, $qry))
+ {
+ while($row = pg_fetch_object($result))
+ {
+ $buchung = new konto($this->conn, null, null);
+
+ $buchung->buchungsnr = $row->buchungsnr;
+ $buchung->person_id = $row->person_id;
+ $buchung->studiengang_kz = $row->studiengang_kz;
+ $buchung->studiensemester_kurzbz = $row->studiensemester_kurzbz;
+ $buchung->buchungsnr_verweis = $row->buchungsnr_verweis;
+ $buchung->betrag = $row->betrag;
+ $buchung->buchungsdatum = $row->buchungsdatum;
+ $buchung->buchungstext = $row->buchungstext;
+ $buchung->mahnspanne = $row->mahnspanne;
+ $buchung->buchungstyp_kurzbz = $row->buchungstyp_kurzbz;
+ $buchung->updatamum = $row->updateamum;
+ $buchung->updatevon = $row->updatevon;
+ $buchung->insertamum = $row->insertamum;
+ $buchung->insertvon = $row->insertvon;
+ $buchung->ext_id = $row->ext_id;
+
+ if($buchung->buchungsnr_verweis!='')
+ {
+ $this->result[$buchung->buchungsnr_verweis]['childs'][] = $buchung;
+ }
+ else
+ {
+ $this->result[$buchung->buchungsnr]['parent'] = $buchung;
+ }
+ }
+ return true;
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim laden der Daten';
+ return false;
+ }
+ }
+
+ // ******************************************
+ // * Liefert alle Buchungstypen
+ // * @return true wenn ok, false wenn Fehler
+ // ******************************************
+ function getBuchungstyp()
+ {
+ $qry = "SELECT * FROM public.tbl_buchungstyp ORDER BY beschreibung";
+
+ if($result = pg_query($this->conn, $qry))
+ {
+ while($row = pg_fetch_object($result))
+ {
+ $typ = new konto($this->conn, null, null);
+
+ $typ->buchungstyp_kurzbz = $row->buchungstyp_kurzbz;
+ $typ->beschreibung = $row->beschreibung;
+
+ $this->result[] = $typ;
+ }
+ return false;
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Laden der Daten';
+ return false;
+ }
+ }
+}
+?>
\ No newline at end of file
diff --git a/rdf/buchungstyp.rdf.php b/rdf/buchungstyp.rdf.php
new file mode 100644
index 000000000..e9b61537f
--- /dev/null
+++ b/rdf/buchungstyp.rdf.php
@@ -0,0 +1,67 @@
+,
+ * Andreas Oesterreicher and
+ * Rudolf Hangl .
+ */
+
+// header für no cache
+header("Cache-Control: no-cache");
+header("Cache-Control: post-check=0, pre-check=0",false);
+header("Expires Mon, 26 Jul 1997 05:00:00 GMT");
+header("Pragma: no-cache");
+// content type setzen
+header("Content-type: application/xhtml+xml");
+// xml
+echo '';
+// DAO
+require_once('../vilesci/config.inc.php');
+require_once('../include/konto.class.php');
+
+// Datenbank Verbindung
+if (!$conn = @pg_pconnect(CONN_STRING))
+ $error_msg='Es konnte keine Verbindung zum Server aufgebaut werden!';
+
+// studiensemester holen
+$typ = new konto($conn,null, true);
+$typ->getBuchungstyp();
+
+$rdf_url='http://www.technikum-wien.at/buchungstyp';
+
+?>
+
+
+
+result as $row)
+{
+ ?>
+
+
+ buchungstyp_kurzbz ?>]]>
+ beschreibung ?>]]>
+
+
+
+
+
diff --git a/rdf/konto.rdf.php b/rdf/konto.rdf.php
new file mode 100644
index 000000000..011c3324b
--- /dev/null
+++ b/rdf/konto.rdf.php
@@ -0,0 +1,155 @@
+,
+ * Andreas Oesterreicher and
+ * Rudolf Hangl .
+ */
+/*
+ * Created on 02.12.2004
+ *
+ * To change the template for this generated file go to
+ * Window - Preferences - PHPeclipse - PHP - Code Templates
+ */
+// header fuer no cache
+header("Cache-Control: no-cache, must-revalidate");
+header("Cache-Control: post-check=0, pre-check=0",false);
+header("Expires Mon, 26 Jul 1997 05:00:00 GMT");
+header("Pragma: no-cache");
+// content type setzen
+header("Content-type: application/xhtml+xml");
+// xml
+echo '';
+// DAO
+require_once('../vilesci/config.inc.php');
+require_once('../include/konto.class.php');
+require_once('../include/functions.inc.php');
+
+// Datenbank Verbindung
+if (!$conn = @pg_pconnect(CONN_STRING))
+ $error_msg='Es konnte keine Verbindung zum Server aufgebaut werden!';
+
+$user = get_uid();
+
+$hier='';
+if(isset($_GET['person_id']) && is_numeric($_GET['person_id']))
+{
+ $person_id=$_GET['person_id'];
+}
+else
+ $person_id='';
+
+if(isset($_GET['buchungsnr']) && is_numeric($_GET['buchungsnr']))
+{
+ $buchungsnr = $_GET['buchungsnr'];
+}
+else
+ $buchungsnr = '';
+
+$konto = new konto($conn, null, true);
+
+if($person_id!='')
+{
+ $konto->getBuchungen($person_id);
+}
+elseif($buchungsnr!='')
+{
+ if(!$konto->load($buchungsnr))
+ die($konto->errormsg);
+}
+else
+ die('Falsche Parameteruebergabe');
+
+$rdf_url='http://www.technikum-wien.at/konto';
+
+?>
+
+
+
+buchungsnr."\" about=\"".$rdf_url.'/'.$row->buchungsnr."\" >
+ buchungsnr."]]>
+ person_id."]]>
+ studiengang_kz."]]>
+ studiensemester_kurzbz."]]>
+ buchungsnr_verweis."]]>
+ betrag."]]>
+ buchungsdatum."]]>
+ buchungstext."]]>
+ mahnspanne."]]>
+ buchungstyp_kurzbz."]]>
+ updateamum."]]>
+ updatevon."]]>
+ insertamum."]]>
+ insertvon."]]>
+ ";
+}
+
+if($person_id!='')
+{
+ foreach ($konto->result as $buchung)
+ {
+ $buchung = $buchung['parent'];
+ //1. Ebene
+ drawrow($buchung);
+
+ $hier.="
+
+ buchungsnr."\" >";
+
+ if(isset($konto->result[$buchung->buchungsnr]['childs']))
+ {
+ //2. Ebene
+ foreach ($konto->result[$buchung->buchungsnr]['childs'] as $row)
+ {
+ if(is_object($row))
+ {
+ drawrow($row);
+
+ $hier.="
+ buchungsnr.'" />';
+ }
+ }
+ }
+
+ $hier.="
+
+ ";
+
+ }
+}
+else
+{
+ $hier.="buchungsnr.'" />';
+ drawrow($konto);
+}
+ $hier="
+ ".$hier."
+ ";
+
+ echo $hier;
+?>
+
+
+