diff --git a/cis/private/profile/freebusy.php b/cis/private/profile/freebusy.php new file mode 100755 index 000000000..170822d05 --- /dev/null +++ b/cis/private/profile/freebusy.php @@ -0,0 +1,243 @@ + and + */ +/* + * GUI fuer die FreeBusy Verwaltung + * + * Mit diesem Tool koennen FreeBusy URLs aus verschiedenen Quellen zu einer + * FreeBusy URL zusammengefasst werden + */ +require_once('../../../config/cis.config.inc.php'); +require_once('../../../include/basis_db.class.php'); +require_once('../../../include/functions.inc.php'); +require_once('../../../include/freebusy.class.php'); +require_once('../../../include/phrasen.class.php'); + +if (!$db = new basis_db()) + die('Fehler beim Oeffnen der Datenbankverbindung'); + +$user=get_uid(); +$sprache = getSprache(); +$p = new phrasen($sprache); + +$action = (isset($_REQUEST['action'])?$_REQUEST['action']:''); +$id = (isset($_REQUEST['id'])?$_REQUEST['id']:''); + +echo ' + + + + + + + '.$p->t('freebusy/titel').' + + + + + +

'.$p->t('freebusy/titel').'

'; + +echo $p->t('freebusy/beschreibungstext1').'
'; +echo '
'.$p->t('freebusy/PfadZuFreebusyUrl').' '.APP_ROOT.'cis/public/freebusy.php/'.$user; + +echo '

'; +if($action=='delete') +{ + //Loeschen von Eintraegen + $fb = new freebusy(); + if($fb->load($id)) + { + //Nur Loeschen wenn es der eigene Eintrag ist + if($fb->uid==$user) + { + if(!$fb->delete($id)) + echo ''.$p->t('global/fehlerBeimLoeschenDesEintrags').''; + else + echo ''.$p->t('global/eintragWurdeGeloescht').''; + } + else + { + die($p->t('global/keineBerechtigungZumAendernDesDatensatzes')); + } + } + else + echo ''.$p->t('global/fehlerBeimLadenDesDatensatzes').''; +} +elseif($action=='save') +{ + //Speichern von Eintraegen + + $id = (isset($_POST['id'])?$_POST['id']:''); + $aktiv = isset($_POST['aktiv']); + + if(isset($_POST['bezeichnung'])) + $bezeichnung = $_POST['bezeichnung']; + else + die($p->t('global/fehlerBeiDerParameteruebergabe')); + + if(isset($_POST['typ'])) + $typ = $_POST['typ']; + else + die($p->t('global/fehlerBeiDerParameteruebergabe')); + + if(isset($_POST['url'])) + $url = $_POST['url']; + else + die($p->t('global/fehlerBeiDerParameteruebergabe')); + + $fb = new freebusy(); + if($id!='') + { + if(!$fb->load($id)) + die($p->t('global/fehleraufgetreten')); + if($fb->uid!=$user) + die($p->t('global/keineBerechtigungZumAendernDesDatensatzes')); + + + $fb->new=false; + } + else + { + $fb->new=true; + $fb->insertamum = date('Y-m-d H:i:s'); + $fb->insertvon = $user; + $fb->uid = $user; + } + + $fb->updateamum = date('Y-m-d H:i:s'); + $fb->updatevon = $user; + $fb->bezeichnung = $bezeichnung; + $fb->url = $url; + $fb->freebusytyp_kurzbz = $typ; + $fb->aktiv = $aktiv; + + if($fb->save()) + echo ''.$p->t('global/erfolgreichgespeichert').''; + else + echo ''.$p->t('global/fehleraufgetreten').''; + +} + +//Tabelle mit den vorhandenen Eintraegen anzeigen +$fb = new freebusy(); +$fb->getFreeBusy($user); + +echo ' + + + + + + + + + + '; + + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + +foreach($fb->result as $row) +{ + $typ = new freebusy(); + $typ->loadTyp($row->freebusytyp_kurzbz); + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; +} +echo ' +
'.$p->t('global/bezeichnung').''.$p->t('freebusy/typ').''.$p->t('freebusy/url').''.$p->t('freebusy/aktiv').''.$p->t('global/aktion').'
'.$p->t('freebusy/LVPlanBezeichnung').''.$p->t('freebusy/LVPlanTyp').''.$p->t('global/ja').'
'.$db->convert_html_chars($row->bezeichnung).''.$db->convert_html_chars($typ->bezeichnung).''.$db->convert_html_chars($row->url).''.($row->aktiv?$p->t('global/ja'):$p->t('global/nein')).''.$p->t('global/bearbeiten').''.$p->t('global/löschen').'
'; +echo ''.$p->t('freebusy/neuerEintrag').''; + +//Formular zum Anlegen und Editieren anzeigen +if($action=='edit' || $action=='neu') +{ + $fb = new freebusy(); + + if($action=='neu') + { + $new = true; + echo '

'.$p->t('global/neu').'

'; + } + else + { + $new=false; + echo '

'.$p->t('global/editieren').'

'; + if(!$fb->load($id)) + die($p->t('global/fehlerBeimLadenDesDatensatzes')); + } + + echo '
'; + echo ''; + echo ' + + + + + + + + + + + + + +
'.$p->t('global/bezeichnung').''.$p->t('freebusy/typ').''.$p->t('freebusy/url').''.$p->t('freebusy/aktiv').'
+ + aktiv?'checked="checked"':'').' />
'; + echo '
'; +} +?> + + \ No newline at end of file diff --git a/cis/private/profile/index.php b/cis/private/profile/index.php index 210426af0..7bb579bec 100644 --- a/cis/private/profile/index.php +++ b/cis/private/profile/index.php @@ -281,7 +281,8 @@ $nr_mg=$db->db_num_rows($erg_mg); { echo ' '.$p->t('profil/zeitwuensche').'
- '.$p->t('lvaliste/lehrveranstaltungen').''; + '.$p->t('lvaliste/lehrveranstaltungen').'
+ '.$p->t('freebusy/titel').''; } } diff --git a/cis/public/freebusy.php b/cis/public/freebusy.php index e559009a4..2e2d2484b 100755 --- a/cis/public/freebusy.php +++ b/cis/public/freebusy.php @@ -53,25 +53,46 @@ $ical = new ical(); foreach($freebusy->result as $row) { - - $fp = fopen($row->url,'r'); - if (!$fp) + if($row->aktiv) { - echo "$errstr ($errno)
\n"; - } - else - { - $doc = ''; - while (!feof($fp)) - { - $line = fgets($fp); - $doc.=$line; - } - fclose($fp); - - $ical->importFreeBusy($doc, $row->freebusytyp_kurzbz); + $fp = fopen($row->url,'r'); + if (!$fp) + { + echo "$errstr ($errno)
\n"; + } + else + { + $doc = ''; + while (!feof($fp)) + { + $line = fgets($fp); + $doc.=$line; + } + fclose($fp); + + $ical->importFreeBusy($doc, $row->freebusytyp_kurzbz); + } } } + +//Pers. LVplan +$fp = fopen(APP_ROOT.'cis/public/freebusy_lvplan.php/'.$uid,'r'); +if (!$fp) +{ + echo "$errstr ($errno)
\n"; +} +else +{ + $doc = ''; + while (!feof($fp)) + { + $line = fgets($fp); + $doc.=$line; + } + fclose($fp); + + $ical->importFreeBusy($doc, $row->freebusytyp_kurzbz); +} echo $ical->getFreeBusy(); echo "\nEND:VCALENDAR"; ?> \ No newline at end of file diff --git a/include/freebusy.class.php b/include/freebusy.class.php index 27e5146d0..baa8f10e9 100755 --- a/include/freebusy.class.php +++ b/include/freebusy.class.php @@ -32,7 +32,7 @@ class freebusy extends basis_db public $uid; public $freebusytyp_kurzbz; public $url; - public $aktiv; + public $aktiv=true; public $bezeichnung; public $insertamum; public $insertvon; @@ -68,7 +68,7 @@ class freebusy extends basis_db } //Daten aus der Datenbank lesen - $qry = "SELECT * FROM campus.tbl_freebusy WHERE freebusy_id='".addslashes($freebusy_id)."'"; + $qry = "SELECT * FROM campus.tbl_freebusy WHERE freebusy_id=".$this->db_add_param($freebusy_id,FHC_INTEGER); if(!$this->db_query($qry)) { @@ -82,7 +82,7 @@ class freebusy extends basis_db $this->uid = $row->uid; $this->freebusytyp_kurzbz = $row->freebusytyp_kurzbz; $this->url = $row->url; - $this->aktiv = ($row->aktiv=='t'?true:false); + $this->aktiv = $this->db_parse_bool($row->aktiv); $this->bezeichnung = $row->bezeichnung; $this->insertamum = $row->insertamum; $this->insertvon = $row->insertvon; @@ -105,7 +105,7 @@ class freebusy extends basis_db */ public function getFreeBusy($uid) { - $qry = "SELECT * FROM campus.tbl_freebusy WHERE uid='".addslashes($uid)."' ORDER BY freebusy_id"; + $qry = "SELECT * FROM campus.tbl_freebusy WHERE uid=".$this->db_add_param($uid)." ORDER BY freebusy_id"; if($result = $this->db_query($qry)) { @@ -117,7 +117,7 @@ class freebusy extends basis_db $obj->uid = $row->uid; $obj->freebusytyp_kurzbz = $row->freebusytyp_kurzbz; $obj->url = $row->url; - $obj->aktiv = ($row->aktiv=='t'?true:false); + $obj->aktiv = $this->db_parse_bool($row->aktiv); $obj->bezeichnung = $row->bezeichnung; $obj->insertamum = $row->insertamum; $obj->insertvon = $row->insertvon; @@ -135,6 +135,37 @@ class freebusy extends basis_db } } + /** + * Laedt einen Freebusytyp + * + * @param $freebusytyp_kurzbz + * @return boolean + */ + public function loadTyp($freebusytyp_kurzbz) + { + $qry = "SELECT * FROM campus.tbl_freebusytyp WHERE freebusytyp_kurzbz=".$this->db_add_param($freebusytyp_kurzbz); + + if($result = $this->db_query($qry)) + { + if($row = $this->db_fetch_object($result)) + { + $this->freebusytyp_kurzbz = $row->freebusytyp_kurzbz; + $this->bezeichnung = $row->bezeichnung; + $this->beschreibung = $row->beschreibung; + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } /** * Laedt die FreeBusyTypen * @@ -149,13 +180,13 @@ class freebusy extends basis_db { $obj = new freebusy(); - $obj->freebusytyp_kurbz = $row->freebusytyp_kurzbz; + $obj->freebusytyp_kurzbz = $row->freebusytyp_kurzbz; $obj->bezeichnung = $row->bezeichnung; $obj->beschreibung = $row->beschreibung; $this->result[] = $obj; } - return false; + return true; } else { @@ -163,5 +194,102 @@ class freebusy extends basis_db return false; } } + + /** + * Entfernt einen Eintrag aus der Datenbank + * + * @param $freebusy_id + * @return boolean + */ + public function delete($freebusy_id) + { + $qry = "DELETE FROM campus.tbl_freebusy WHERE freebusy_id=".$this->db_add_param($freebusy_id, FHC_INTEGER, false); + + if($this->db_query($qry)) + return true; + else + { + $this->errormsg = 'Fehler beim Löschen des Eintrages'; + return false; + } + } + + /** + * Speichert die Daten die in die Datenbank + * + * @param $new boolean + * @return boolean + */ + public function save($new=null) + { + if(is_null($new)) + $new = $this->new; + + if($new) + { + $qry = 'BEGIN; INSERT INTO campus.tbl_freebusy(uid, freebusytyp_kurzbz, url, aktiv, bezeichnung, + insertamum, insertvon, updateamum, updatevon) VALUES('. + $this->db_add_param($this->uid).','. + $this->db_add_param($this->freebusytyp_kurzbz).','. + $this->db_add_param($this->url).','. + $this->db_add_param($this->aktiv,FHC_BOOLEAN).','. + $this->db_add_param($this->bezeichnung).','. + $this->db_add_param($this->insertamum).','. + $this->db_add_param($this->insertvon).','. + $this->db_add_param($this->updateamum).','. + $this->db_add_param($this->updatevon).');'; + } + else + { + $qry = 'UPDATE campus.tbl_freebusy SET '. + ' uid='.$this->db_add_param($this->uid).','. + ' freebusytyp_kurzbz='.$this->db_add_param($this->freebusytyp_kurzbz).','. + ' url='.$this->db_add_param($this->url).','. + ' aktiv='.$this->db_add_param($this->aktiv, FHC_BOOLEAN).','. + ' bezeichnung='.$this->db_add_param($this->bezeichnung).','. + ' updateamum='.$this->db_add_param($this->updateamum).','. + ' updatevon='.$this->db_add_param($this->updatevon).' '. + ' WHERE freebusy_id='.$this->db_add_param($this->freebusy_id, FHC_INTEGER, false); + } + + if($this->db_query($qry)) + { + if($new) + { + $qry = "SELECT currval('campus.seq_freebusy_freebusy_id') as id"; + if($result = $this->db_query($qry)) + { + if($row = $this->db_fetch_object($result)) + { + $this->freebusy_id = $row->id; + $this->db_query('COMMIT;'); + return true; + } + else + { + $this->errormsg = 'Fehler beim Auslesen der Sequence'; + $this->db_query('ROLLBACK'); + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Auslesen der Sequence'; + $this->db_query('ROLLBACK'); + return false; + } + } + else + { + return true; + } + } + else + { + $this->errormsg = 'Fehler beim Speichern der Daten'; + return false; + } + } + } ?> \ No newline at end of file diff --git a/locale/de-AT/freebusy.php b/locale/de-AT/freebusy.php new file mode 100755 index 000000000..9c9ee3d40 --- /dev/null +++ b/locale/de-AT/freebusy.php @@ -0,0 +1,11 @@ +phrasen['freebusy/titel']='FreeBusy Verwaltung'; +$this->phrasen['freebusy/typ']='Typ'; +$this->phrasen['freebusy/url']='URL'; +$this->phrasen['freebusy/aktiv']='Aktiv'; +$this->phrasen['freebusy/PfadZuFreebusyUrl']='Ihre Freebusy URL ist unter folgendem Link erreichbar:'; +$this->phrasen['freebusy/LVPlanBezeichnung']='Persönlicher LVPlan'; +$this->phrasen['freebusy/LVPlanTyp']='LVPlan'; +$this->phrasen['freebusy/neuerEintrag']='Neuen Eintrag hinzufügen'; +$this->phrasen['freebusy/beschreibungstext1']='Auf dieser Seite können Sie verschiedene externe FreeBusy Informationen zu einer FreeBusy URL zusammenfassen.'; +?>