diff --git a/lam/lib/modules.inc b/lam/lib/modules.inc index 3a02bcb8..d9f75374 100644 --- a/lam/lib/modules.inc +++ b/lam/lib/modules.inc @@ -567,7 +567,7 @@ class accountContainer { if ($function) $errors['saveProfile'][] = array('INFO', _('Save profile'), _('New profile created.')); else $errors['saveProfile'][] = array('ERROR', _('Save profile'), _('Wrong profilename given.')); } - if (is_array($errors) && !$profile) $result = $errors; + if (is_array($errors)) $result = $errors; else $result = 0; } } @@ -670,69 +670,63 @@ class accountContainer { if ($this->subpage=='attributes') { $modules = array_keys($this->module); $table = array(); - if (!$profile) { - $disabled = false; - foreach ($modules as $module) { - if (!$this->module[$module]->module_complete()) { - $disabled = true; - $table[] = array ( 0 => array ( 'kind' => 'message', 'type' => 'ERROR', 'headline' => _('Check module'), - 'text' => sprintf(_('Please set up all required attributes on %s page.'), $this->module[$module]->get_alias()) )); - } - } - } - - if (count($table)!=0) $return[] = array ( 0 => array ( 'kind' => 'table', 'value' => $table ) ); - // loop through all suffixes - $rootsuffix = call_user_func(array(&$_SESSION['config'], 'get_' . ucfirst($this->type) . 'Suffix')); - foreach ($_SESSION['ldap']->search_units($rootsuffix) as $suffix) { - if ($this->dn == $suffix) $option_selected = $suffix; - $suffixes[] = $suffix; - } - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Suffix') ), - 1 => array ( 'kind' => 'select', 'name' => 'suffix', 'options' => $suffixes, - 'option_selected' => array($option_selected) ), - 2 => array ('kind' => 'help', 'value' => 'suffix')); - - if (!$profile) { - // Get list of profiles - $profilelist = getAccountProfiles($this->type); - if (count($profilelist)!=0) { - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _("Load profile") ), - 1 => array ( 'kind' => 'select', 'name' => 'selectLoadProfile', 'options' => $profilelist ), - 2 => array ('kind' => 'help', 'value' => 'selectLoadProfile')); - } - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _("Save profile") ), - 1 => array ( 'kind' => 'table', 'value' => array ( 0 => array ( - 0 => array ( 'kind' => 'input', 'name' => 'selectSaveProfile', 'type' => 'text', 'size' => '30', - 'maxlength' => '255', ), - 1 => array ('kind' => 'input', 'name' => 'saveProfile', 'type' => 'submit', - 'value' => _('Save profile'), 'disabled' => $disabled))) ), - 2 => array ('kind' => 'help', 'value' => 'saveProfile')); - if ($this->dn_orig!='') $text = _('Modify Account'); - else $text = _('Create Account'); - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => $text ), - 1 => array ( 'kind' => 'input', 'type' => 'submit', 'name' => 'create', 'value' => $text ), - 2 => array ('kind' => 'help', 'value' => 'create')); + $disabled = false; + foreach ($modules as $module) { + if (!$this->module[$module]->module_complete()) { + $disabled = true; + $table[] = array ( 0 => array ( 'kind' => 'message', 'type' => 'ERROR', 'headline' => _('Check module'), + 'text' => sprintf(_('Please set up all required attributes on %s page.'), $this->module[$module]->get_alias()) )); + } } } + + if (count($table)!=0) $return[] = array ( 0 => array ( 'kind' => 'table', 'value' => $table ) ); + // loop through all suffixes + $rootsuffix = call_user_func(array(&$_SESSION['config'], 'get_' . ucfirst($this->type) . 'Suffix')); + foreach ($_SESSION['ldap']->search_units($rootsuffix) as $suffix) { + if ($this->dn == $suffix) $option_selected = $suffix; + $suffixes[] = $suffix; + } + $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Suffix') ), + 1 => array ( 'kind' => 'select', 'name' => 'suffix', 'options' => $suffixes, + 'option_selected' => array($option_selected) ), + 2 => array ('kind' => 'help', 'value' => 'suffix')); + + // Get list of profiles + $profilelist = getAccountProfiles($this->type); + if (count($profilelist)!=0) { + $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _("Load profile") ), + 1 => array ( 'kind' => 'select', 'name' => 'selectLoadProfile', 'options' => $profilelist ), + 2 => array ('kind' => 'help', 'value' => 'selectLoadProfile')); + } + $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _("Save profile") ), + 1 => array ( 'kind' => 'table', 'value' => array ( 0 => array ( + 0 => array ( 'kind' => 'input', 'name' => 'selectSaveProfile', 'type' => 'text', 'size' => '30', + 'maxlength' => '255', ), + 1 => array ('kind' => 'input', 'name' => 'saveProfile', 'type' => 'submit', + 'value' => _('Save profile'), 'disabled' => $disabled))) ), + 2 => array ('kind' => 'help', 'value' => 'saveProfile')); + if ($this->dn_orig!='') $text = _('Modify Account'); + else $text = _('Create Account'); + $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => $text ), + 1 => array ( 'kind' => 'input', 'type' => 'submit', 'name' => 'create', 'value' => $text ), + 2 => array ('kind' => 'help', 'value' => 'create')); if ($this->subpage=='finish') { // Show success message if ($this->dn_orig=='') $kind = _('created'); else $kind = _('modified'); $text = sprintf(_('%s has been %s.'), ucfirst($this->type), $kind); - if (!$profile) { - $return[] = array ( 0 => array ( 'kind' => 'message', 'type' => 'INFO', 'headline' => _('LDAP operation successful.'), - 'text' => $text )); - - $return[] = array ( 0 => array ( 'kind' => 'input', 'type' => 'submit', 'name' => 'createagain', - 'value' => sprintf(_('Create another %s'), $this->type) ), - 1 => array ( 'kind' => 'input', 'type' => 'submit', 'name' => 'outputpdf', - 'value' => _('Create PDF file') ), - 2 => array ( 'kind' => 'input', 'type' => 'submit', 'name' => 'backmain', - 'value' => sprintf (_('Back to %s list'), $this->type) )); - } + $return[] = array ( 0 => array ( 'kind' => 'message', 'type' => 'INFO', 'headline' => _('LDAP operation successful.'), + 'text' => $text )); + + $return[] = array ( 0 => array ( 'kind' => 'input', 'type' => 'submit', 'name' => 'createagain', + 'value' => sprintf(_('Create another %s'), $this->type) ), + 1 => array ( 'kind' => 'input', 'type' => 'submit', 'name' => 'outputpdf', + 'value' => _('Create PDF file') ), + 2 => array ( 'kind' => 'input', 'type' => 'submit', 'name' => 'backmain', + 'value' => sprintf (_('Back to %s list'), $this->type) )); } - } + } else $return = call_user_func(array($this->module[$this->order[$this->current_page]], 'display_html_'.$this->subpage), &$post); $this->parse_html($this->order[$this->current_page], $return); // Display rest of html-page diff --git a/lam/lib/modules/posixAccount.inc b/lam/lib/modules/posixAccount.inc index 9f24d4fb..0a1ac941 100644 --- a/lam/lib/modules/posixAccount.inc +++ b/lam/lib/modules/posixAccount.inc @@ -431,7 +431,23 @@ class posixAccount extends baseModule { */ function save_attributes() { $return = $_SESSION[$this->base]->save_module_attributes($this->attributes, $this->orig); - + // fill gecos with correct attributes frm inetOrgPerson when they are set + // TODO do we have t use 7bit ascci only? + // TODO change gecos evertime something in inetOrgPerson has changes + if (isset($_SESSION[$this->base]->modules['inetOrgPerson'])) { + if (isset($return[$_SESSION[$this->base]->dn]['add']['gecos'])) + $return[$_SESSION[$this->base]->dn]['add']['gecos'] = $_SESSION[$this->base]->modules['inetOrgPerson']->attributes['givenName'][0] . + " " . $_SESSION[$this->base]->modules['inetOrgPerson']->attributes['sn'][0] . "," . + $_SESSION[$this->base]->modules['inetOrgPerson']->attributes['roomNumber'][0] . "," . + $_SESSION[$this->base]->modules['inetOrgPerson']->attributes['telephoneNumber'][0] . "," . + $_SESSION[$this->base]->modules['inetOrgPerson']->attributes['homePhone'][0] ; + if (isset($return[$_SESSION[$this->base]->dn]['modify']['gecos'])) + $return[$_SESSION[$this->base]->dn]['modify']['gecos'] = $_SESSION[$this->base]->modules['inetOrgPerson']->attributes['givenName'][0] . + " " . $_SESSION[$this->base]->modules['inetOrgPerson']->attributes['sn'][0] . "," . + $_SESSION[$this->base]->modules['inetOrgPerson']->attributes['roomNumber'][0] . "," . + $_SESSION[$this->base]->modules['inetOrgPerson']->attributes['telephoneNumber'][0] . "," . + $_SESSION[$this->base]->modules['inetOrgPerson']->attributes['homePhone'][0] ; + } // unset password when needed if (isset($return[$_SESSION[$this->base]->dn]['add']['userPassword'])) unset($return[$_SESSION[$this->base]->dn]['add']['userPassword']); @@ -545,7 +561,7 @@ class posixAccount extends baseModule { function proccess_attributes($post) { $this->attributes['homeDirectory'][0] = $post['homeDirectory']; $this->attributes['loginShell'][0] = $post['loginShell']; - $this->attributes['gecos'][0] = $post['gecos']; + if (isset($post['gecos'])) $this->attributes['gecos'][0] = $post['gecos']; if ($post['createhomedir']) $this->createhomedir = true; else $this->createhomedir = false; if ($this->orig['uid'][0]!='' && $post['uid']!=$this->attributes['uid'][0]) @@ -773,9 +789,11 @@ class posixAccount extends baseModule { $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('UID number').'*' ), 1 => array ( 'kind' => 'input', 'name' => 'uidNumber', 'type' => 'text', 'size' => '6', 'maxlength' => '6', 'value' => $this->attributes['uidNumber'][0]), 2 => array ('kind' => 'help', 'value' => 'uidNumber')); - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Gecos') ), - 1 => array ( 'kind' => 'input', 'name' => 'gecos', 'type' => 'text', 'size' => '30', 'maxlength' => '255', 'value' => $this->attributes['gecos'][0]), - 2 => array ('kind' => 'help', 'value' => 'gecos')); + if (!isset($_SESSION[$this->base]->modules['inetOrgPerson'])) { + $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Gecos') ), + 1 => array ( 'kind' => 'input', 'name' => 'gecos', 'type' => 'text', 'size' => '30', 'maxlength' => '255', 'value' => $this->attributes['gecos'][0]), + 2 => array ('kind' => 'help', 'value' => 'gecos')); + } $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Primary group').'*' ), 1 => array ( 'kind' => 'select', 'name' => 'gidNumber', 'options' => $groups, 'options_selected' => array ($_SESSION['cache']->getgrnam($this->attributes['gidNumber'][0]))),