diff options
Diffstat (limited to 'ldap-site-mngmt/webinterface/lib/commonlib.inc.php')
-rw-r--r-- | ldap-site-mngmt/webinterface/lib/commonlib.inc.php | 554 |
1 files changed, 0 insertions, 554 deletions
diff --git a/ldap-site-mngmt/webinterface/lib/commonlib.inc.php b/ldap-site-mngmt/webinterface/lib/commonlib.inc.php deleted file mode 100644 index 95fc0776..00000000 --- a/ldap-site-mngmt/webinterface/lib/commonlib.inc.php +++ /dev/null @@ -1,554 +0,0 @@ -<?php - - -/** -* attributesToString($entry, $name, $delemiter = "", $pattern = "", $empty = " ") - -* Gibt die Attribute eines LDAP-Eintrages formatiert aus -* -* Gibt die Attribute des Schl�ssels $name des LDAP-Eintraes $entry aus. Mehrere Werte werden mit $delemiter -* voneinander getrennt. F�r jeden Wert des Attributes wird in $pattern an die Stelle "$name" (Dallarzeichen plus die Bezeichnung) -* das aktuelle Attribut eingef�gt - �hnlich (aber nicht gleich!) der String-Interpretation von PHP. Falls $pattern = "" wird -* einfach der Wert zur�ck gegeben. Falls f�r den Schl�ssel keine Attribut-Werte definiert sind, wird $empty zur�ck gegeben -* -* @param array entry LDAP-Array -* @param string name Hashbezeichnung -* @param string delimiter Trennzeichen -* @param string pattern Muster -* @param string empty Zeichen f�r leere Felder -* -* @return string Array-Werte als String -* -* @author Timothy Burk, lt. Musterl�sung -* -*/ - - function attributesToString($entry, $name, $delimiter = "", $pattern = "", $empty = "") { - $buffer = ""; - $name=strtolower($name); - if (isset($entry[$name])) { - $count = $entry[$name]['count']; - for ($i = 0; $i < $count; $i++) { - if ($pattern) { - $tmp = $pattern; - $buffer .= str_replace('$' . $name, $entry[$name][$i], $tmp); - } else { - $buffer .= $entry[$name][$i]; - } - if ($delimiter && ($i + 1) < $count) { - $buffer .= $delimiter; - } - } - } - - if ("" == $buffer && $empty) { - $buffer = $empty; - } - return $buffer; - } - -/* - * oneAttribute($entry, $name, $empty = "", $i = 0) { - * liefert den ($i-ten) Wert des Attributes $name aus $entry - * Eingabe ist entweder ein Datensatz aus dem ldapsearch-Ergebnis, oder - * ein um die Meta-Infos (count) bereinigtes Ergebnis - * sorry f�r die mangelhafte Doku - Thomas - */ - - function oneAttribute($entry, $name, $empty = "", $i = 0) { - $buffer = ""; - if (isset($entry[$name][$i])) { - $buffer = $entry[$name]; - } else if (isset($entry[$name])) { - $buffer = $entry[$name]; - } - - if ("" == $buffer && $empty) { - $buffer = $empty; - } - return $buffer; - } - - - /** - * redirect($seconds, $url, $msg = "", $addSessionId = TRUE) - leitet den Benutzer auf eine andere Seite weiter - * - * Leitet den Benuzter nach $seconds Sekunden auf die Seite $url weiter. W�hrend der Wartezeit bekommt der Benutzer - * die Information $msg mitgeteilt (Achtung: keine automatische Formatierung der $msg). Wenn $addSessionId TRUE ist, - * dann wird an den URL die SessionId angeh�ngt. - * - * @author Timothy Burk, lt. Musterl�sung - */ - - function redirect($seconds, $url, $msg = "", $addSessionId = TRUE) { - if ($addSessionId) { - if (strpos($url, "?") === FALSE) { - $url .= "?"; - } else { - $url .= "&"; - } - $url .= SID; - } - - echo "<html>\n" . - " <head>\n" . - ' <meta http-equiv="refresh" content="' . $seconds . "; URL=$url" . '">' . "\n" . - " </head>\n"; - if ($msg) { - echo " <body>\n" . - $msg . - " </body>\n"; - } - echo "</html>\n"; - } - - - -/** -* getRights($ds, $userDn) - ermittelt die Rechte eines Users. -* -* Die Funktion erwartet ein Directory-Handle und den vollst�ndigen Distiguished Name des -* Users. R�ckgabewert ist ein numerisches eindimensionales Array, welches die Rechte enth�lt. -* -* @param resource ds LDAP Directory Handle -* @param string userDn Distinguishedname des Users -* -* @return array rechte -* -* @author Timothy Burk -*/ - -function getRoles($ds, $userDN) { - global $ldapError, $suffix, $uid; - - if(!($result = uniLdapSearch($ds, "ou=RIPM,".$suffix, "(&(member=$userDN)(cn=*))", array("dn","cn"), "dn", "sub", 0, 0))) { - redirect(5, "index.php", $ldapError, FALSE); - die; - } - $result = ldapArraySauber($result); - $clean = array(); - - foreach($result as $item) { - $dn = ldap_explode_dn($item['dn'], 0); - $dnsub = array_slice($dn,3); - $auDN = implode(',',$dnsub); - $element['au'] = $auDN; - $element['role'] = $item['cn']; - $clean[] = $element; - } - - $res = array(); - foreach($clean as $item){ - $au = $item['au']; - $role = $item['role']; - if(array_key_exists($au,$res)){ - $res[$au][] = $role; - } - else{ - $res[$au] = array($role); - } - } - $i=0; - foreach (array_keys($res) as $key){ - $au_roles[$i]['au'] = $key; - $au_roles[$i]['role'] = $res[$key]; - $i++; - } - return $au_roles; -} - - -/** -* createMenu($rechte) - erstellt die Menuleiste abh�ngig von der Rechten des Users. -* -* Die Navigationsleiste wird dynamisch erzeugt und von dieser Funktion direkt in das -* entsprechende Template geparst. Dabei werden nur die Schaltfl�chen zur Verf�gung -* gestellt, die der User mit seinen Rechten anzeigen darf. -* -* @param array rechte Eindimensionales Array mit den Rechten des Users -* @param int mainnr Nummer des aktiven Hauptmenus -* -* @author Timothy Burk -*/ - -function createMainMenu($rollen , $mainnr) { - - global $template, $START_PATH, $auDN; - - # pre-checks - $mipbs = get_maxipblocks_au($auDN); - #echo "MIPB: "; print_r ($mipbs); echo "<br>"; - if ($mipbs[0] != ""){ - $dhcplink = "dhcp/dhcpsubnets.php?mnr=0"; - }else{ - $dhcplink = "dhcp/no_dhcp.php"; - } - - # Struktur der Registerkartenleiste - $mainmenu = array(array("link" => "au/au.php", - "text" => "AU Home", - "zugriff" => "alle"), - #array("link" => "roles/roles.php", - # "text" => "Admin Rollen", - # "zugriff" => array("MainAdmin","DhcpAdmin")), - #array("link" => "ip/ip.php", - # "text" => "IP Management", - # "zugriff" => array("MainAdmin","HostAdmin","DhcpAdmin")), - array("link" => "computers/hostoverview.php?sort=hostname", - "text" => "Rechner", - "zugriff" => array("MainAdmin","HostAdmin","DhcpAdmin")), - array("link" => $dhcplink, - "text" => "DHCP", - "zugriff" => array("MainAdmin","DhcpAdmin")), - array("link" => "rbs/rbs.php", - "text" => "RemoteBoot/PXE", - "zugriff" => array("MainAdmin","RbsAdmin")), - array("link" => "dns/dns.php", - "text" => "DNS", - "zugriff" => array("MainAdmin","ZoneAdmin"))); - - - # Zusammenstellen der Menuleiste - $template->define_dynamic("Mainmenu", "Mmenu"); - $i=0; - foreach($mainmenu as $item) { - if($item['zugriff'] === "alle" || vergleicheArrays($rollen , $item['zugriff'])) { - if ($i==0) { - if ($mainnr==0) { - $zwisch=""; - $lastaktive=true; - $farb="#505050"; - } - else { - $zwisch=""; - $farb="#A0A0A0"; - $lastaktive=false; - } - } - else { - if ($mainnr==$i) { - $zwisch=""; - $lastaktive=true; - $farb="#505050"; - } - else { - $farb="#A0A0A0"; - if ($lastaktive) {$zwisch="";} - else {$zwisch="";} - $lastaktive=false; - } - } - $template->assign(array("MZWISCHEN" => $zwisch, - "MFARBE" => $farb, - "MLINK_M" => $START_PATH.$item["link"], - "MTEXT_M" => $item["text"])); - $template->parse("MAINMENU_LIST", ".Mainmenu"); - } - $i=$i+1; - } - if ($lastaktive) {$template->assign(array("MENDE" => ""));} - else { - $template->assign(array("MENDE" => "")); - } - -} - - - -/** -* vergleicheArrays($a, $b) - Ermitteln der Schnittmenge zweier Arrays -* -* @param array a -* @param array b -* -* @return boolean TRUE, wenn die Schnittmenge von a und b nicht leer ist, sonst FALSE -* -* @author Timothy Burk -*/ - -function vergleicheArrays($a, $b) { - if((sizeof(array_unique($a)) + sizeof($b)) > sizeof(array_unique(array_merge($a, $b)))) { - return TRUE; - } else { - return FALSE; - } -} - - -/** -* inputArraySauber($Array) -* -* L�scht aus einem Array, welches POST-Daten enth�lt leere Felder. N�tig f�r die Formatierung -* vor dem Anlegen neuer Objekte. -* -* @param array _POST-Array -* -* @return array Bereinigtes Array. -* -* @author Timothy Burk -*/ -function inputArraySauber($Array) { - $b = array(); - foreach($Array as $key => $a) { - if(!is_array($a)) { - trim($a); - } - if (!$a == "") { - if(is_array($a)) { - $b[$key] = $a; - } else { - $b[$key] = htmlentities($a); - } - } - } - return $b; -} - - -/** -* numArraySauber($Array) -* -* L�scht aus einemn numerischen Array leere Felder. -* -* @param array Numerisches Array -* -* @return array Bereinigtes Array. -* -* @author Timothy Burk -*/ -function numArraySauber($Array) { - $b = array(); - $arr = array(); - if(!(is_array($Array))) { - $arr[] = $Array; - } else { - $arr = $Array; - } - foreach($arr as $key => $a) { - if (!$a == "") { - $b[] = $a; - } - } - return $b; -} - -/** -* ldapArraySauber($Array, [$delEmpty]) -* -* Bereinigt ein dreidimensionales Array, so wie es aus der Funktion uniLdapSearch kommt. -* Dabei werden alle count-Felder sowie alle numerischen Felder in denen der Schl�ssel -* gespeichert ist entfernt. Attributarrays mit nur einem Element werden gel�scht, das Element -* wir als Skalar gespeichert. -* Wenn $delEmpty = TRUE ist, werden nur nichtleere Felder gespeichert. -* -* @param array $Array uniLdapSearch()-Ausgabe -* @param boolean $delEmpty (Standard: $delEmpty = FALSE) -* -* @return array Bereinigtes Array. -* -* @author Timothy Burk -*/ -function ldapArraySauber($Array, $delEmpty = FALSE) { - $b = array(); - foreach($Array as $key => $item) { - if(is_array($item)) { - foreach($item as $key_attr => $attr) { - if(!is_int($key_attr)) { - if(is_array($attr)) { - if($attr['count'] == 1) { - $attr[0] = str_replace(chr(160),"",trim($attr[0])); - if(($delEmpty && $attr[0] != "") || !($delEmpty)) { - $b[$key][$key_attr] = $attr[0]; - } - } else { - for($i=0; $i < $attr['count']; $i++) { - $attr[$i] = str_replace(chr(160),"",trim($attr[$i])); - if(($delEmpty && $attr[$i] != "") || !($delEmpty)) { - $b[$key][$key_attr][$i] = $attr[$i]; - } - } - } - } else { - $attr = str_replace(chr(160),"",trim($attr)); - if(($delEmpty && $attr != "") || !($delEmpty)) { - $b[$key][$key_attr] = $attr; - } - } - } - } - } else { - if(is_int($key)) { - $item = str_replace(chr(160),"",trim($item)); - if(($delEmpty && $item != "") || !($delEmpty)) { - $b[$key] = $item; - } - } - } - } - return $b; -} - -/** -* personOptionen($rechte) -* -* Enth�lt die m�glichen Optionen, die auf einen User angewandt werden k�nnen als -* zweidimensionales Array mit folgenden Attributen: -* [ziel]: Aufzurufendes PHP-Skript -* [text]: Beschriftung der Schaltfl�che -* [desc]: Beschreibung der Funktion -* [rechte][]: Array mit den erforderlichen Rechten f�r die jeweilige Option. array("alle") steht f�r "ohne Einschr�nkung". -* -* Dieses in dieser Funktion gespeicherte Array wird abh�ngig von den �bergebenen -* Rechten um nicht erlaubte Optionen reduziert und dann ausgegeben. -* -* @param array $rechte Eindimensionales Array $_SESSION['rechte'] -* -* @return array Zweidimensionales Array mit den erlaubten Optionen. -* -* @author Timothy Burk -*/ -function personOptionen($rechte) { - global $utc_uid, $utc_cn, $START_PATH; - $optionen = array(); - $optionen[] = array("ziel" => $START_PATH."person/datensatz.php?aktion=edit", - "text" => "Userdaten bearbeiten", - "desc" => "Anzeigen und �ndern der pers�nlichen Daten des Users.", - "rechte" => array("writeMitarbeiter"), - "hidden" => array("aktion" => "edit")); - $optionen[] = array("ziel" => $START_PATH."person/datensatz.php", - "text" => "Datensatz l�schen", - "desc" => "Der User wird vollst�ndig mit allen Daten aus der Datenbank gel�scht.", - "rechte" => array("writeMitarbeiter"), - "hidden" => array("aktion" => "delete")); - $optionen[] = array("ziel" => $START_PATH."person/datensatz.php", - "text" => "User (de)aktivieren", - "desc" => "Diese Funktion legt einen User durch die Deaktivierung im Archiv ab. Von dort kann der Datensatz weiterhin eingesehen und ggf. reaktiviert werden.", - "rechte" => array("writeMitarbeiter"), - "hidden" => array("aktion" => "archiv")); - $optionen[] = array("ziel" => $START_PATH."person/vertrag_show.php", - "text" => "Vertr�ge bearbeiten", - "desc" => "Bearbeiten oder Anlegen eines Vertrages. Sie k�nnen dabei zwischen verschiedenen Vertragsarten w�hlen.", - "rechte" => array("writeVertrag", "readVertrag")); - $optionen[] = array("ziel" => $START_PATH."urlaub/krank_angabe.php", - "text" => "Krankheitstage", - "desc" => "Krankheitsdaten bearbeiten.", - "rechte" => array("writeKrankheitUrlaub"), - "hidden" => array("uidToChange" => $utc_uid, "GName" => $utc_cn)); - $optionen[] = array("ziel" => $START_PATH."urlaub/liste.php", - "text" => "Urlaubstage anzeigen", - "desc" => "Urlaubstage des Users in grafischer �bersicht anzeigen.", - "rechte" => array("readKrankheitUrlaub"), - "hidden" => array("wer" => $utc_uid, "wann" => "g", "sub" => $utc_cn)); - $optionen[] = array("ziel" => $START_PATH."person/rechte_show.php", - "text" => "Rechte vergeben", - "desc" => "Diese Option dient dazu, dem User bestimmte Rechte zuzuweisen, beispielsweise das Recht Urlaub zu beantragen, Vertragsdaten andere User zu bearbeiten oder einzusehen usw..", - "rechte" => array("writeRechte")); - $optionen[] = array("ziel" => $START_PATH."person/suchen.php", - "text" => "Abbrechen", - "desc" => " ", - "rechte" => array("alle")); - - $opt_reduced = array(); - foreach($optionen as $option) { - if(in_array("alle",$option['rechte']) || vergleicheArrays($option['rechte'],$rechte)) { - array_push($opt_reduced, $option); - } - } - return $opt_reduced; -} - - -/** -* makeArrFromAttribute($a, $attribute) -* -* Ein zweidimensionales Array wird nach der ersten Dimension durchlaufen. -* Dabei werden die Werte des angegebenen Attributes $attribute f�r alle -* Eintr�ge extrahiert und in einem neuen Array gespeichert, welches -* anschlie�end zur�ckgegeben wird. -* -* @param array $a Zweidimensionales Array -* @param string $attribute Schl�sselname der zweiten Dimension -* -* @return array Eindimensionales numerisches Array mit den Attributwerten. -* -* @author Timothy Burk -*/ -function makeArrFromAttribute($a, $attribute) { - $c = array(); - foreach($a as $b) { - $c[] = $b[$attribute]; - } - return $c; -} -?> - -<?php - - -/** -* sortArrayByKey sortiert die 1.Dimension von bis zu 5-dimensionalen Arrays -* nach den Werten in einem beliebigen Schl�ssel in beliebiger Dimension -* -* PS: die Funktion sortArrayByKey ist nur sinnvoll, wenn sich die Array-Eintr�ge -* der 1.Dim sehr �hnlich sind, sprich bei Suchergebnissen!! -* -* @param array $array : das zu sortierende Array -* @param string $sortKey : der Schl�ssel, nach dem sortiert werden soll -* Bsp.: -* es soll nach $array[$i][$j][$k]['sortkey'] sortiert werden -* => $sortKey = "$j#$k#sortkey" -* @param string $sortDirection : die Sortierrichtung, g�ltige Werte sind "up", "down" -* -* -* @author Daniel H�fler -*/ -function sortArrayByKey($array, $sortKey, $sortDirection = "up") { - $sortKeyArray = explode("#", $sortKey); - $count = count($sortKeyArray); - if($count < 5) { - switch($count) { - case 0: - foreach($array as $key => $item) { - $toSortKeys[$key] = $item; - } - break; - case 1: - foreach($array as $key => $item) { - $toSortKeys[$key] = $item[$sortKeyArray[0]]; - } - break; - case 2: - foreach($array as $key => $item) { - $toSortKeys[$key] = $item[$sortKeyArray[0]][$sortKeyArray[1]]; - } - break; - case 3: - foreach($array as $key => $item) { - $toSortKeys[$key] = $item[$sortKeyArray[0]][$sortKeyArray[1]][$sortKeyArray[2]]; - } - break; - case 4: - foreach($array as $key => $item) { - $toSortKeys[$key] = $item[$sortKeyArray[0]][$sortKeyArray[1]][$sortKeyArray[2]][$sortKeyArray[3]]; - } - break; - } - } else { - echo "zu viele Dimensionen!! H�chstens 4 Dimensionen m�glich"; - return false; - } - if($sortDirection == "up") { - asort($toSortKeys); - } elseif($sortDirection == "down") { - arsort($toSortKeys); - } else { - echo "Keine g�ltige Sortierrichtung!! W�hlen sie \"up\" oder \"down\"\n"; - return false; - } - $sortArray = array(); - foreach($toSortKeys as $key => $item) { - $sortArray[$key] = $array[$key]; - } - return($sortArray); -} - -?>
\ No newline at end of file |