From ba7f640e7cf77d3ccd7e490f0898430c5ae950a1 Mon Sep 17 00:00:00 2001 From: Rudolf Hangl Date: Fri, 1 Dec 2006 13:09:52 +0000 Subject: [PATCH] SYNC News --- admin/sync/sync_vilesci_portal_news.php | 149 +++++++++++++ include/fas/benutzerfunktion.class.php | 2 +- include/fas/news.class.php | 264 ++++++++++++++++++++++++ include/fas/raumtyp.class.php | 239 +++++++++++++++++++++ 4 files changed, 653 insertions(+), 1 deletion(-) create mode 100644 admin/sync/sync_vilesci_portal_news.php create mode 100644 include/fas/news.class.php create mode 100644 include/fas/raumtyp.class.php diff --git a/admin/sync/sync_vilesci_portal_news.php b/admin/sync/sync_vilesci_portal_news.php new file mode 100644 index 000000000..150514c39 --- /dev/null +++ b/admin/sync/sync_vilesci_portal_news.php @@ -0,0 +1,149 @@ +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ + +//* +//* Synchronisiert Funktiondatensaetze von Vilesci DB in PORTAL DB +//* +//* + +include('../../vilesci/config.inc.php'); +include('../../include/fas/news.class.php'); + +$conn=pg_connect(CONN_STRING) or die("Connection zur Portal Datenbank fehlgeschlagen"); +$conn_vilesci=pg_connect(CONN_STRING_VILESCI) or die("Connection zur Vilesci Datenbank fehlgeschlagen"); + +$adress='ruhan@technikum-wien.at'; +//$adress='fas_sync@technikum-wien.at'; + +$error_log=''; +$text = ''; +$anzahl_quelle=0; +$anzahl_eingefuegt=0; +$anzahl_fehler=0; + +function validate($row) +{ +} + +/************************* + * VILESCI-PORTAL - Synchronisation + */ + +//newsfunktion +$qry = "SELECT * FROM tbl_news"; + +if($result = pg_query($conn_vilesci, $qry)) +{ + echo nl2br("News Sync\n-----------\n"); + $anzahl_quelle=pg_num_rows($result); + while($row = pg_fetch_object($result)) + { + $error=false; + $news = new news($conn); + $news->news_id=$row->news_id; + $news->betreff=$row->betreff; + $news->text=$row->text; + $news->semester=$row->semester; + $news->uid=$row->uid; + $news->studiengang_kz=$row->studiengang_kz; + $news->verfasser=$row->verfasser; + //$news->insertamum=''; + $news->insertvon='SYNC'; + $news->updateamum=$row->updateamum; + //$news->updatevon=$row->updatevon; + + $qry = "SELECT news_id FROM tbl_news WHERE news_id='$row->news_id'"; + if($result1 = pg_query($conn, $qry)) + { + if(pg_num_rows($result1)>0) //wenn dieser eintrag schon vorhanden ist + { + if($row1=pg_fetch_object($result1)) + { + //Newsdaten updaten + $news->new=false; + $news->news_id=$row->news_id; + } + else + { + $error_log.="news_id von $row->news_id konnte nicht ermittelt werden\n"; + $error=true; + } + } + else + { + //News neu anlegen + $news->new=true; + } + + if(!$error) + { + $qryuid = "SELECT uid FROM tbl_benutzer WHERE uid = '$row->uid'"; + if($resultuid = pg_query($conn, $qryuid)) + { + if (pg_num_rows($resultuid)>0) + { + if(!$news->save()) + { + $error_log.=$news->errormsg."\n"; + $anzahl_fehler++; + } + else + $anzahl_eingefuegt++; + } + else + { + $error_log.="uid von $row->uid konnte nicht in tbl_benutzer gefunden werden\n"; + $anzahl_fehler++; + } + } + else + { + $error_log.="Fehler beim Zugriff auf tbl_benuntzer\n"; + $anzahl_fehler++; + } + } + else + $anzahl_fehler++; + } + } + echo nl2br("abgeschlossen\n\n"); +} +else + $error_log .= 'Newsdatensaetze konnten nicht geladen werden'; + +?> + + + +Synchro - Vilesci -> Portal - News + + + + + + \ No newline at end of file diff --git a/include/fas/benutzerfunktion.class.php b/include/fas/benutzerfunktion.class.php index 20d28b013..55e815855 100644 --- a/include/fas/benutzerfunktion.class.php +++ b/include/fas/benutzerfunktion.class.php @@ -80,7 +80,7 @@ class benutzerfunktion $pfunktion_obj->studiengang_kz=$row->studiengang_kz; $pfunktion_obj->funktion_kurzbz=$row->funtion_kurzbz; $pfunktion_obj->insertamum=$row->insertamum; - $pfunktion_obj->insertvon=$$row->insertvon; + $pfunktion_obj->insertvon=$row->insertvon; $pfunktion_obj->updateamum=$row->updateamum; $pfunktion_obj->updatevon=$row->updatevon; diff --git a/include/fas/news.class.php b/include/fas/news.class.php new file mode 100644 index 000000000..8b5a286dd --- /dev/null +++ b/include/fas/news.class.php @@ -0,0 +1,264 @@ +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ +/** + * Klasse news (FAS-Online) + * @create 14-03-2006 + */ + +class news +{ + var $conn; // @var resource DB-Handle + var $new; // @var boolean + var $errormsg; // @var string + var $result = array(); // @var fachbereich Objekt + + //Tabellenspalten + var $news_id; // @var serial + var $betreff; // @var varchar(128) + var $text; // @var string + var $semester; // @var smallint + var $uid; // @var varchar(16) + var $studiengang_kz; // @var integer + var $verfasser; // @var varchar(64) + var $updateamum; // @var timestamp + var $updatevon=0; // @var string + var $insertamum; // @var timestamp + var $insertvon=0; // @var string + + + /** + * Konstruktor + * @param $conn Connection zur DB + * $news_id ID der zu ladenden Funktion + */ + function news($conn, $news_id=null) + { + $this->conn = $conn; + if($news_id != null) + $this->load($news_id); + } + + /** + * Laedt alle verfuegbaren Benutzerfunktionen + * @return true wenn ok, false im Fehlerfall + */ + function getAll() + { + $qry = 'SELECT * FROM tbl_news order by news_id;'; + + if(!$res = pg_query($this->conn, $qry)) + { + $this->errormsg = 'Fehler beim laden der Datensaetze'; + return false; + } + + while($row = pg_fetch_object($res)) + { + $news_obj = new news($this->conn); + $news_obj->news_id = $row->news_id; + $news_obj->betreff = $row->betreff; + $news_obj->text = $row->text; + $news_obj->semester = $row->semester; + $news_obj->uid = $row->uid; + $news_obj->studiengang_kz=$row->studiengang_kz; + $news_obj->verfasser = $row->verfasser; + $news_obj->insertamum=$row->insertamum; + $news_obj->insertvon=$row->insertvon; + $news_obj->updateamum=$row->updateamum; + $news_obj->updatevon=$row->updatevon; + + $this->result[] = $news_obj; + } + return true; + } + + /** + * Laedt eine News + * @param $news_id ID der zu ladenden Funktion + * @return true wenn ok, false im Fehlerfall + */ + function load($news_id) + { + if($news_id == '' || !is_nan($news_id)) + { + $this->errormsg = 'news_id muß eine gültige Zahl sein'; + return false; + } + + $qry = "SELECT * FROM tbl_news WHERE news_id = '$this->news_id';"; + + if(!$res = pg_query($this->conn, $qry)) + { + $this->errormsg = 'Fehler beim laden des Datensatzes'; + return false; + } + + if($row=pg_fetch_object($res)) + { + $this->news_id = $row->news_id; + $this->betreff = $row->betreff; + $this->text = $row->text; + $this->semester = $row->semester; + $this->uid = $row->uid; + $this->studiengang_kz = $row->studiengang_kz; + $this->verfasser = $row->verfasser; + $this->insertamum =$row->insertamum; + $this->insertvon =$row->insertvon; + $this->updateamum = $row->updateamum; + $this->updatevon = $row->updatevon; + } + else + { + $this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden'; + return false; + } + + return true; + } + + /** + * Loescht einen Datensatz + * @param $news_id id des Datensatzes der geloescht werden soll + * @return true wenn ok, false im Fehlerfall + */ + function delete($news_id) + { + $this->errormsg = 'Noch nicht implementiert'; + return false; + } + function addslashes($var) + { + return ($var!=''?"'".addslashes($var)."'":'null'); + } + /** + * Prueft die Gueltigkeit der Variablen + * @return true wenn ok, false im Fehlerfall + */ + function checkvars() + { + $this->betreff = str_replace("'",'´',$this->betreff); + $this->text = str_replace("'",'´',$this->text); + $this->verfasser = str_replace("'",'´',$this->verfasser); + + + //Laenge Pruefen + if(strlen($this->betreff)>128) + { + $this->errormsg = "Betreff darf nicht laenger als 128 Zeichen sein bei $this->news_id - $this->betreff"; + return false; + } + if(strlen($this->verfasser)>64) + { + $this->errormsg = "Verfasser darf nicht laenger als 64 Zeichen sein bei $this->news_id - $this->verfasser"; + return false; + } + $this->errormsg = ''; + return true; + } + /** + * Speichert den aktuellen Datensatz + * @return true wenn ok, false im Fehlerfall + */ + function save() + { + //Gueltigkeit der Variablen pruefen + if(!$this->checkvars()) + return false; + + if($this->new) + { + //Neuen Datensatz anlegen + //Pruefen ob funktion_kurzbz befüllt ist + if($this->news_id == '' || !is_numeric($this->news_id)) + { + $this->errormsg = 'News_id ungültig'; + return false; + } + $qry = 'INSERT INTO tbl_news (news_id, betreff, text, semester, uid, studiengang_kz, verfasser, insertamum, insertvon, + updateamum, updatevon) VALUES ('. + $this->addslashes($this->news_id).', '. + $this->addslashes($this->betreff).', '. + $this->addslashes($this->text).', '. + $this->addslashes($this->semester).', '. + $this->addslashes($this->uid).', '. + $this->addslashes($this->studiengang_kz).', '. + $this->addslashes($this->verfasser).', '. + $this->addslashes($this->insertamum).', '. + $this->addslashes($this->insertvon).', '. + $this->addslashes($this->updateamum).', '. + $this->addslashes($this->updatevon).'); '; + } + else + { + //bestehenden Datensatz akualisieren + + //Pruefen ob news_id eine gueltige Zahl ist + if(!is_numeric($this->news_id) || $this->news_id == '') + { + $this->errormsg = 'News_id muss eine gueltige Zahl sein'; + return false; + } + + $qry = 'UPDATE tbl_news SET '. + 'news_id='.$this->addslashes($this->news_id).', '. + 'betreff='.$this->addslashes($this->betreff).', '. + 'text='.$this->addslashes($this->text).', '. + 'semester='.$this->addslashes($this->semester).', '. + 'uid='.$this->addslashes($this->uid).', '. + 'studiengang_kz='.$this->addslashes($this->studiengang_kz).', '. + 'verfasser='.$this->addslashes($this->verfasser).', '. + 'insertamum='.$this->addslashes($this->insertamum).', '. + 'insertvon='.$this->addslashes($this->insertvon).', '. + 'updateamum='.$this->addslashes($this->updateamum).', '. + 'updatevon='.$this->addslashes($this->updatevon).' '. + 'WHERE news_id = '.$this->addslashes($this->news_id).';'; + } + + if(pg_query($this->conn, $qry)) + { + /*//Log schreiben + $sql = $qry; + $qry = "SELECT nextval('log_seq') as id;"; + if(!$row = pg_fetch_object(pg_query($this->conn, $qry))) + { + $this->errormsg = 'Fehler beim Auslesen der Log-Sequence'; + return false; + } + + $qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')"; + if(pg_query($this->conn, $qry)) + return true; + else + { + $this->errormsg = 'Fehler beim Speichern des Log-Eintrages'; + return false; + }*/ + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern des Datensatzes - '.$this->uid; + return false; + } + } +} +?> \ No newline at end of file diff --git a/include/fas/raumtyp.class.php b/include/fas/raumtyp.class.php new file mode 100644 index 000000000..a2d055b07 --- /dev/null +++ b/include/fas/raumtyp.class.php @@ -0,0 +1,239 @@ +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ +/** + * Klasse ortraumtyp (FAS-Online) + * @create 14-03-2006 + */ + +class raumtyp +{ + var $conn; // @var resource DB-Handle + var $new; // @var boolean + var $errormsg; // @var string + var $result = array(); // @var fachbereich Objekt + + //Tabellenspalten + var $beschreibung; // @var string + var $raumtyp_kurzbz; // @var string + var $updateamum; // @var timestamp + var $updatevon=0; // @var string + var $insertamum; // @var timestamp + var $insertvon=0; // @var string + + + /** + * Konstruktor + * @param $conn Connection zur DB + * $ort_kurzbz und hierarchie ID des zu ladenden OrtRaumtyps + */ + function raumtyp($conn, $raumtyp_kurzbz=null) + { + $this->conn = $conn; + if($raumtyp_kurzbz != null) + $this->load($raumtyp_kurzbz); + } + + /** + * Laedt alle verfuegbaren OrtRaumtypen + * @return true wenn ok, false im Fehlerfall + */ + function getAll() + { + $qry = 'SELECT * FROM tbl_raumtyp order by raumtyp_kurzbz;'; + + if(!$res = pg_query($this->conn, $qry)) + { + $this->errormsg = 'Fehler beim Laden der Datensaetze'; + return false; + } + + while($row = pg_fetch_object($res)) + { + $raumtyp_obj = new ort($this->conn); + + $raumtyp_obj->beschreibung = $row->beschreibung; + $raumtyp_obj->raumtyp_kurzbz = $row->raumtyp_kurzbz; + $raumtyp_obj->insertamum = $row->insertamum; + $raumtyp_obj->insertvon = $row->insertvon; + $raumtyp_obj->updateamum = $row->updateamum; + $raumtyp_obj->updatevon = $row->updatevon; + + $this->result[] = $raumtyp_obj; + } + return true; + } + + /** + * Laedt einen Raumtyp + * @param $raumtyp ID des zu ladenden Raumtyps + * @return true wenn ok, false im Fehlerfall + */ + function load($raumtyp_kurzbz) + { + if($raum_kurzbz == '') + { + $this->errormsg = 'Kein gültiger Schlüssel vorhanden'; + return false; + } + + $qry = "SELECT * FROM tbl_raumtyp WHERE raumtyp_kurzbz = '$raumtyp_kurzbz';"; + + if(!$res = pg_query($this->conn, $qry)) + { + $this->errormsg = 'Fehler beim laden des Datensatzes'; + return false; + } + + if($row=pg_fetch_object($res)) + { + $this->beschreibung = $row->beschreibung; + $this->raumtyp_kurzbz = $row->kurzbz; + $this->insertamum = $row->insertamum; + $this->insertvon = $row->insertvon; + $this->updateamum = $row->updateamum; + $this->updatevon = $row->updatevon; + } + else + { + $this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden'; + return false; + } + + return true; + } + + /** + * Loescht einen Datensatz + * @param $raumtyp_kurzbz ID des Datensatzes der geloescht werden soll + * @return true wenn ok, false im Fehlerfall + */ + function delete($raumtyp_kurzbz) + { + $this->errormsg = 'Noch nicht implementiert'; + return false; + } + function addslashes($var) + { + return ($var!=''?"'".addslashes($var)."'":'null'); + } + /** + * Prueft die Gueltigkeit der Variablen + * @return true wenn ok, false im Fehlerfall + */ + function checkvars() + { + $this->beschreibung = str_replace("'",'´',$this->beschreibung); + $this->raumtyp_kurzbz = str_replace("'",'´',$this->raumtyp_kurzbz); + + + //Laenge Pruefen + if(strlen($this->beschreibung)>256) + { + $this->errormsg = "Beschreibung darf nicht laenger als 256 Zeichen sein bei $this->raumtyp_kurzbz - ".$this->beschreibung; + return false; + } + if(strlen($this->raumtyp_kurzbz)>8) + { + $this->errormsg = "Raumtyp_kurzbz darf nicht laenger als 8 Zeichen sein bei $this->raumtyp_kurzbz"; + return false; + } + $this->errormsg = ''; + return true; + } + /** + * Speichert den aktuellen Datensatz + * @return true wenn ok, false im Fehlerfall + */ + function save() + { + //Gueltigkeit der Variablen pruefen + if(!$this->checkvars()) + return false; + + if($this->new) + { + //Pruefen ob id gültig ist + if($this->raumtyp_kurzbz == '') + { + $this->errormsg = 'Keine gültige ID'; + return false; + } + //Neuen Datensatz anlegen + $qry = 'INSERT INTO tbl_raumtyp (beschreibung, raumtyp_kurzbz, + insertamum, insertvon, updateamum, updatevon) VALUES ('. + $this->addslashes($this->beschreibung).', '. + $this->addslashes($this->raumtyp_kurzbz).', '. + $this->addslashes($this->insertamum).', '. + $this->addslashes($this->insertvon).', '. + $this->addslashes($this->updateamum).', '. + $this->addslashes($this->updatevon).');'; + + } + else + { + //bestehenden Datensatz akualisieren + + //Pruefen ob id gueltig ist + if($this->raumtyp_kurzbz == '') + { + $this->errormsg = 'Keine gültige ID'; + return false; + } + + $qry = 'UPDATE tbl_raumtyp SET '. + 'beschreibung='.$this->addslashes($this->beschreibung).', '. + 'insertamum='.$this->addslashes($this->insertamum).', '. + 'insertvon='.$this->addslashes($this->insertvon).', '. + 'updateamum='.$this->addslashes($this->updateamum).', '. + 'updatevon='.$this->addslashes($this->updatevon).' '. + 'WHERE raumtyp_kurzbz = '.$this->addslashes($this->ort_kurzbz).';'; + } + + if(pg_query($this->conn, $qry)) + { + /*//Log schreiben + $sql = $qry; + $qry = "SELECT nextval('log_seq') as id;"; + if(!$row = pg_fetch_object(pg_query($this->conn, $qry))) + { + $this->errormsg = 'Fehler beim Auslesen der Log-Sequence'; + return false; + } + + $qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')"; + if(pg_query($this->conn, $qry)) + return true; + else + { + $this->errormsg = 'Fehler beim Speichern des Log-Eintrages'; + return false; + }*/ + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern des Datensatzes'; + return false; + } + } +} +?> \ No newline at end of file