From 0c0c9968a3074b7a4779c62bbf28dd1d5a3a8da6 Mon Sep 17 00:00:00 2001 From: Roland Gruber Date: Fri, 28 May 2010 18:49:59 +0000 Subject: [PATCH] display abstract DNs --- lam/lib/account.inc | 21 +++++++++++++++++++++ lam/lib/lists.inc | 4 ++-- lam/lib/modules.inc | 6 +++--- lam/lib/modules/asteriskExtension.inc | 13 +++++++------ lam/lib/modules/inetOrgPerson.inc | 5 ++++- 5 files changed, 37 insertions(+), 12 deletions(-) diff --git a/lam/lib/account.inc b/lam/lib/account.inc index d7e28c26..eeba7499 100644 --- a/lam/lib/account.inc +++ b/lam/lib/account.inc @@ -673,4 +673,25 @@ function cleanLDAPResult($entries) { return $entries; } +/** + * Transforms a DN into a more user friendly format. + * E.g. "dc=company,dc=de" is transformed to "company > de". + * + * @param String $dn DN + * @return String transformed DN + */ +function getAbstractDN($dn) { + if ($dn == '') { + return ''; + } + $parts = explode(',', $dn); + for ($i = 0; $i < sizeof($parts); $i++) { + $subparts = explode('=', $parts[$i]); + if (sizeof($subparts) == 2) { + $parts[$i] = $subparts[1]; + } + } + return implode(' > ', $parts); +} + ?> diff --git a/lam/lib/lists.inc b/lam/lib/lists.inc index a172e6dc..a49baf41 100644 --- a/lam/lib/lists.inc +++ b/lam/lib/lists.inc @@ -635,9 +635,9 @@ class lamList { echo ("\n"); } diff --git a/lam/lib/modules.inc b/lam/lib/modules.inc index a8c3c5d3..73006cd9 100644 --- a/lam/lib/modules.inc +++ b/lam/lib/modules.inc @@ -1542,14 +1542,14 @@ class accountContainer { // loop through all suffixes $rootsuffix = $_SESSION['config']->get_Suffix($this->type); foreach ($_SESSION['ldap']->search_units($rootsuffix) as $suffix) { - echo "\n"; + echo ">" . getAbstractDN($suffix) . "\n"; } if (!($this->dn == '') && !in_array($this->dn, $_SESSION['ldap']->search_units($rootsuffix))) { - echo "\n";; + echo '\n";; } echo "\n"; echo '    '; diff --git a/lam/lib/modules/asteriskExtension.inc b/lam/lib/modules/asteriskExtension.inc index 767011b8..949dd808 100644 --- a/lam/lib/modules/asteriskExtension.inc +++ b/lam/lib/modules/asteriskExtension.inc @@ -244,12 +244,10 @@ class asteriskExtension extends baseModule { array('kind' => 'text', 'text' => _("Extension owners") . '*'), array('kind' => 'input', 'name' => 'form_subpage_' . get_class($this) . '_user_open', 'type' => 'submit', 'value' => _('Change')), array('kind' => 'help', 'value' => 'member')); - for ($i = 0; $i < sizeof($this->attributes['member']); $i++) { - } $memberPart = array(); if (isset($this->attributes['member'])) { for ($i = 0; $i < sizeof($this->attributes['member']); $i++) { - $memberPart[] = array(array('kind' => 'text', 'text' => $this->attributes['member'][$i])); + $memberPart[] = array(array('kind' => 'text', 'text' => getAbstractDN($this->attributes['member'][$i]))); } } $return[] = array( @@ -280,10 +278,13 @@ class asteriskExtension extends baseModule { for ($i = 0; $i < sizeof($entries); $i++) { $dn = $entries[$i]['dn']; if (isset($dn) && (!isset($this->attributes['member']) || !in_array($dn, $this->attributes['member']))) { - $users_dn[] = $dn; + $users_dn[] = array($dn, getAbstractDN($dn)); } } $members = $this->attributes['member']; + for ($i = 0; $i < sizeof($members); $i++) { + $members[$i] = array($members[$i], getAbstractDN($members[$i])); + } $return[] = array(array('kind' => 'table', 'value' => array( array( array('kind' => 'table', 'value' => array( @@ -306,7 +307,7 @@ class asteriskExtension extends baseModule { array('kind' => 'fieldset', 'legend' => _("Extension owners"), 'value' => array( array( array('kind' => 'fieldset', 'td' => array ('valign' => 'top'), 'legend' => _("Selected users"), 'value' => array ( - array(array('kind' => 'select', 'name' => 'removeusers', 'size' => '15', 'multiple' => true, 'options' => $members))) + array(array('kind' => 'select', 'name' => 'removeusers', 'size' => '15', 'multiple' => true, 'options' => $members, 'descriptiveOptions' => true))) ), array('kind' => 'table', 'value' => array( array(array('kind' => 'input', 'type' => 'submit', 'name' => 'addusers_button', 'value' => '<=', 'td' => array('align' => 'center'))), @@ -314,7 +315,7 @@ class asteriskExtension extends baseModule { array(array('kind' => 'help', 'value' => 'member', 'td' => array('align' => 'center'))) )), array('kind' => 'fieldset', 'td' => array('valign' => 'top'), 'legend' => _("Available users"), 'value' => array( - array(array('kind' => 'select', 'name' => 'addusers', 'size' => '15', 'multiple' => true, 'options' => $users_dn))) + array(array('kind' => 'select', 'name' => 'addusers', 'size' => '15', 'multiple' => true, 'options' => $users_dn, 'descriptiveOptions' => true))) ) ) )) diff --git a/lam/lib/modules/inetOrgPerson.inc b/lam/lib/modules/inetOrgPerson.inc index 7818b37c..44f5142e 100644 --- a/lam/lib/modules/inetOrgPerson.inc +++ b/lam/lib/modules/inetOrgPerson.inc @@ -1061,6 +1061,9 @@ class inetOrgPerson extends baseModule implements passwordService { $dnUsers = array_keys($dnUsers); usort($dnUsers, array($_SESSION['ldap'], 'cmp_array')); array_unshift($dnUsers, '-'); + for ($i = 0; $i < sizeof($dnUsers); $i++) { + $dnUsers[$i] = array($dnUsers[$i], getAbstractDN($dnUsers[$i])); + } $optionsSelected = array(); if (isset($this->attributes['manager'][0])) { $optionsSelected[] = $this->attributes['manager'][0]; @@ -1070,7 +1073,7 @@ class inetOrgPerson extends baseModule implements passwordService { } $return[] = array( array('kind' => 'text', 'text' => _('Manager')), - array('kind' => 'select', 'name' => 'manager', 'size' => '1', + array('kind' => 'select', 'name' => 'manager', 'size' => '1', 'descriptiveOptions' => true, 'options' => $dnUsers, 'options_selected' => $optionsSelected), array('kind' => 'help', 'value' => 'manager')); }