From a4a0a2f255bedabe7f54c8d6d2b50808efc4fd9b Mon Sep 17 00:00:00 2001 From: katagia Date: Tue, 21 Sep 2004 11:33:00 +0000 Subject: [PATCH] changed function order in module. First are all function variables, second constructor. All other functions will follow in alphabetical order --- lam/lib/modules/sambaGroupMapping.inc | 308 ++++++++++++-------------- 1 file changed, 145 insertions(+), 163 deletions(-) diff --git a/lam/lib/modules/sambaGroupMapping.inc b/lam/lib/modules/sambaGroupMapping.inc index f65b56cf..1595b9e6 100644 --- a/lam/lib/modules/sambaGroupMapping.inc +++ b/lam/lib/modules/sambaGroupMapping.inc @@ -20,40 +20,78 @@ $Id$ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* Session variables which are used: -* $_SESSION['cacheAttributes']: This variable contains a list of attributes and their scope which should be cached -* -* Coockie variables which are used: -* $_COOKIE["IV"], $_COOKIE["Key"]: Needed to en/decrypt passwords. -* -* Variables in basearray which are no objects: -* type: Type of account. Can be user, group, host -* attributes: List of all attributes, how to get them and are theiy required or optional -* dn: current DN without uid= or cn= -* dn_orig: old DN if account was loaded with uid= or cn= -* External functions which are used -* account.inc: findgroups, incache, get_cache, array_delete, getshells -* ldap.inc: pwd_is_enabled, pwd_hash -*/ - -/* This class contains all sambaGroupMapping LDAP attributes -* and funtioncs required to deal with sambaGroupMapping -* sambaGroupMapping can only be created when it should be added -* to an array. -* basearray is the same array sambaGroupMapping should be added -* to. If basearray is not given the constructor tries to -* create an array with sambaGroupMapping and all other required -* objects. -* Example: $user[] = new sambaGroupMapping($user); -* -* In container array the following things have to exist: -* account or inetOrgPerson object -* type: 'user' or 'host' -* 'attributes': this is a list of arrays with all ldap attributes wich are allowed for this account -*/ class sambaGroupMapping extends baseModule { + // Variables + // Array of well known rids + var $rids; + + + function delete_attributes($post) { + return 0; + } + + + /* This function will create the html-page + * to show a page with all attributes. + * It will output a complete html-table + */ + function display_html_attributes($post, $profile=false) { + // Get Domain SID from name + $sambaDomains = search_domains($_SESSION['config']->get_domainSuffix()); + // Get Domain-SID from group SID + $domainSID = substr($this->attributes['sambaSID'][0], 0, strrpos($this->attributes['sambaSID'][0], "-")); + for ($i=0; $iname; + if ($domainSID==$sambaDomains[$i]->SID) { + $SID = $sambaDomains[$i]->SID; + $sel_domain = $sambaDomains[$i]->name; + } + } + $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Display name') ), + 1 => array ( 'kind' => 'input', 'name' => 'displayName', 'type' => 'text', 'size' => '30', 'maxlength' => '50', 'value' => $this->attributes['displayName'][0]), + 2 => array ( 'kind' => 'help', 'value' => 'displayName' )); + + if (!$profile) { + $names = array_keys($this->rids); + $wrid=false; + for ($i=0; $iattributes['sambaSID'][0]==$SID."-".$this->rids[$names[$i]]) { + $selected[] = $names[$i]; + $wrid=true; + } + else $options[] = $names[$i]; + } + if ($wrid) $options[] = $_SESSION[$this->base]->module['posixGroup']->attributes['cn'][0]; + else $selected[] = $_SESSION[$this->base]->module['posixGroup']->attributes['cn'][0]; + $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Windows group') ), + 1 => array ( 'kind' => 'select', 'name' => 'sambaSID', 'options' => $options, 'options_selected' => $selected), + 2 => array ( 'kind' => 'help', 'value' => 'sambaSID' )); + } + + $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Domain') ), + 1 => array ( 'kind' => 'select', 'name' => 'sambaDomainName', 'options' => $sambaDomainNames, 'options_selected' => array ( $sel_domain ) ), + 2 => array ( 'kind' => 'help', 'value' => 'sambaDomainName' )); + + return $return; + } + + function display_html_delete($post) { + return 0; + } + + + /* This function returns all ldap attributes + * which are part of sambaGroupMapping and returns + * also their values. + */ + function get_attributes() { + return $this->attributes; + } + + /** * Returns meta data that is interpreted by parent class * @@ -106,12 +144,43 @@ class sambaGroupMapping extends baseModule { return $return; } - /** this functin fills the error message array with messages - **/ - function loadErrorMessages() { - $this->errormessages['sambaSID'][0] = array('ERROR', _('Special Group'),sprintf( _('There can be only one group %s.'), $rids[$i]), 'sambaSID'); + + /* + * (non-PHPDoc) + * @see baseModule#get_pdfEntries + */ + function get_pdfEntries($account_type = "User") { + return array( 'sambaGroupMapping_gidNumber' => array('' . _('GID number') . '' . $this->attributes['gidNumber'][0] . ''), + 'sambaGroupMapping_sambaSID' => array('' . _('Windows group') . '' . $this->attributes['sambaSID'][0] . ''), + 'sambaGroupMapping_displayName' => array('' . _('Display name') . '' . $this->attributes['displayName'][0] . ''), + 'sambaGroupMapping_sambaGroupType' => array('' . _('Samba group type') . '' . $this->attributes['sambaGroupType'][0] . ''), + 'sambaGroupMapping_description' => array('' . _('Description') . '' . $this->attributes['description'][0] . '')); } - + + + /** + * Returns a list of elements for the account profiles. + * + * @return profile elements + */ + function get_profileOptions() { + $return = array(); + // get list of domains + $sambaDomains = search_domains($_SESSION['config']->get_domainSuffix()); + $sambaDomainNames = array(); + for ($i = 0; $i < count($sambaDomains); $i++ ) { + // extract names + $sambaDomainNames[] = $sambaDomains[$i]->name; + } + // domain + $return[] = array ( + 0 => array('kind' => 'text', 'text' => _('Domain')), + 1 => array('kind' => 'select', 'name' => 'sambaDomainName', 'options' => $sambaDomainNames, 'options_selected' => array ()), + 2 => array('kind' => 'help', 'value' => 'sambaDomainName' )); + return $return; + } + + // Constructor function init($base) { // call parent init @@ -120,16 +189,23 @@ class sambaGroupMapping extends baseModule { _('Domain Certificate Admins') => 517, _('Domain Schema Admins') => 518, _('Domain Enterprise Admins') => 519, _('Domain Policy Admins') => 520 ); } - // Variables - // Array of well known rids - var $rids; - - function module_ready() { - if ($_SESSION[$this->base]->module['posixGroup']->attributes['gidNumber'][0]=='') return false; - return true; + /* This function loads all attributes into the object + * $attr is an array as it's retured from ldap_get_attributes + */ + function load_attributes($attr) { + $this->load_ldap_attributes($attr); + return 0; } + + /** this functin fills the error message array with messages + **/ + function load_errorMessages() { + $this->errormessages['sambaSID'][0] = array('ERROR', _('Special Group'),sprintf( _('There can be only one group %s.'), $rids[$i]), 'sambaSID'); + } + + /* This functions return true * if all needed settings are done */ @@ -139,7 +215,14 @@ class sambaGroupMapping extends baseModule { if ($this->attributes['sambaGroupType'][0] == '') return false; return true; } - + + + function module_ready() { + if ($_SESSION[$this->base]->module['posixGroup']->attributes['gidNumber'][0]=='') return false; + return true; + } + + /* This function returns a list of all html-pages in module * This is usefull for mass upload and pdf-files * because lam can walk trough all pages itself and do some @@ -149,53 +232,6 @@ class sambaGroupMapping extends baseModule { return array('attributes'); } - /* This function returns all ldap attributes - * which are part of sambaGroupMapping and returns - * also their values. - */ - function get_attributes() { - return $this->attributes; - } - - /* This function loads all attributes into the object - * $attr is an array as it's retured from ldap_get_attributes - */ - function load_attributes($attr) { - $this->load_ldap_attributes($attr); - return 0; - } - - /* This function returns an array with 3 entries: - * array( DN1 ('add' => array($attr), 'remove' => array($attr), 'modify' => array($attr)), DN2 .... ) - * DN is the DN to change. It may be possible to change several DNs, - * e.g. create a new user and add him to some groups via attribute memberUid - * add are attributes which have to be added to ldap entry - * remove are attributes which have to be removed from ldap entry - * modify are attributes which have to been modified in ldap entry - */ - function save_attributes() { - // Get Domain SID from name - $sambaDomains = search_domains($_SESSION['config']->get_domainSuffix()); - // Get Domain-SID from group SID - $domainSID = substr($this->attributes['sambaSID'][0], 0, strrpos($this->attributes['sambaSID'][0], "-")); - for ($i=0; $iSID) - $SID = $sambaDomains[$i]->SID; - $names = array_keys($this->rids); - $wrid=false; - for ($i=0; $iattributes['sambaSID'][0]==$SID."-".$this->rids[$names[$i]]) { - $wrid=true; - } - if (!$wrid) $this->attributes['sambaSID'][0] == $SID."-".($_SESSION[$this->base]->module['posixGroup']->attributes['gidNumber'][0]*2+1+$RIDbase); - $return = $_SESSION[$this->base]->save_module_attributes($this->attributes, $this->orig); - - return $return; - } - - function delete_attributes($post) { - return 0; - } /* Write variables into object and do some regexp checks */ @@ -237,89 +273,35 @@ class sambaGroupMapping extends baseModule { return 0; } - /* This function will create the html-page - * to show a page with all attributes. - * It will output a complete html-table + + /* This function returns an array with 3 entries: + * array( DN1 ('add' => array($attr), 'remove' => array($attr), 'modify' => array($attr)), DN2 .... ) + * DN is the DN to change. It may be possible to change several DNs, + * e.g. create a new user and add him to some groups via attribute memberUid + * add are attributes which have to be added to ldap entry + * remove are attributes which have to be removed from ldap entry + * modify are attributes which have to been modified in ldap entry */ - function display_html_attributes($post, $profile=false) { + function save_attributes() { // Get Domain SID from name $sambaDomains = search_domains($_SESSION['config']->get_domainSuffix()); // Get Domain-SID from group SID $domainSID = substr($this->attributes['sambaSID'][0], 0, strrpos($this->attributes['sambaSID'][0], "-")); - for ($i=0; $iname; - if ($domainSID==$sambaDomains[$i]->SID) { + for ($i=0; $iSID) $SID = $sambaDomains[$i]->SID; - $sel_domain = $sambaDomains[$i]->name; + $names = array_keys($this->rids); + $wrid=false; + for ($i=0; $iattributes['sambaSID'][0]==$SID."-".$this->rids[$names[$i]]) { + $wrid=true; } - } - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Display name') ), - 1 => array ( 'kind' => 'input', 'name' => 'displayName', 'type' => 'text', 'size' => '30', 'maxlength' => '50', 'value' => $this->attributes['displayName'][0]), - 2 => array ( 'kind' => 'help', 'value' => 'displayName' )); - - if (!$profile) { - $names = array_keys($this->rids); - $wrid=false; - for ($i=0; $iattributes['sambaSID'][0]==$SID."-".$this->rids[$names[$i]]) { - $selected[] = $names[$i]; - $wrid=true; - } - else $options[] = $names[$i]; - } - if ($wrid) $options[] = $_SESSION[$this->base]->module['posixGroup']->attributes['cn'][0]; - else $selected[] = $_SESSION[$this->base]->module['posixGroup']->attributes['cn'][0]; - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Windows group') ), - 1 => array ( 'kind' => 'select', 'name' => 'sambaSID', 'options' => $options, 'options_selected' => $selected), - 2 => array ( 'kind' => 'help', 'value' => 'sambaSID' )); - } - - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Domain') ), - 1 => array ( 'kind' => 'select', 'name' => 'sambaDomainName', 'options' => $sambaDomainNames, 'options_selected' => array ( $sel_domain ) ), - 2 => array ( 'kind' => 'help', 'value' => 'sambaDomainName' )); + if (!$wrid) $this->attributes['sambaSID'][0] == $SID."-".($_SESSION[$this->base]->module['posixGroup']->attributes['gidNumber'][0]*2+1+$RIDbase); + $return = $_SESSION[$this->base]->save_module_attributes($this->attributes, $this->orig); return $return; } - function display_html_delete($post) { - return 0; - } - - /** - * Returns a list of elements for the account profiles. - * - * @return profile elements - */ - function get_profileOptions() { - $return = array(); - // get list of domains - $sambaDomains = search_domains($_SESSION['config']->get_domainSuffix()); - $sambaDomainNames = array(); - for ($i = 0; $i < count($sambaDomains); $i++ ) { - // extract names - $sambaDomainNames[] = $sambaDomains[$i]->name; - } - // domain - $return[] = array ( - 0 => array('kind' => 'text', 'text' => _('Domain')), - 1 => array('kind' => 'select', 'name' => 'sambaDomainName', 'options' => $sambaDomainNames, 'options_selected' => array ()), - 2 => array('kind' => 'help', 'value' => 'sambaDomainName' )); - return $return; - } - - /* - * (non-PHPDoc) - * @see baseModule#get_pdfEntries - */ - function get_pdfEntries($account_type = "User") { - return array( 'sambaGroupMapping_gidNumber' => array('' . _('GID number') . '' . $this->attributes['gidNumber'][0] . ''), - 'sambaGroupMapping_sambaSID' => array('' . _('Windows group') . '' . $this->attributes['sambaSID'][0] . ''), - 'sambaGroupMapping_displayName' => array('' . _('Display name') . '' . $this->attributes['displayName'][0] . ''), - 'sambaGroupMapping_sambaGroupType' => array('' . _('Samba group type') . '' . $this->attributes['sambaGroupType'][0] . ''), - 'sambaGroupMapping_description' => array('' . _('Description') . '' . $this->attributes['description'][0] . '')); - } - } ?>