diff --git a/cms/admin_dms.php b/cms/admin_dms.php new file mode 100755 index 000000000..48792a192 --- /dev/null +++ b/cms/admin_dms.php @@ -0,0 +1,453 @@ + + * + */ +require_once('../config/cis.config.inc.php'); +require_once('../include/functions.inc.php'); +require_once('../include/dms.class.php'); +require_once('../include/gruppe.class.php'); +require_once('../include/benutzerberechtigung.class.php'); + + +$user = get_uid(); +$rechte = new benutzerberechtigung(); +$rechte->getBerechtigungen($user); +if(!$rechte->isberechtigt('basis/dms',null, 'suid', null)) + die('Sie haben keine Berechtigung diese Seite zu sehen.'); + +$kategorie_kurzbz = isset($_REQUEST['kategorie_kurzbz'])?$_REQUEST['kategorie_kurzbz']:''; + +$method = isset($_REQUEST['method'])?$_REQUEST['method']:''; +?> + + + + Admin Document Management System + + + + + + + + + + + + +kategorie_kurzbz = $_REQUEST['kategorie_kurzbz']; + $dms->gruppe_kurzbz = $_POST['gruppe_kurzbz']; + $dms->insertamum = date('Y-m-d H:i:s'); + $dms->insertvon = $user; + + if(!$dms->saveGruppeKategorie()) + echo $dms->errormsg; + else + echo "Gruppe erfolgreich zugeteilt"; + } + else + { + echo "Keine gültige Kategorie übergeben"; + } + } + else + { + $kategorieSave = new dms(); + if($_POST['kategorie_kurzbz'] != '') + { + // wenn keine auswahl getroffen wurde + $kategorie_auswahl = (($_POST['kategorie_parent']=='auswahl')?null:$_POST['kategorie_parent']); + + if($kategorieSave->loadKategorie($_POST['kategorie_kurzbz'])) + { + // Update + $kategorieSave->bezeichnung = $_POST['kategorie_bezeichnung']; + $kategorieSave->beschreibung =$_POST['kategorie_beschreibung']; + $kategorieSave->parent_kategorie_kurzbz = $kategorie_auswahl; + $kategorieSave->new=false; + if(!$kategorieSave->saveKategorie()) + exit($kategorieSave->errormsg); + else + echo"Erfolgreich gespeichert"; + + } + else + { + // Neu anlegen + $kategorieSave->kategorie_kurzbz = $_POST['kategorie_kurzbz']; + $kategorieSave->bezeichnung = $_POST['kategorie_bezeichnung']; + $kategorieSave->beschreibung =$_POST['kategorie_beschreibung']; + $kategorieSave->parent_kategorie_kurzbz = $kategorie_auswahl; + $kategorieSave->new=true; + if(!$kategorieSave->saveKategorie()) + exit($kategorieSave->errormsg); + else + echo"Erfolgreich gespeichert"; + } + } + else + echo "Kategorie_kurzbz darf nicht null sein."; + } +} + +// Löscht eine Kategorie +if(isset($_REQUEST['delete'])) +{ + + if($method=='gruppe') + { + $dms = new dms(); + if(!$dms->deleteGruppe($_REQUEST['kategorie_kurzbz'], $_REQUEST['gruppe_kurzbz'])) + echo $dms->errormsg; + else + echo "Gruppe erfolgreich gelöscht"; + + } + else + { + if(isset($_REQUEST['kategorie_kurzbz'])) + { + $dms = new dms(); + if(!$dms->deleteKategorie($_REQUEST['kategorie_kurzbz'])) + echo $dms->errormsg; + else + echo "Erfolgreich gelöscht"; + } + else + echo "keine Kategorie übergeben"; + + $kategorie_kurzbz =''; + } +} + //Kategorien anzeigen + $dms = new dms(); + $dms->getKategorie(); + +echo' + + + + +
+

Kategorie:

+ + +
+ + + + + '; + drawKategorieMenue($dms->result); + echo ' + + + + +
  
 
Neue Kategorie anlegen
'; + echo ''; + echo '
+ Eigenschaften | Gruppen

'; + + switch($method) + { + case 'gruppe': + print_rights($kategorie_kurzbz); + break; + + default: + drawKategorie($kategorie_kurzbz); + break; + } + + + echo ' +
'; + + +function drawKategorie($kategorie_kurzbz) +{ + $kategorie = new dms(); + $kategorie_beschreibung = ''; + $kategorie_bezeichnung = ''; + $disabled=''; + + if($kategorie->loadKategorie($kategorie_kurzbz)) + { + // Formular zum Editieren bestehender Kategorien + $kategorie_bezeichnung = $kategorie->bezeichnung; + $kategorie_beschreibung = $kategorie->beschreibung; + $disabled = 'disabled="true"'; + } + + $allKategorien = new dms(); + $allKategorien->getAllKategories(); + //var_dump($allKategorien->result); + echo '
+ + + + + + + + + + + + + + + + + + +
Kategorie_kurzbz:
Kategorie Bezeichnung:
Kategorie Beschreibung:
Hängt unter: +
 
'; +} + + +/** + * Erstellt den Karteireiter zum Verwalten der Zugriffsrechte auf einen Content + * Zu einem Content können Gruppen zugeteilt werden. Diese haben dann zugriff auf den Content + * Wenn keine Gruppen zugeordnet sind, können alle Personen auf den Content zugreifen + */ +function print_rights($kategorie_kurzbz) +{ + $dms = new dms(); + $dms->loadGruppenForKategorie($kategorie_kurzbz); + + if(count($dms->result)>0) + { + echo 'Die Mitglieder der folgenden Gruppen dürfen die Seite ansehen:

'; + echo ' + '; + echo ' + + + + + + + + '; + foreach($dms->result as $row) + { + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + } + echo '
Gruppe KurzbzBezeichnung
',$row->gruppe_kurzbz,'',$row->bezeichnung,' + + + +
'; + } + else + echo 'Diese Seite darf von allen angezeigt werden!

'; + + $gruppe = new gruppe(); + $gruppe->getgruppe(null, null, null, null, true); + + echo '
'; + echo 'Gruppe '; + echo ''; + echo '
'; +} + + +/** + * Zeichnet das Kategorie Menu + * + * @param $rows DMS Result Object + */ +function drawKategorieMenue($rows) +{ + global $kategorie_kurzbz; + + //echo ''; +} +?> \ No newline at end of file diff --git a/include/dms.class.php b/include/dms.class.php index 679a10326..112abc1cf 100644 --- a/include/dms.class.php +++ b/include/dms.class.php @@ -34,6 +34,8 @@ class dms extends basis_db public $oe_kurzbz; public $dokument_kurzbz; public $kategorie_kurzbz; + public $parent_kategorie_kurzbz; + public $gruppe_kurzbz; public $filename; public $mimetype; public $name; @@ -228,6 +230,250 @@ class dms extends basis_db return false; } } + + /** + * + * Löscht die Kategorie der übergebenen kurzbz + * Überprüft ob noch dms Einträge an zu löschender Kategorie hängen + * @param $kategorie_kurzbz + */ + public function deleteKategorie($kategorie_kurzbz) + { + $qry_anzahl = "SELECT * FROM campus.tbl_dms WHERE kategorie_kurzbz=".$this->db_add_param($kategorie_kurzbz).";"; + + if($result = $this->db_query($qry_anzahl)) + { + // löschen nur möglich wenn keine DMS-Einträge mehr auf Kategorie hängen + if($this->db_num_rows($result) == 0 ) + { + $qry ="DELETE FROM campus.tbl_dms_kategorie WHERE kategorie_kurzbz =".$this->db_add_param($kategorie_kurzbz).";"; + if($this->db_query($qry)) + { + return true; + } + else + { + $this->errormsg = 'Fehler beim Löschen der Daten'."\n"; + return false; + } + } + else + { + $this->errormsg = "Löschen Fehlgeschlagen! Es hängen noch DMS Einträge an dieser Kategorie"; + return false; + } + } + $this->errormsg ="Fehler beim Löschen der Daten"; + return false; + + + } + + /** + * + * Lädt alle Gruppen der übergebenen Kategorie + * @param $kategorie_kurzbz + */ + public function loadGruppenForKategorie($kategorie_kurzbz) + { + $qry = "SELECT + campus.tbl_dms_kategorie_gruppe.kategorie_kurzbz, + campus.tbl_dms_kategorie_gruppe.insertamum, + campus.tbl_dms_kategorie_gruppe.insertvon, + campus.tbl_dms_kategorie_gruppe.gruppe_kurzbz, + public.tbl_gruppe.bezeichnung + FROM + campus.tbl_dms_kategorie_gruppe + JOIN public.tbl_gruppe USING(gruppe_kurzbz) + WHERE + kategorie_kurzbz=".$this->db_add_param($kategorie_kurzbz)." + ORDER BY gruppe_kurzbz"; + + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + $obj = new dms(); + + $obj->gruppe_kurzbz = $row->gruppe_kurzbz; + $obj->insertamum = $row->insertamum; + $obj->insertvon = $row->insertvon; + $obj->bezeichnung = $row->bezeichnung; + + $this->result[] = $obj; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + + /** + * Speichert den aktuellen Datensatz in die Datenbank + * Wenn $neu auf true gesetzt ist wird ein neuer Datensatz angelegt + * andernfalls wird der Datensatz mit der kurzbz $kategorie_kurzbz aktualisiert + * @return true wenn ok, false im Fehlerfall + */ + public function saveGruppeKategorie() + { + + if($this->isGruppeZugeteilt($this->kategorie_kurzbz, $this->gruppe_kurzbz)) + { + $this->errormsg = 'Diese Gruppe ist bereits zugeordnet'; + return false; + } + + //Neuen Datensatz einfuegen + $qry='INSERT INTO campus.tbl_dms_kategorie_gruppe (kategorie_kurzbz, gruppe_kurzbz, insertamum, insertvon) VALUES('. + $this->db_add_param($this->kategorie_kurzbz).', '. + $this->db_add_param($this->gruppe_kurzbz).', '. + $this->db_add_param($this->insertamum).', '. + $this->db_add_param($this->insertvon).');'; + + if(!$this->db_query($qry)) + { + $this->errormsg = 'Fehler beim Zuordner der Gruppe'; + return false; + } + return true; + + } + + public function deleteGruppe($kategorie_kurzbz, $gruppe_kurzbz) + { + $qry = "DELETE FROM campus.tbl_dms_kategorie_gruppe where kategorie_kurzbz =".$this->db_add_param($kategorie_kurzbz)." AND gruppe_kurzbz =".$this->db_add_param($gruppe_kurzbz).";"; + + if(!$this->db_query($qry)) + { + $this->errormsg ="Löschen der Gruppe fehlgeschlagen"; + return false; + } + return true; + } + + + /** + * Prueft ob eine Gruppenzuteilung vorhanden ist + * + * @param kategorie_kurzbz + * @param $gruppe_kurzbz + * @return boolean + */ + public function isGruppeZugeteilt($kategorie_kurzbz, $gruppe_kurzbz) + { + $qry = "SELECT 1 FROM campus.tbl_dms_kategorie_gruppe WHERE kategorie_kurzbz='".addslashes($kategorie_kurzbz)."' AND gruppe_kurzbz='".addslashes($gruppe_kurzbz)."';"; + + if($result = $this->db_query($qry)) + { + if($this->db_num_rows($result)>0) + return true; + else + return false; + } + else + { + $this->errormsg = 'Fehler beim Laden der Zuteilung'; + return false; + } + } + + + /** + * Speichert den aktuellen Datensatz in die Datenbank + * Wenn $neu auf true gesetzt ist wird ein neuer Datensatz angelegt + * andernfalls wird der Datensatz mit der kurzbz $kategorie_kurzbz aktualisiert + * @return true wenn ok, false im Fehlerfall + */ + public function saveKategorie() + { + if($this->new) + { + //Neuen Datensatz einfuegen + $qry='INSERT INTO campus.tbl_dms_kategorie (kategorie_kurzbz, bezeichnung, beschreibung, parent_kategorie_kurzbz) VALUES('. + $this->db_add_param($this->kategorie_kurzbz).', '. + $this->db_add_param($this->bezeichnung).', '. + $this->db_add_param($this->beschreibung).', '. + $this->db_add_param($this->parent_kategorie_kurzbz).');'; + } + else + { + $qry='UPDATE campus.tbl_dms_kategorie SET'. + ' bezeichnung='.$this->db_add_param($this->bezeichnung).', '. + ' beschreibung='.$this->db_add_param($this->beschreibung).', '. + ' parent_kategorie_kurzbz='.$this->db_add_param($this->parent_kategorie_kurzbz).' '. + 'WHERE kategorie_kurzbz='.$this->db_add_param($this->kategorie_kurzbz).';'; + } + + if(!$this->db_query($qry)) + { + $this->errormsg = 'Fehler beim Speichern der Kategorie'; + return false; + } + return true; + + } + + /** + * + * Laedt Kategorie anhand von kurzbz + * @param $kategorie_kurzbz + */ + public function loadKategorie($kategorie_kurzbz) + { + $qry = "SELECT * FROM campus.tbl_dms_kategorie WHERE kategorie_kurzbz = ".$this->db_add_param($kategorie_kurzbz).";"; + + if($result = $this->db_query($qry)) + { + // wenn es keine kategorie gibt -> gib false zurück + if($this->db_num_rows() != 0 ) + { + if($row = $this->db_fetch_object($result)) + { + $this->kategorie_kurzbz = $row->kategorie_kurzbz; + $this->bezeichnung = $row->bezeichnung; + $this->beschreibung = $row->beschreibung; + $this->parent_kategorie_kurzbz = $row->parent_kategorie_kurzbz; + } + return true; + } + else + return false; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * + * Liefert alle Kategorien zurück + */ + public function getAllKategories() + { + $qry ="SELECT * FROM campus.tbl_dms_kategorie ORDER BY bezeichnung;"; + + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + $obj = new dms(); + $obj->kategorie_kurzbz = $row->kategorie_kurzbz; + $obj->bezeichnung = $row->bezeichnung; + $obj->beschreibung = $row->beschreibung; + $obj->parent_kategorie_kurzbz = $row->parent_kategorie_kurzbz; + + $this->result[]= $obj; + } + } + else + return false; + } /** * Laedt die Kategorien