DMS-Changes

New Attributes:
- cis_suche: Defines if file is searchable via CIS
- schlagworte: Semikolon-Separated Text for CIS-Search
- kategorie_oe_kurzbz: Organisational Unit defines rights for viewing, uploading and changing documents in DMS
- berechtigung_kurzbz: Controls visibility for categories in DMS

Access to categories can now be restricted with oe_kurzbz and rights. If an Organisational Unit is added to a category, only users with the according rights can access, upload and change documents in this category.

If a right is saved to a category it is only accessible for users with this right. Use the right to restrict access to sensible DMS-Categories (e.g. FAS-Documents)

!! Downloading of documents via dms.php is still controlled only with the group assigned to the category !!

New right "basis/dmsAdmin" needed for accessing DMS-Administration (Editing categories)
This commit is contained in:
Manfred Kindl
2018-03-28 16:57:56 +02:00
parent f52b7772ff
commit 8f12394f0a
3 changed files with 1833 additions and 1266 deletions
+80 -15
View File
@@ -23,13 +23,15 @@ require_once('../include/functions.inc.php');
require_once('../include/dms.class.php');
require_once('../include/gruppe.class.php');
require_once('../include/benutzerberechtigung.class.php');
require_once('../include/berechtigung.class.php');
require_once('../include/organisationseinheit.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.');
if(!$rechte->isberechtigt('basis/dmsAdmin',null, 'suid', null))
die($rechte->errormsg);
$kategorie_kurzbz = isset($_REQUEST['kategorie_kurzbz'])?$_REQUEST['kategorie_kurzbz']:'';
@@ -113,7 +115,6 @@ $method = isset($_REQUEST['method'])?$_REQUEST['method']:'';
</head>
<body>
<?php
if (isset($_REQUEST['save']))
{
if ($method == 'gruppe')
@@ -150,13 +151,14 @@ if(isset($_REQUEST['save']))
// Update
$kategorieSave->bezeichnung = $_POST['kategorie_bezeichnung'];
$kategorieSave->beschreibung = $_POST['kategorie_beschreibung'];
$kategorieSave->berechtigung_kurzbz = $_POST['berechtigung_kurzbz'];
$kategorieSave->kategorie_oe_kurzbz = $_POST['oe_kurzbz'];
$kategorieSave->parent_kategorie_kurzbz = $kategorie_auswahl;
$kategorieSave->new = false;
if (! $kategorieSave->saveKategorie())
echo '<span class="error">' . $kategorieSave->errormsg . '</span>';
else
echo '<span class="ok">Erfolgreich gespeichert</span>';
}
else
{
@@ -164,6 +166,8 @@ if(isset($_REQUEST['save']))
$kategorieSave->kategorie_kurzbz = $_POST['kategorie_kurzbz'];
$kategorieSave->bezeichnung = $_POST['kategorie_bezeichnung'];
$kategorieSave->beschreibung = $_POST['kategorie_beschreibung'];
$kategorieSave->berechtigung_kurzbz = $_POST['berechtigung_kurzbz'];
$kategorieSave->kategorie_oe_kurzbz = $_POST['oe_kurzbz'];
$kategorieSave->parent_kategorie_kurzbz = $kategorie_auswahl;
$kategorieSave->new = true;
if (! $kategorieSave->saveKategorie())
@@ -188,7 +192,6 @@ if(isset($_REQUEST['delete']))
echo '<span class="error">' . $dms->errormsg . '</span>';
else
echo '<span class="ok">Gruppe erfolgreich gelöscht!</span>';
}
else
{
@@ -273,19 +276,17 @@ echo' <table cellspacing=0 border="0">
break;
}
echo '
</td>
</tr>
</table>';
function drawKategorie($kategorie_kurzbz)
{
$kategorie = new dms();
$kategorie_beschreibung = '';
$kategorie_bezeichnung = '';
$disabled = '';
$kategorie_berechtigung = '';
if ($kategorie->loadKategorie($kategorie_kurzbz))
{
@@ -293,10 +294,18 @@ function drawKategorie($kategorie_kurzbz)
$kategorie_bezeichnung = $kategorie->bezeichnung;
$kategorie_beschreibung = $kategorie->beschreibung;
$disabled = 'disabled="true"';
$kategorie_berechtigung = $kategorie->berechtigung_kurzbz;
$kategorie_oe_kurzbz = $kategorie->kategorie_oe_kurzbz;
}
$allKategorien = new dms();
$allKategorien->getAllKategories();
$berechtigungen = new berechtigung();
$berechtigungen->getBerechtigungen();
$organisationseinheiten = new organisationseinheit();
$organisationseinheiten->getAll(true, null, 'organisationseinheittyp_kurzbz, bezeichnung');
$oe_typ = '';
// var_dump($allKategorien->result);
echo ' <form action="' . $_SERVER['PHP_SELF'] . '?save" method="POST" name="form_kategorie">
<table border="0">
@@ -307,7 +316,7 @@ function drawKategorie($kategorie_kurzbz)
<td>Kategorie Bezeichnung: </td><td><input type="text" name="kategorie_bezeichnung" value="' . $kategorie_bezeichnung . '"></td>
</tr>
<tr>
<td>Kategorie Beschreibung: </td><td><textarea name="kategorie_beschreibung" cols="30" rows="3">'.$kategorie_beschreibung.'</textarea></td>
<td>Kategorie Beschreibung: </td><td><textarea name="kategorie_beschreibung" cols="30" rows="3" style="font-size: 9pt;">' . $kategorie_beschreibung . '</textarea></td>
</tr>
<tr>
<td>Hängt unter: </td><td><select name="kategorie_parent">
@@ -320,7 +329,42 @@ function drawKategorie($kategorie_kurzbz)
if ($kategorienResult->kategorie_kurzbz != $kategorie->kategorie_kurzbz)
echo '<option ' . $selected . ' value="' . $kategorienResult->kategorie_kurzbz . '">' . $kategorienResult->bezeichnung . ' [' . $kategorienResult->kategorie_kurzbz . ']</option>';
}
echo ' </select>
</td>
</tr>
<tr>
<td>Organisationseinheit: <br>(Upload, Ansicht, Änderungen)</td><td><select name="oe_kurzbz">
<option value="">-- Bitte Auswählen --</option>';
foreach ($organisationseinheiten->result as $oe)
{
if ($oe_typ != $oe->organisationseinheittyp_kurzbz || $oe_typ=='')
{
if ($oe_typ!='')
echo '</optgroup>';
echo '<optgroup label="'.$oe->organisationseinheittyp_kurzbz.'">';
}
$selected = '';
if ($oe->oe_kurzbz == $kategorie_oe_kurzbz)
$selected = 'selected';
echo '<option ' . $selected . ' value="' . $oe->oe_kurzbz . '">'.$oe->organisationseinheittyp_kurzbz.' ' . $oe->bezeichnung . '</option>';
$oe_typ = $oe->organisationseinheittyp_kurzbz;
}
echo ' </select>
</td>
</tr>
<tr>
<td>Berechtigung: <br>(Zugriff auf Kategorie)</td><td><select name="berechtigung_kurzbz">
<option value="">-- Bitte Auswählen --</option>';
foreach ($berechtigungen->result as $recht)
{
$selected = '';
if ($recht->berechtigung_kurzbz == $kategorie_berechtigung)
$selected = 'selected';
echo '<option ' . $selected . ' value="' . $recht->berechtigung_kurzbz . '">' . $recht->berechtigung_kurzbz . '</option>';
}
echo ' </select>
</td>
</tr>
@@ -332,17 +376,17 @@ function drawKategorie($kategorie_kurzbz)
</table></form>';
}
/**
* 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
* 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);
$gruppen_array = array();
if (count($dms->result) > 0)
{
echo 'Die Mitglieder der folgenden Gruppen dürfen die Seite ansehen:<br><br>';
@@ -368,6 +412,7 @@ function print_rights($kategorie_kurzbz)
<tbody>';
foreach ($dms->result as $row)
{
$gruppen_array[] = $row->gruppe_kurzbz;
echo '<tr>';
echo '<td>', $row->gruppe_kurzbz, '</td>';
echo '<td>', $row->bezeichnung, '</td>';
@@ -386,18 +431,39 @@ function print_rights($kategorie_kurzbz)
$gruppe = new gruppe();
$gruppe->getgruppe(null, null, null, null, true);
// Sortieren der Gruppen nach kurzbz
function sortGruppen($a, $b)
{
return strcasecmp($a->gruppe_kurzbz, $b->gruppe_kurzbz);
}
usort($gruppe->result, "sortGruppen");
// function sortDocuments($a, $b)
// {
// $c = $a->anzahl_akten_formal_geprueft - $b->anzahl_akten_formal_geprueft;
// $c .= $a->anzahl_dokumente_akzeptiert - $b->anzahl_dokumente_akzeptiert;
// $c .= $a->anzahl_akten_vorhanden - $b->anzahl_akten_vorhanden;
// $c .= $b->pflicht - $a->pflicht;
// $c .= strcmp(strtolower($a->bezeichnung_mehrsprachig[getSprache()]), strtolower($b->bezeichnung_mehrsprachig[getSprache()]));
// return $c;
// }
// if ($dokumente_abzugeben)
// usort($dokumente_abzugeben, "sortDocuments");
echo '<form action="' . $_SERVER['PHP_SELF'] . '?kategorie_kurzbz=' . $kategorie_kurzbz . '&method=gruppe&save" method="POST">';
echo 'Gruppe <select name="gruppe_kurzbz">';
foreach ($gruppe->result as $row)
{
echo '<option value="'.$row->gruppe_kurzbz.'">'.$row->gruppe_kurzbz.'</option>';
if (in_array($row->gruppe_kurzbz, $gruppen_array))
echo '<option value="' . $row->gruppe_kurzbz . '" disabled="disabled">' . $row->gruppe_kurzbz . ' (' . $row->bezeichnung . ')</option>';
else
echo '<option value="' . $row->gruppe_kurzbz . '">' . $row->gruppe_kurzbz . ' (' . $row->bezeichnung . ')</option>';
}
echo '</select>';
echo '<input type="submit" value="Hinzufügen" name="addgroup">';
echo '</form>';
}
/**
* Zeichnet das Kategorie Menu
*
@@ -453,7 +519,6 @@ function drawKategorieMenue($rows)
<td class="tdwrap"><a id="' . $row->kategorie_kurzbz . '" href="' . $_SERVER['PHP_SELF'] . '?kategorie_kurzbz=' . $row->kategorie_kurzbz . '" class="Item"><img src="../skin/images/menu_item.gif" alt="menu item" width="7" height="9">&nbsp;<span class="' . $class . '">' . $row->bezeichnung . ' </span></a>' . $delete . $locked . '</td>
</tr>';
}
}
// echo '</table>';
// echo '</ul>';
+571 -135
View File
File diff suppressed because it is too large Load Diff
+80 -14
View File
@@ -46,7 +46,10 @@ class dms extends basis_db
public $updateamum;
public $updatevon;
public $kategorie_kurzbz_old;
public $cis_suche = false;
public $schlagworte;
public $kategorie_oe_kurzbz;
public $berechtigung_kurzbz;
public $bezeichnung;
/**
@@ -92,6 +95,8 @@ class dms extends basis_db
$this->insertvon = $row->insertvon;
$this->updateamum = $row->updateamum;
$this->updatevon = $row->updatevon;
$this->cis_suche = $this->db_parse_bool($row->cis_suche);
$this->schlagworte = $row->schlagworte;
return true;
}
@@ -143,7 +148,7 @@ class dms extends basis_db
$qry.="INSERT INTO campus.tbl_dms_version(dms_id, version,
filename, mimetype, name, beschreibung, letzterzugriff, insertamum, insertvon,
updateamum, updatevon) VALUES(".
updateamum, updatevon, cis_suche, schlagworte) VALUES(".
$dms_id.','.
$this->db_add_param($this->version, FHC_INTEGER).','.
$this->db_add_param($this->filename).','.
@@ -154,7 +159,9 @@ class dms extends basis_db
$this->db_add_param($this->insertamum).','.
$this->db_add_param($this->insertvon).','.
$this->db_add_param($this->updateamum).','.
$this->db_add_param($this->updatevon).');';
$this->db_add_param($this->updatevon).','.
$this->db_add_param($this->cis_suche, FHC_BOOLEAN).','.
$this->db_add_param($this->schlagworte).');';
}
else
{
@@ -170,7 +177,9 @@ class dms extends basis_db
" beschreibung=".$this->db_add_param($this->beschreibung).",".
" letzterzugriff=".$this->db_add_param($this->letzterzugriff).",".
" updateamum=".$this->db_add_param($this->updateamum).",".
" updatevon=".$this->db_add_param($this->updatevon).
" updatevon=".$this->db_add_param($this->updatevon).",".
" cis_suche=".$this->db_add_param($this->cis_suche, FHC_BOOLEAN).",".
" schlagworte=".$this->db_add_param($this->schlagworte).
" WHERE dms_id=".$this->db_add_param($this->dms_id,FHC_INTEGER)." AND version=".$this->db_add_param($this->version, FHC_INTEGER).";";
}
@@ -217,6 +226,7 @@ class dms extends basis_db
/**
* Löscht einen DMS Eintrag mit übergebener ID und Version
* Wird die letzte Version eines Eintrages gelöscht, wird automatisch der Eintrag mitgelöscht
*
* @param $dms_id
* @param $version
*/
@@ -262,6 +272,7 @@ class dms extends basis_db
/**
* Löscht einen gesamten DMS Eintrag inklusive aller Versionen und Projekteinträge
*
* @param $dms_id
*/
public function deleteDms($dms_id)
@@ -489,11 +500,13 @@ class dms extends basis_db
if($new)
{
//Neuen Datensatz einfuegen
$qry='INSERT INTO campus.tbl_dms_kategorie (kategorie_kurzbz, bezeichnung, beschreibung, parent_kategorie_kurzbz) VALUES('.
$qry='INSERT INTO campus.tbl_dms_kategorie (kategorie_kurzbz, bezeichnung, beschreibung, parent_kategorie_kurzbz, oe_kurzbz, berechtigung_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).');';
$this->db_add_param($this->parent_kategorie_kurzbz).', '.
$this->db_add_param($this->kategorie_oe_kurzbz).', '.
$this->db_add_param($this->berechtigung_kurzbz).');';
}
else
{
@@ -503,7 +516,9 @@ class dms extends basis_db
' kategorie_kurzbz='.$this->db_add_param($this->kategorie_kurzbz).', '.
' 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).' '.
' parent_kategorie_kurzbz='.$this->db_add_param($this->parent_kategorie_kurzbz).', '.
' oe_kurzbz='.$this->db_add_param($this->kategorie_oe_kurzbz).', '.
' berechtigung_kurzbz='.$this->db_add_param($this->berechtigung_kurzbz).' '.
'WHERE kategorie_kurzbz='.$this->db_add_param($this->kategorie_kurzbz_old).';';
}
@@ -537,6 +552,8 @@ class dms extends basis_db
$this->beschreibung = $row->beschreibung;
$this->parent_kategorie_kurzbz = $row->parent_kategorie_kurzbz;
$this->kategorie_kurzbz_old = $row->kategorie_kurzbz;
$this->kategorie_oe_kurzbz = $row->oe_kurzbz;
$this->berechtigung_kurzbz = $row->berechtigung_kurzbz;
}
return true;
}
@@ -567,6 +584,8 @@ class dms extends basis_db
$obj->bezeichnung = $row->bezeichnung;
$obj->beschreibung = $row->beschreibung;
$obj->parent_kategorie_kurzbz = $row->parent_kategorie_kurzbz;
$obj->kategorie_oe_kurzbz = $row->oe_kurzbz;
$obj->berechtigung_kurzbz = $row->berechtigung_kurzbz;
$this->result[]= $obj;
}
@@ -577,8 +596,7 @@ class dms extends basis_db
/**
* Laedt die Kategorien
* @param $parent_kategorie_kurzbz Wenn die Parent Kategorie übergeben wird, werden nur die direkten
* Unterkategorien geladen
* @param string $parent_kategorie_kurzbz Wenn die Parent Kategorie übergeben wird, werden nur die direkten Unterkategorien geladen
* @return boolean
*/
public function getKategorie($parent_kategorie_kurzbz='')
@@ -600,6 +618,8 @@ class dms extends basis_db
$obj->kategorie_kurzbz = $row->kategorie_kurzbz;
$obj->bezeichnung = $row->bezeichnung;
$obj->beschreibung = $row->beschreibung;
$obj->kategorie_oe_kurzbz = $row->oe_kurzbz;
$obj->berechtigung_kurzbz = $row->berechtigung_kurzbz;
$this->result[] = $obj;
}
@@ -663,6 +683,8 @@ class dms extends basis_db
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->updateamum = $row->updateamum;
$obj->cis_suche = $this->db_parse_bool($row->cis_suche);
$obj->schlagworte = $row->schlagworte;
$this->result[] = $obj;
}
@@ -675,10 +697,35 @@ class dms extends basis_db
}
/**
* Sucht nach Dokumenten
* Zählt die Anzahl an Dokumenten in einer Kategorie
*
* @param $kategorie_kurzbz
*/
public function countDocumentsKategorie($kategorie_kurzbz)
{
$qry = "SELECT count(*) as anzahl FROM campus.tbl_dms WHERE kategorie_kurzbz=".$this->db_add_param($kategorie_kurzbz).";";
if($result = $this->db_query($qry))
{
if($row = $this->db_fetch_object($result))
{
return $row->anzahl;
}
else
return false;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Sucht nach Dokumenten
*
* @param string $suchstring String nach dem gesucht werden soll
*/
public function search($suchstring, $dpp=NULL, $page=NULL)
{
if (!is_null($dpp) && !is_null($page))
@@ -695,12 +742,13 @@ class dms extends basis_db
}
}
$qry = "SELECT * FROM campus.tbl_dms JOIN campus.tbl_dms_version USING(dms_id)
$qry = "SELECT tbl_dms.*, tbl_dms_version.*, tbl_dms_kategorie.berechtigung_kurzbz FROM campus.tbl_dms
JOIN campus.tbl_dms_version USING(dms_id)
JOIN campus.tbl_dms_kategorie USING (kategorie_kurzbz)
WHERE lower(name) like lower('%".$this->db_escape($suchstring)."%')
OR lower(beschreibung) like lower('%".$this->db_escape($suchstring)."%')
OR lower(tbl_dms_version.beschreibung) like lower('%".$this->db_escape($suchstring)."%')
";
if (is_numeric($suchstring))
$qry.= " OR dms_id = ".$this->db_escape($suchstring)."";
@@ -728,6 +776,9 @@ class dms extends basis_db
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->updateamum = $row->updateamum;
$obj->cis_suche = $this->db_parse_bool($row->cis_suche);
$obj->schlagworte = $row->schlagworte;
$obj->berechtigung_kurzbz = $row->berechtigung_kurzbz;
$this->result[] = $obj;
}
@@ -777,6 +828,8 @@ class dms extends basis_db
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->updateamum = $row->updateamum;
$obj->cis_suche = $this->db_parse_bool($row->cis_suche);
$obj->schlagworte = $row->schlagworte;
$this->result[] = $obj;
}
@@ -791,7 +844,7 @@ class dms extends basis_db
/**
*
* lädt alle Versionen zu einer übergebenen ID
* @param $id der zu ladenden Dokumente
* @param integer $id ID der zu ladenden Dokumente
*/
public function getAllVersions($dms_id)
{
@@ -823,6 +876,8 @@ class dms extends basis_db
$obj->insertvon = $row->insertvon;
$obj->updateamum = $row->updateamum;
$obj->version = $row->version;
$obj->cis_suche = $this->db_parse_bool($row->cis_suche);
$obj->schlagworte = $row->schlagworte;
$this->result[] = $obj;
}
@@ -899,6 +954,8 @@ class dms extends basis_db
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->updateamum = $row->updateamum;
$obj->cis_suche = $this->db_parse_bool($row->cis_suche);
$obj->schlagworte = $row->schlagworte;
$this->result[] = $obj;
}
@@ -948,6 +1005,8 @@ class dms extends basis_db
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->updateamum = $row->updateamum;
$obj->cis_suche = $this->db_parse_bool($row->cis_suche);
$obj->schlagworte = $row->schlagworte;
$this->result[] = $obj;
}
@@ -998,6 +1057,8 @@ class dms extends basis_db
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->updateamum = $row->updateamum;
$obj->cis_suche = $this->db_parse_bool($row->cis_suche);
$obj->schlagworte = $row->schlagworte;
$this->result[] = $obj;
}
@@ -1346,6 +1407,8 @@ class dms extends basis_db
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->updateamum = $row->updateamum;
$obj->cis_suche = $this->db_parse_bool($row->cis_suche);
$obj->schlagworte = $row->schlagworte;
$this->result[] = $obj;
}
@@ -1378,6 +1441,9 @@ class dms extends basis_db
$obj->bezeichnung = $row->bezeichnung;
$obj->beschreibung = $row->beschreibung;
$obj->parent_kategorie_kurzbz = $row->parent_kategorie_kurzbz;
$obj->oe_kurzbz = $row->oe_kurzbz;
$obj->berechtigung_kurzbz = $row->berechtigung_kurzbz;
$this->result[] = $obj;
}