diff --git a/include/berechtigung.class.php b/include/berechtigung.class.php
index 684ad4e81..ab224be4d 100644
--- a/include/berechtigung.class.php
+++ b/include/berechtigung.class.php
@@ -312,5 +312,42 @@ class berechtigung extends basis_db
return false;
}
}
+
+ /**
+ * Sucht nach Berechtigungen
+ * @param string $searchItem Suchbegriff
+ * @return boolean
+ */
+ public function searchBerechtigungen($searchItem)
+ {
+ $this->result=array();
+ $qry = 'SELECT * FROM system.tbl_berechtigung WHERE
+ (
+ LOWER(berechtigung_kurzbz) LIKE LOWER(\'%'.$this->db_escape(($searchItem)).'%\')
+ OR
+ LOWER(beschreibung) LIKE LOWER(\'%'.$this->db_escape(($searchItem)).'%\')
+ )';
+
+ $qry .= ' ORDER BY berechtigung_kurzbz';
+
+ if($this->db_query($qry))
+ {
+ while($row = $this->db_fetch_object())
+ {
+ $obj = new berechtigung();
+
+ $obj->berechtigung_kurzbz = $row->berechtigung_kurzbz;
+ $obj->beschreibung = $row->beschreibung;
+
+ $this->result[] = $obj;
+ }
+ return true;
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Laden der Berechtigungen';
+ return false;
+ }
+ }
}
?>
\ No newline at end of file
diff --git a/vilesci/stammdaten/benutzerberechtigung_autocomplete.php b/vilesci/stammdaten/benutzerberechtigung_autocomplete.php
new file mode 100644
index 000000000..07e57809e
--- /dev/null
+++ b/vilesci/stammdaten/benutzerberechtigung_autocomplete.php
@@ -0,0 +1,116 @@
+
+ */
+require_once ('../../config/vilesci.config.inc.php');
+require_once ('../../include/functions.inc.php');
+require_once ('../../include/basis_db.class.php');
+require_once ('../../include/ort.class.php');
+require_once ('../../include/benutzer.class.php');
+require_once ('../../include/studiengang.class.php');
+require_once ('../../include/berechtigung.class.php');
+require_once ('../../include/organisationseinheit.class.php');
+require_once ('../../include/sprache.class.php');
+
+if (! $db = new basis_db())
+ die('Es konnte keine Verbindung zum Server aufgebaut werden.');
+
+$uid = get_uid();
+$sprache = getSprache();
+
+if (isset($_REQUEST['autocomplete']) && $_REQUEST['autocomplete'] == 'benutzer')
+{
+ $search = trim((isset($_REQUEST['term']) ? $_REQUEST['term'] : ''));
+ if (is_null($search) || $search == '')
+ exit();
+
+ $benutzer = new benutzer();
+
+ if ($benutzer->search(array(
+ $search
+ )))
+ {
+ $result_obj = array();
+ foreach ($benutzer->result as $row)
+ {
+ $item['vorname'] = html_entity_decode($row->vorname);
+ $item['nachname'] = html_entity_decode($row->nachname);
+ $item['uid'] = html_entity_decode($row->uid);
+ $result_obj[] = $item;
+ }
+ echo json_encode($result_obj);
+ }
+ exit();
+}
+
+if (isset($_REQUEST['autocomplete']) && $_REQUEST['autocomplete'] == 'berechtigung')
+{
+ $search = trim((isset($_REQUEST['term']) ? $_REQUEST['term'] : ''));
+ if (is_null($search) || $search == '')
+ exit();
+
+ $berechtigung = new berechtigung();
+
+ if ($berechtigung->searchBerechtigungen($search))
+ {
+ $result_obj = array();
+ foreach ($berechtigung->result as $row)
+ {
+ $item['berechtigung_kurzbz'] = html_entity_decode($row->berechtigung_kurzbz);
+ $item['beschreibung'] = html_entity_decode($row->beschreibung);
+ $result_obj[] = $item;
+ }
+ echo json_encode($result_obj);
+ }
+ exit();
+}
+
+if (isset($_REQUEST['autocomplete']) && $_REQUEST['autocomplete'] == 'oe_kurzbz')
+{
+ $search = trim((isset($_REQUEST['term']) ? $_REQUEST['term'] : ''));
+ if (is_null($search) || $search == '')
+ exit();
+
+ $search = array($search);
+ $oe = new organisationseinheit();
+ $oe->search($search);
+
+ $stg = new studiengang();
+ $stg->search($search);
+ foreach($stg->result as $row)
+ {
+ if($row->aktiv===true)
+ $oe->result[] = new organisationseinheit($row->oe_kurzbz);
+ }
+
+ if(is_array($oe->result) && count($oe->result) > 0)
+ {
+ $result_obj = array();
+ foreach($oe->result as $row)
+ {
+ if($row->aktiv==true)
+ {
+ $item['oe_kurzbz'] = html_entity_decode($row->oe_kurzbz);
+ $item['organisationseinheittyp_kurzbz'] = html_entity_decode($row->organisationseinheittyp_kurzbz);
+ $item['bezeichnung'] = html_entity_decode($row->bezeichnung);
+ $result_obj[] = $item;
+ }
+ }
+ echo json_encode($result_obj);
+ }
+ exit();
+}
+
+?>
diff --git a/vilesci/stammdaten/benutzerberechtigung_details.php b/vilesci/stammdaten/benutzerberechtigung_details.php
index 83a9c34bb..03e7b15b9 100644
--- a/vilesci/stammdaten/benutzerberechtigung_details.php
+++ b/vilesci/stammdaten/benutzerberechtigung_details.php
@@ -37,7 +37,28 @@ require_once('../../include/person.class.php');
require_once('../../include/benutzer.class.php');
require_once('../../include/funktion.class.php');
require_once('../../include/wawi_kostenstelle.class.php');
+require_once('../../include/log.class.php');
+/*
+ * TODOs
+ *
+
+Checkbox-Range
+Mehrfach-Löschen
+
+
+Wawi und kostenstelle ausblenden
+Checkbox markieren bei (doppel)klick auf Zeile
+
+----------------------
+
+Nach übertragen gleich zu Person springen
+Bug in Kopieren - Verdoppelt alle Einträge
+Sortierreihenfolge. OE wird anscheinend nicht sortiert
+ART prüfen auf schreibweise
+BEschreibungstexte bestehender Rechte
+
+ */
$user = get_uid();
$rechte = new benutzerberechtigung();
@@ -51,7 +72,8 @@ if(!$rechte->isBerechtigt('basis/berechtigung'))
//$reloadstr = ''; // neuladen der liste im oberen frame
$htmlstr = '';
-$errorstr = ''; //fehler beim insert
+$errorstr = '';
+$successstr = '';
$sel = '';
$chk = '';
$oe_arr = array();
@@ -73,64 +95,161 @@ $neu = false;
$negativ = false;
$filter=(isset($_GET['filter'])?$_GET['filter']:'alle');
-if(isset($_POST['del']))
+if(isset($_POST['delete']) && $_POST['delete'] != '')
{
if(!$rechte->isBerechtigt('basis/berechtigung', null, 'suid'))
- die('Sie haben keine Berechtigung fuer diese Aktion');
+ die($rechte->errormsg);
- $benutzerberechtigung_id = $_POST['benutzerberechtigung_id'];
+ $benutzerberechtigung_id = $_POST['delete'];
$ber = new benutzerberechtigung();
if(!$ber->delete($benutzerberechtigung_id))
$errorstr .= 'Datensatz konnte nicht gelöscht werden!';
- //$reloadstr .= "\n";
+ //$reloadstr .= "";
}
-if(isset($_POST['kopieren']))
+if(isset($_POST['delete_multi']) && $_POST['delete_multi'] != '')
{
+ if(!$rechte->isBerechtigt('basis/berechtigung', null, 'suid'))
+ die($rechte->errormsg);
+
+ if (isset($_POST['dataset']))
+ {
+ $i = 0;
+ foreach ($_POST['dataset'] AS $benutzerberechtigung_id => $value)
+ {
+ // Nur markierte Rechte kopieren
+ if (!isset($value['check']))
+ {
+ continue;
+ }
+
+ $ber = new benutzerberechtigung();
+ if(!$ber->delete($benutzerberechtigung_id))
+ {
+ $errorstr .= 'Datensatz konnte nicht gelöscht werden!';
+ }
+ else
+ {
+ $i ++;
+ //Log schreiben
+ $log = new log();
+
+ $logdata = var_export((array) $ber, true);
+ $log->new = true;
+ $log->sql = $logdata;
+ $log->sqlundo = 'Kein Undo vorhanden';
+ $log->executetime = date('Y-m-d H:i:s');
+ $log->mitarbeiter_uid = $user;
+ $log->beschreibung = 'Berechtigung gelöscht';
+
+ if(!$log->save())
+ {
+ $errorstr .= "Fehler beim schreiben des Log-Eintrags
";
+ }
+ }
+ }
+ if ($errorstr == '')
+ {
+ $successstr .= "".$i." Rechte erfolgreich gelöscht
";
+ }
+ }
+
+
+
+ //$reloadstr .= "";
+
+}
+
+if(isset($_POST['uebertragen']) && $_POST['uebertragen_nach'] != '')
+{
+ //echo '
', var_dump($_POST), '';exit(); if($rechte->isBerechtigt('basis/berechtigung', null, 'suid')) { - $uid = $_POST['uid']; - $uid_von = $_POST['uid_von']; + $uidVon = $_POST['uid']; + $copyTo = $_POST['uebertragen_nach']; - $rechtevon = new benutzerberechtigung(); - if(!$rechtevon->loadBenutzerRollen($uid_von)) - die('Fehler beim Laden der Berechtigung von '.$uid_von); - - foreach($rechtevon->berechtigungen AS $row) + if (isset($_POST['dataset'])) { - //Nur aktive Berechtigungen kopieren - if(($row->start=='' || $row->start<=date('Y-m-d')) && ($row->ende=='' || $row->ende>=date('Y-m-d'))) + $i = 0; + foreach ($_POST['dataset'] AS $key => $value) { + // Nur markierte Rechte kopieren + if (!isset($value['check'])) + { + continue; + } + + $rolle_kurzbz = (isset($value['rolle_kurzbz']) ? $value['rolle_kurzbz'] : ''); + $berechtigung_kurzbz = (isset($value['berechtigung_kurzbz']) ? $value['berechtigung_kurzbz'] : ''); + $art = (isset($value['art']) ? $value['art'] : ''); + $oe_kurzbz = (isset($value['oe_kurzbz']) ? $value['oe_kurzbz'] : ''); + $kostenstelle_id = (isset($value['kostenstelle_id']) ? $value['kostenstelle_id'] : ''); + $start = (isset($value['start']) ? $value['start'] : ''); + $ende = (isset($value['ende']) ? $value['ende'] : ''); + $anmerkung = (isset($value['anmerkung']) ? $value['anmerkung'] : ''); + + $funktion_kurzbz = (isset($value['funktion_kurzbz']) ? $value['funktion_kurzbz'] : ''); + $studiensemester_kurzbz = null; + $ber = new benutzerberechtigung(); - $ber->new = true; - //$ber->benutzerberechtigung_id = $benutzerberechtigung_id; - $ber->art = $row->art; - $ber->oe_kurzbz = $row->oe_kurzbz; - $ber->berechtigung_kurzbz = $row->berechtigung_kurzbz; - $ber->rolle_kurzbz = $row->rolle_kurzbz; - $ber->uid = $uid; - $ber->funktion_kurzbz = $row->funktion_kurzbz; - $ber->studiensemester_kurzbz = $row->studiensemester_kurzbz; - $ber->start = $row->start; - $ber->ende = $row->ende; - $ber->negativ = $row->negativ; - $ber->insertamum=date('Y-m-d H:i:s'); + $ber->insertamum = date('Y-m-d H:i:s'); $ber->insertvon = $user; + $ber->new = true; + + if (isset($value['negativ'])) + $ber->negativ = true; + else + $ber->negativ = false; + + $ber->art = $art; + $ber->oe_kurzbz = $oe_kurzbz; + $ber->berechtigung_kurzbz = $berechtigung_kurzbz; + $ber->rolle_kurzbz = $rolle_kurzbz; + $ber->uid = $copyTo; + $ber->funktion_kurzbz = $funktion_kurzbz; + $ber->studiensemester_kurzbz = $studiensemester_kurzbz; + $ber->start = $start; + $ber->ende = $ende; $ber->updateamum = date('Y-m-d H:i:s'); $ber->updatevon = $user; - $ber->kostenstelle_id = $row->kostenstelle_id; - $ber->anmerkung = 'Kopiert von UID '.$uid_von.($row->anmerkung!=''?'. Anmerkung von UID '.$uid_von.': '.$row->anmerkung:''); + $ber->kostenstelle_id = $kostenstelle_id; + $ber->anmerkung = 'Kopiert von UID '.$uidVon.($anmerkung!=''?'. Anmerkung von UID '.$uidVon.': '.$anmerkung:''); if(!$ber->save()) { - if (!$ber->new) - $errorstr .= "Datensatz konnte nicht gespeichert werden!".$ber->errormsg; + $errorstr .= "Datensatz konnte nicht gespeichert werden!".$ber->errormsg; } + else + { + $i ++; + //Log schreiben + $log = new log(); + + $logdata = var_export((array) $ber, true); + $log->new = true; + $log->sql = $logdata; + $log->sqlundo = 'Kein Undo vorhanden'; + $log->executetime = date('Y-m-d H:i:s'); + $log->mitarbeiter_uid = $user; + $log->beschreibung = 'Berechtigung übertragen von '.$uidVon.' nach '.$copyTo; + + if(!$log->save()) + { + $errorstr .= "Fehler beim schreiben des Log-Eintrags
".$errorstr."
".$successstr."
"; + //Formular zum Kopieren von Berechtigungen - $htmlstr .= "\n"; + //$htmlstr .= ""; $i = 0; // Zusätzlich jede Funktion mit einer gültigen Berechtigung anzeigen @@ -291,11 +483,13 @@ if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz'])) $i++; if ($i==1) { - $htmlstr .= "Geerbte Berechtigungen aus Funktion\n"; + $htmlstr .= "Geerbte Berechtigungen aus Funktion(en) "; } - $htmlstr .= ($i>1?", ":"").$funktion_bezeichnung->beschreibung.""; + $htmlstr .= ($i > 1 ? ", " : "").$funktion_bezeichnung->beschreibung; } } + if(!empty($funktionsrecht)) + $htmlstr .= '
'; } } elseif(isset($_REQUEST['funktion_kurzbz']) && $_REQUEST['funktion_kurzbz']!='') @@ -307,10 +501,10 @@ if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz'])) die('Funktion existiert nicht'); $rights->loadBenutzerRollen(null, $funktion_kurzbz); - $htmlstr .= "Berechtigungen der Funktion ".$funktion->beschreibung."\n"; + $htmlstr .= "Berechtigungen der Funktion ".$funktion->beschreibung.""; } - //$htmlstr .= "Berechtigungen von ".$name->nachname." ".$name->vorname." (".$uid.")".$funktion_kurzbz."\n"; + //$htmlstr .= "Berechtigungen von ".$name->nachname." ".$name->vorname." (".$uid.")".$funktion_kurzbz.""; /*$htmlstr .= ' Filter: Alle | nur WaWi @@ -318,16 +512,19 @@ if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz'])) ';*/ - $htmlstr .= "| Rolle | Berechtigung | Art | -Organisationseinheit | -Kostenstelle | - +Organisationseinheit | +Kostenstelle | Neg | Gültig ab | Gültig bis | @@ -335,63 +532,52 @@ if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz']))Info | - - | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
+
+
+ |
+
| + | Rolle | +Berechtigung | +Art | +Organisationseinheit | +Kostenstelle | + +Neg | +Gültig ab | +Gültig bis | +Anmerkung | +Info | ++ + | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| "; - - // Wenn editiert wird, zu der Zeile Springen - $htmlstr.=" - - "; - $htmlstr.=" | \n"; - - //Berechtigung - $htmlstr .= "\n"; - - //Art - $htmlstr .= " | \n"; - - //Organisationseinheit - if($funktion_kurzbz!='') - $htmlstr .= " | OE aus MA-Funktion | \n"; - else - { - $htmlstr .= "\n"; - } - - //Kostenstelle - $htmlstr .= " | \n"; - - $htmlstr .= " | negativ?'checked="checked"':'')." onchange='markier(\"td_".$b->benutzerberechtigung_id."\")'> | \n"; - $htmlstr .= "\n"; - $htmlstr .= " | \n"; - $htmlstr .= " | anmerkung))."' size='30' maxlength='256' markier(\"td_".$b->benutzerberechtigung_id."\")'> | \n"; - $htmlstr .= "![]() | \n";
-
- $htmlstr .= " "; - $htmlstr .= " | "; - $htmlstr .= " | ||
| "; + $htmlstr .= " "; + $htmlstr .= " "; + $htmlstr .= " | "; - $heute = strtotime(date('Y-m-d')); - if ($b->ende!='' && strtotime($b->ende)<$heute) + //Rolle + $htmlstr .= ""; + $htmlstr .= " "; + $htmlstr.=" | "; - //Berechtigung - $htmlstr .= "$b->berechtigung_kurzbz | \n"; + //Berechtigung + $htmlstr .= ""; + $htmlstr .= " "; + $htmlstr .= " berechtigung_kurzbz] : '')."'>"; + $htmlstr .= " | "; - //Art - $htmlstr .= "".$b->art." | \n"; + //Art + $htmlstr .= ""; + $htmlstr .= " "; + $htmlstr .= " "; + $htmlstr .= " | "; - //Organisationseinheit - $oekey = $oe->result; - $org = new organisationseinheit(); - $org->load($b->oe_kurzbz); - $htmlstr .= "".$org->organisationseinheittyp_kurzbz." ".$org->bezeichnung." | \n"; - - //Kostenstelle - $kst = new wawi_kostenstelle(); - $kst->load($b->kostenstelle_id); - if(!$kst->aktiv) - $style='style="text-decoration:line-through;"'; - else - $style=''; - $htmlstr .= "$kst->bezeichnung | \n"; - - - $htmlstr .= "negativ?'checked="checked"':'')." onchange='markier(\"td_".$b->benutzerberechtigung_id."\")' disabled> | \n"; - $htmlstr .= "".$b->start." | \n"; - $htmlstr .= "".$b->ende." | \n"; - $htmlstr .= "".$b->anmerkung." | \n"; - $htmlstr .= "![]() | \n";
-
- $htmlstr .= " "; - $htmlstr .= " | "; - $htmlstr .= " | OE aus MA-Funktion | "; + } + else + { + $htmlstr .= ""; + $htmlstr .= " "; + $htmlstr .= " "; + $htmlstr .= " oe_kurzbz] : '')."'>"; + $htmlstr .= " | "; } + //Kostenstelle + $htmlstr .= ""; + $htmlstr .= " | "; + + //Negativ-Checkbox + $htmlstr .= ""; + $htmlstr .= " negativ?'checked="checked"':'').">"; + $htmlstr .= " | "; + + //Gültig ab + $htmlstr .= ""; + $htmlstr .= " "; + $htmlstr .= " "; + $htmlstr .= " | "; + + // Gültig bis + $htmlstr .= ""; + $htmlstr .= " "; + $htmlstr .= " "; + $htmlstr .= " | "; + + //Anmerkung + $htmlstr .= ""; + $htmlstr .= " anmerkung))."' size='30' maxlength='256'>"; + $htmlstr .= " | "; + + //Info + $htmlstr .= "![]() | ";
+
+ $htmlstr .= " "; + $htmlstr .= " "; + $htmlstr .= " "; + $htmlstr .= " | "; + $htmlstr .= " "; } - - $htmlstr .= "