diff --git a/lam/HISTORY b/lam/HISTORY
index 9f15c0ba..68922764 100644
--- a/lam/HISTORY
+++ b/lam/HISTORY
@@ -1,9 +1,12 @@
??? 0.5.rc3
+ - INFO messages no longer prevent changing to subpages of a module
- fixed bugs:
-> buttons on account page are better sorted
-> account module: some problems solved when used for user accounts
-> nisMailAlias: fixed missing RDN possibility
-> fixed conflicts when accounts were built with other base modules
+ -> Samba 2/3: setting allowed workstations failed
+ -> magic_quotes_gpc = Off prevented editing of accounts
18.08.2005 0.5.rc2
diff --git a/lam/docs/devel/modules-specification.htm b/lam/docs/devel/modules-specification.htm
index ec199b9e..2ac70e0c 100644
--- a/lam/docs/devel/modules-specification.htm
+++ b/lam/docs/devel/modules-specification.htm
@@ -745,27 +745,19 @@ is needed t interact with the user.
-This function processes user inputs. It checks user inputs. It also
+This function processes user input. It checks user input. It also
saves changes in attributes.
-$post is the $_POST
-array. Some attributes ar not part of a profile, e.g. uidNumber.
-If $profile
-is true attributes wich are not part of a profile won't be checked.
-LDAP attributes have to be stored in $this->attributes array. First
-index is the attribute name. Second
-index is an array of values of an attribute.
-This functions can return three different variables. When 0 is returned
-everything is ok. When a string is
-returned the string is the name of a subpage of the module. If it
+This functions can return two different variables. When 0 is returned
+everything is ok. If it
returns an array the array contains status
-messages. First Index is the attribute which has triggered a message.
-Second index is an array containing
-status message arrays.
+messages. First index is the attribute which has triggered a message.
+Second index is an array containing status message arrays.
This function must reset $this->triggered_messages when it wants to
display
status messages. This can be done with $this->triggered_messages =
array();
-
+$post is the $_POST
+array.
2.2.14. process_*
@@ -785,7 +777,7 @@ This function has the exact behavoir like process_attributes function.
* is the name of the subpage which
should be processed.
$post is the $_POST array. It
-is needed t interact with the user.
+is needed to interact with the user.
2.2.15. display_html_attributes($post)
@@ -981,21 +973,46 @@ height attribute for td elements
+Input buttons which should load a different subpage of a module must
+have a special name attribute:
+
+name => 'form_subpage_' . <module name> . '_' . <subpage name> . '_' . <button name>
+
+ - <module name>: name
+of this account module (e.g. 'posixAccount')
+ - <subpage name>:
+name of next subpage (e.g. 'attributes')
+ - <button name>: a
+name to distinguish buttons (e.g. 'ok'/'cancel'/'back')
+
+
+
+
Example:
array(
- array(
- array("kind" => "text", "text" => "This is an
+ 0 => array(
+ 0 => array("kind" => "text", "text" =>
+"This is an
example", "td" => array("colspan" => 3))
),
- array(
- array("kind" => "text", "text" => "Input:"),
- array("kind" => "input", "name" => "myinput",
+ 1 => array(
+ 0 => array("kind" => "text", "text" =>
+"Input:"),
+ 1 => array("kind" => "input", "name" =>
+"myinput",
"type" => "text"),
- array("kind" => "help", "value" => "42")
+ 2 => array("kind" => "help", "value" => "42")
+ ),
+
2 => array(
+ 0 => array("kind" => "input", "name" =>
+'form_subpage_myModule_attributes_back', "value" => _("Back"))
)
-)
+
)
diff --git a/lam/lib/modules.inc b/lam/lib/modules.inc
index 50a24ccd..03e024f9 100644
--- a/lam/lib/modules.inc
+++ b/lam/lib/modules.inc
@@ -806,7 +806,7 @@ class accountContainer {
$this->dn = $profile['ldap_suffix'][0];
}
$result = 0;
- }
+ }
// save account
if ($post['create']) {
$errors = $this->save_account();
@@ -814,9 +814,9 @@ class accountContainer {
$result = array($errors);
$stopProcessing = true;
}
- else $result = 'finish';
- }
+ else $this->subpage = 'finish';
}
+ }
if ($this->subpage=='finish') {
if ($post['createagain']) {
// Reset objects
@@ -832,24 +832,23 @@ class accountContainer {
// Add all required objects etc.
$this->new_account();
$result = 0;
- }
+ }
if ($post['backmain']) {
// Return to *-list
// *** fixme unset accountContainer in session
metaRefresh("../lists/list".$this->type."s.php");
exit;
- }
+ }
if ($post['outputpdf']) {
// Create / display PDf-file
createModulePDF(array($_SESSION[$this->base]), $post['pdfStructure']);
exit;
- }
}
}
- else $result = call_user_func(array(&$this->module[$this->order[$this->current_page]], 'process_'.$this->subpage), $post);
}
+ else $result = call_user_func(array(&$this->module[$this->order[$this->current_page]], 'process_'.$this->subpage), $post);
+ }
// change to next page
- if (is_string($result)) $this->subpage = $result; // go to subpage of current module
$errorsOccured = false;
if (is_array($result)) { // messages were returned, check for errors
$errorKeys = array_keys($result);
@@ -862,6 +861,19 @@ class accountContainer {
}
}
}
+ // go to subpage of current module
+ if (!$errorsOccured) {
+ $postKeys = array_keys($post);
+ for ($p = 0; $p < sizeof($postKeys); $p++) {
+ if (is_string($postKeys[$p]) && (strpos($postKeys[$p], 'form_subpage_' . $this->order[$this->current_page]) === 0)) {
+ $temp = substr($postKeys[$p], strlen($this->order[$this->current_page]) + 14);
+ $temp = explode('_', $temp);
+ if (sizeof($temp) == 2) {
+ $this->subpage = $temp[0];
+ }
+ }
+ }
+ }
if (is_int($result) || !$errorsOccured) { // numeric return value means to change to another module
if ($post['form_main_main']) {
$this->current_page = 0;
diff --git a/lam/lib/modules/inetOrgPerson.inc b/lam/lib/modules/inetOrgPerson.inc
index c1c7c0db..4931a263 100644
--- a/lam/lib/modules/inetOrgPerson.inc
+++ b/lam/lib/modules/inetOrgPerson.inc
@@ -552,7 +552,7 @@ class inetOrgPerson extends baseModule {
else {
$return[] = array(
0 => array('kind' => 'text', 'text' => _('Password') ),
- 1 => array('kind' => 'input', 'name' => 'changepass', 'type' => 'submit', 'value' => _('Change password')));
+ 1 => array('kind' => 'input', 'name' => 'form_subpage_inetOrgPerson_password_open', 'type' => 'submit', 'value' => _('Change password')));
}
$return[] = array(0 => array('kind' => 'text', 'td' => array('colspan' => 3)));
@@ -637,7 +637,7 @@ class inetOrgPerson extends baseModule {
* @param $post HTTP POST
*/
function process_password(&$post) {
- if ($post['back']) return 'attributes';
+ if ($post['form_subpage_inetOrgPerson_attributes_back']) return;
$messages = array();
if ($post['userPassword'] != $post['userPassword2']) {
$messages['userPassword'][] = $this->messages['userPassword'][0];
@@ -650,8 +650,7 @@ class inetOrgPerson extends baseModule {
$this->attributes['userPassword'][0] = $post['userPassword'];
}
}
- if (sizeof($messages) > 0) return $messages;
- else return 'attributes';
+ return $messages;
}
/**
@@ -671,8 +670,8 @@ class inetOrgPerson extends baseModule {
$return[] = array(
0 => array('kind' => 'table', 'value' => array(
0 => array(
- 0 => array('kind' => 'input', 'type' => 'submit', 'value' => _('Submit'), 'name' => 'submit'),
- 1 => array('kind' => 'input', 'type' => 'submit', 'value' => _('Back'), 'name' => 'back'),
+ 0 => array('kind' => 'input', 'type' => 'submit', 'value' => _('Submit'), 'name' => 'form_subpage_inetOrgPerson_attributes_submit'),
+ 1 => array('kind' => 'input', 'type' => 'submit', 'value' => _('Back'), 'name' => 'form_subpage_inetOrgPerson_attributes_back'),
2 => array('kind' => 'text')))));
return $return;
}
diff --git a/lam/lib/modules/kolabUser.inc b/lam/lib/modules/kolabUser.inc
index bc86132b..c146f956 100644
--- a/lam/lib/modules/kolabUser.inc
+++ b/lam/lib/modules/kolabUser.inc
@@ -423,7 +423,7 @@ class kolabUser extends baseModule {
// delete flag
if (!$_SESSION[$this->base]->isNewAccount) {
$returnDelete = array(
- 0 => array('kind' => 'input', 'type' => 'submit', 'value' => _('Mark account for deletion'), 'name' => 'kolabDelete'),
+ 0 => array('kind' => 'input', 'type' => 'submit', 'value' => _('Mark account for deletion'), 'name' => 'form_subpage_kolabUser_deleteUser_open'),
1 => array('kind' => 'help', 'value' => 'deleteFlag'));
$return[] = array(
array('kind' => 'fieldset', 'legend' => _('Delete Kolab account'), 'value' => array($returnDelete), 'td' => array('colspan' => 3))
@@ -438,7 +438,7 @@ class kolabUser extends baseModule {
* @param array $post HTTP-POST values
*/
function process_attributes(&$post) {
- if ($post['kolabDelete']) return 'deleteUser';
+ if ($post['form_subpage_kolabUser_deleteUser_open']) return;
$this->triggered_messages = array();
$this->attributes['kolabInvitationPolicy'] = array();
// country
@@ -598,8 +598,8 @@ class kolabUser extends baseModule {
$return[] = array(
0 => array('kind' => 'text', 'text' => ' ', 'td' => array('colspan' => 2)));
$return[] = array(
- 0 => array('kind' => 'input', 'type' => 'submit', 'value' => _('Mark account for deletion'), 'name' => 'kolabDeleteConfirm'),
- 1 => array('kind' => 'input', 'type' => 'submit', 'value' => _('Cancel'), 'name' => 'kolabDeleteCancel'));
+ 0 => array('kind' => 'input', 'type' => 'submit', 'value' => _('Mark account for deletion'), 'name' => 'form_subpage_kolabUser_attributes_confirm'),
+ 1 => array('kind' => 'input', 'type' => 'submit', 'value' => _('Cancel'), 'name' => 'form_subpage_kolabUser_attributes_cancel'));
return $return;
}
@@ -609,11 +609,10 @@ class kolabUser extends baseModule {
* @param array $post HTTP-POST values
*/
function process_deleteUser(&$post) {
- if ($post['kolabDeleteConfirm']) {
+ if ($post['form_subpage_kolabUser_attributes_confirm']) {
// set delete flag
$this->attributes['kolabDeleteflag'][0] = $this->attributes['kolabHomeServer'][0];
}
- return 'attributes';
}
/**
diff --git a/lam/lib/modules/posixAccount.inc b/lam/lib/modules/posixAccount.inc
index c235c760..25501cf7 100644
--- a/lam/lib/modules/posixAccount.inc
+++ b/lam/lib/modules/posixAccount.inc
@@ -817,20 +817,16 @@ class posixAccount extends baseModule {
if ($_SESSION[$this->base]->isNewAccount && !get_preg($this->attributes['userPassword'][0], 'password'))
$triggered_messages['userPassword'][] = $this->messages['userPassword'][1];
}
-
- $temp = $this->input_check();
- // TODO is this really OK?
- if (is_array($temp)) $triggered_messages = array_merge_recursive($triggered_messages, $temp);
- // Return error-messages
- if (count($triggered_messages)!=0) {
- $this->triggered_messages = $triggered_messages;
- return $triggered_messages;
- }
- else $this->triggered_messages = array();
- // Go to additional group page when no error did ocour and button was pressed
- if ($post['addgroup']) return 'group';
- if ($post['changepass']) return 'password';
- return 0;
+ $temp = $this->input_check();
+ // TODO is this really OK?
+ if (is_array($temp)) $triggered_messages = array_merge_recursive($triggered_messages, $temp);
+ // Return error-messages
+ if (count($triggered_messages)!=0) {
+ $this->triggered_messages = $triggered_messages;
+ return $triggered_messages;
+ }
+ else $this->triggered_messages = array();
+ return 0;
}
/* Write variables into object and do some regexp checks
@@ -850,7 +846,6 @@ class posixAccount extends baseModule {
}
} while(0);
if (isset($post['addgroups_button']) || isset($post['removegroups_button'])) return 'group';
- if ($post['back']) return 'attributes';
return 0;
}
@@ -860,7 +855,7 @@ class posixAccount extends baseModule {
* @param $post HTTP POST
*/
function process_password(&$post) {
- if ($post['back']) return 'attributes';
+ if ($post['form_subpage_posixAccount_attributes_back']) return;
$messages = array();
if ($post['userPassword'] != $post['userPassword2']) {
$messages['userPassword'][] = $this->messages['userPassword'][0];
@@ -877,7 +872,6 @@ class posixAccount extends baseModule {
}
}
if (sizeof($messages) > 0) return $messages;
- else return 'attributes';
}
/* This function will create the html-page
@@ -935,7 +929,7 @@ class posixAccount extends baseModule {
if ($_SESSION[$this->base]->type=='user') {
$return[] = array(
0 => array('kind' => 'text', 'text' => _('Additional groups')),
- 1 => array('kind' => 'input', 'name' => 'addgroup', 'type' => 'submit', 'value' => _('Edit groups')),
+ 1 => array('kind' => 'input', 'name' => 'form_subpage_posixAccount_group_open', 'type' => 'submit', 'value' => _('Edit groups')),
2 => array('kind' => 'help', 'value' => 'addgroup'));
$return[] = array(
0 => array('kind' => 'text', 'text' => _('Home directory').'*'),
@@ -960,7 +954,7 @@ class posixAccount extends baseModule {
else {
$return[] = array(
0 => array('kind' => 'text', 'text' => _('Password') ),
- 1 => array('kind' => 'input', 'name' => 'changepass', 'type' => 'submit', 'value' => _('Change password')));
+ 1 => array('kind' => 'input', 'name' => 'form_subpage_posixAccount_password_open', 'type' => 'submit', 'value' => _('Change password')));
}
$return[] = array(
0 => array('kind' => 'text', 'text' => _('Set no password')),
@@ -1038,7 +1032,7 @@ class posixAccount extends baseModule {
))));
$return[] = array(
- 0 => array('kind' => 'input', 'type' => 'submit', 'value' => _('Back'), 'name' => 'back'),
+ 0 => array('kind' => 'input', 'type' => 'submit', 'value' => _('Back'), 'name' => 'form_subpage_posixAccount_attributes_back'),
1 => array('kind' => 'text'),
2 => array('kind' => 'text'));
return $return;
@@ -1061,8 +1055,8 @@ class posixAccount extends baseModule {
$return[] = array(
0 => array('kind' => 'table', 'value' => array(
0 => array(
- 0 => array('kind' => 'input', 'type' => 'submit', 'value' => _('Submit'), 'name' => 'submit'),
- 1 => array('kind' => 'input', 'type' => 'submit', 'value' => _('Back'), 'name' => 'back'),
+ 0 => array('kind' => 'input', 'type' => 'submit', 'value' => _('Submit'), 'name' => 'form_subpage_posixAccount_attributes_submit'),
+ 1 => array('kind' => 'input', 'type' => 'submit', 'value' => _('Back'), 'name' => 'form_subpage_posixAccount_attributes_back'),
2 => array('kind' => 'text')))));
return $return;
}
diff --git a/lam/lib/modules/posixGroup.inc b/lam/lib/modules/posixGroup.inc
index d8d6cc5d..551d8fdc 100644
--- a/lam/lib/modules/posixGroup.inc
+++ b/lam/lib/modules/posixGroup.inc
@@ -175,7 +175,7 @@ class posixGroup extends baseModule {
2 => array ('kind' => 'help', 'value' => 'description'));
$return[] = array(
0 => array('kind' => 'text', 'text' => _("Group members").'*'),
- 1 => array('kind' => 'input', 'name' => 'adduser', 'type' => 'submit', 'value' => _('Edit members')),
+ 1 => array('kind' => 'input', 'name' => 'form_subpage_posixGroup_user_open', 'type' => 'submit', 'value' => _('Edit members')),
2 => array ('kind' => 'help', 'value' => 'adduser'));
if ($_SESSION[$this->base]->isNewAccount) {
$return[] = array(
@@ -190,7 +190,7 @@ class posixGroup extends baseModule {
else {
$return[] = array(
0 => array('kind' => 'text', 'text' => _('Password') ),
- 1 => array('kind' => 'input', 'name' => 'changepass', 'type' => 'submit', 'value' => _('Change password')));
+ 1 => array('kind' => 'input', 'name' => 'form_subpage_posixGroup_password_open', 'type' => 'submit', 'value' => _('Change password')));
}
$return[] = array(
0 => array('kind' => 'text', 'text' => _('Set no password')),
@@ -259,7 +259,7 @@ class posixGroup extends baseModule {
))));
$return[] = array(
- 0 => array('kind' => 'input', 'name' => 'toattributes' ,'type' => 'submit', 'value' => _('Back') ),
+ 0 => array('kind' => 'input', 'name' => 'form_subpage_posixGroup_attributes_back' ,'type' => 'submit', 'value' => _('Back') ),
1 => array('kind' => 'text'),
2 => array('kind' => 'text'));
return $return;
@@ -282,8 +282,8 @@ class posixGroup extends baseModule {
$return[] = array(
0 => array('kind' => 'table', 'value' => array(
0 => array(
- 0 => array('kind' => 'input', 'type' => 'submit', 'value' => _('Submit'), 'name' => 'submit'),
- 1 => array('kind' => 'input', 'type' => 'submit', 'value' => _('Back'), 'name' => 'back'),
+ 0 => array('kind' => 'input', 'type' => 'submit', 'value' => _('Submit'), 'name' => 'form_subpage_posixGroup_attributes_submit'),
+ 1 => array('kind' => 'input', 'type' => 'submit', 'value' => _('Back'), 'name' => 'form_subpage_posixGroup_attributes_back'),
2 => array('kind' => 'text')))));
return $return;
}
@@ -672,9 +672,6 @@ class posixGroup extends baseModule {
return $triggered_messages;
}
else $this->triggered_messages = array();
- // Go to additional group page when no error did ocour and button was pressed
- if ($post['adduser']) return 'user';
- if ($post['changepass']) return 'password';
return 0;
}
@@ -699,8 +696,6 @@ class posixGroup extends baseModule {
elseif (isset($post['removeusers']) && isset($post['removeusers_button'])) { // remove users from list
$this->attributes['memberUid'] = array_delete($post['removeusers'], $this->attributes['memberUid']);
}
- if (isset($post['adduser_button']) || isset($post['removeuser_button'])) return 'user';
- elseif ($post['toattributes']) return 'attributes';
return 0;
}
@@ -711,7 +706,7 @@ class posixGroup extends baseModule {
* @param $post HTTP POST
*/
function process_password(&$post) {
- if ($post['back']) return 'attributes';
+ if ($post['form_subpage_posixGroup_attributes_back']) return;
$messages = array();
if ($post['userPassword'] != $post['userPassword2']) {
$messages['userPassword'][] = $this->messages['userPassword'][0];
@@ -725,7 +720,6 @@ class posixGroup extends baseModule {
$this->userPassword_nopassword = false;
}
if (sizeof($messages) > 0) return $messages;
- else return 'attributes';
}
/* This function returns an array with 3 entries:
diff --git a/lam/lib/modules/sambaAccount.inc b/lam/lib/modules/sambaAccount.inc
index 088a23bd..3860adfe 100644
--- a/lam/lib/modules/sambaAccount.inc
+++ b/lam/lib/modules/sambaAccount.inc
@@ -487,10 +487,6 @@ class sambaAccount extends baseModule {
return $return;
}
- function delete_attributes($post) {
- return 0;
- }
-
/* Write variables into object and do some regexp checks
*/
function process_attributes(&$post) {
@@ -545,10 +541,10 @@ class sambaAccount extends baseModule {
$post['pwdCanChange_mon'], $post['pwdCanChange_day'], $post['pwdCanChange_yea']);
$this->attributes['pwdMustChange'][0] = mktime($post['pwdMustChange_h'], $post['pwdMustChange_m'], $post['pwdMustChange_s'],
$post['pwdMustChange_mon'], $post['pwdMustChange_day'], $post['pwdMustChange_yea']);
- $this->attributes['smbHome'][0] = stripslashes($post['smbHome']);
+ $this->attributes['smbHome'][0] = $post['smbHome'];
$this->attributes['homeDrive'][0] = $post['homeDrive'];
- $this->attributes['scriptPath'][0] = stripslashes($post['scriptPath']);
- $this->attributes['profilePath'][0] = stripslashes($post['profilePath']);
+ $this->attributes['scriptPath'][0] = $post['scriptPath'];
+ $this->attributes['profilePath'][0] = $post['profilePath'];
$rids = array_keys($this->rids);
$wrid = false;
for ($i=0; $iattributes['smbHome'][0] = str_replace('$user', $_SESSION[$this->base]->module['posixAccount']->attributes['uid'][0], $this->attributes['smbHome'][0]);
$this->attributes['smbHome'][0] = str_replace('$group', $_SESSION['cache']->getgrnam($_SESSION[$this->base]->module['posixAccount']->attributes['gidNumber'][0]), $this->attributes['smbHome'][0]);
- if ($this->attributes['smbHome'][0] != stripslashes($post['smbHome'])) $triggered_messages['smbHome'][] = $this->messages['homePath'][1];
+ if ($this->attributes['smbHome'][0] != $post['smbHome']) $triggered_messages['smbHome'][] = $this->messages['homePath'][1];
$this->attributes['scriptPath'][0] = str_replace('$user', $_SESSION[$this->base]->module['posixAccount']->attributes['uid'][0], $this->attributes['scriptPath'][0]);
$this->attributes['scriptPath'][0] = str_replace('$group', $_SESSION['cache']->getgrnam($_SESSION[$this->base]->module['posixAccount']->attributes['gidNumber'][0]), $this->attributes['scriptPath'][0]);
- if ($this->attributes['scriptPath'][0] != stripslashes($post['scriptPath'])) $triggered_messages['scriptPath'][] = $this->messages['logonScript'][1];
+ if ($this->attributes['scriptPath'][0] != $post['scriptPath']) $triggered_messages['scriptPath'][] = $this->messages['logonScript'][1];
$this->attributes['profilePath'][0] = str_replace('$user', $_SESSION[$this->base]->module['posixAccount']->attributes['uid'][0], $this->attributes['profilePath'][0]);
$this->attributes['profilePath'][0] = str_replace('$group', $_SESSION['cache']->getgrnam($_SESSION[$this->base]->module['posixAccount']->attributes['gidNumber'][0]), $this->attributes['profilePath'][0]);
- if ($this->attributes['profiletPath'][0] != stripslashes($post['profilePath'])) $triggered_messages['profilePath'][] = $this->messages['profilePath'][1];
+ if ($this->attributes['profiletPath'][0] != $post['profilePath']) $triggered_messages['profilePath'][] = $this->messages['profilePath'][1];
if ( (!$this->attributes['smbHome'][0]=='') && (!get_preg($this->attributes['smbHome'][0], 'UNC')))
$triggered_messages['smbHome'][] = $this->messages['homePath'][0];
if ( (!$this->attributes['scriptPath'][0]=='') && (!get_preg($this->attributes['scriptPath'][0], 'logonscript')))
@@ -624,7 +620,6 @@ class sambaAccount extends baseModule {
return $triggered_messages;
}
else $this->triggered_messages = array();
- if ($post['userWorkstations']) return 'userWorkstations';
return 0;
}
@@ -633,49 +628,46 @@ class sambaAccount extends baseModule {
function process_userWorkstations(&$post) {
// Load attributes
if ($_SESSION[$this->base]->type=='user') {
- do { // X-Or, only one if() can be true
- if (isset($post['availableUserWorkstations']) && isset($post['userWorkstations_add'])) { // Add workstations to list
- $temp = str_replace(' ', '', $this->attributes['userWorkstations'][0]);
- $workstations = explode (',', $temp);
- for ($i=0; $iattributes['userWorkstations'][0] = $workstations[0];
- for ($i=1; $iattributes['userWorkstations'][0] = $this->attributes['userWorkstations'][0] . "," . $workstations[$i];
- }
- break;
- }
- if (isset($post['userWorkstations']) && isset($post['userWorkstations_remove'])) { // remove // Add workstations from list
- // Put all workstations in array
- $temp = str_replace(' ', '', $this->attributes['userWorkstations'][0]);
- $workstations = explode (',', $temp);
- for ($i=0; $iattributes['userWorkstations'][0] = $workstations[0];
- for ($i=1; $iattributes['userWorkstations'][0] = $this->attributes['userWorkstations'][0] . "," . $workstations[$i];
- }
- break;
- }
- } while(0);
- if ($post['attributes']) return 'attributes';
+ if (isset($post['availableUserWorkstations']) && isset($post['userWorkstations_add'])) { // Add workstations to list
+ $temp = str_replace(' ', '', $this->attributes['userWorkstations'][0]);
+ $workstations = explode (',', $temp);
+ for ($i=0; $iattributes['userWorkstations'][0] = $workstations[0];
+ for ($i=1; $iattributes['userWorkstations'][0] = $this->attributes['userWorkstations'][0] . "," . $workstations[$i];
+ }
+ }
+ elseif (isset($post['userWorkstations']) && isset($post['userWorkstations_remove'])) { // remove // Add workstations from list
+ // Put all workstations in array
+ $temp = str_replace(' ', '', $this->attributes['userWorkstations'][0]);
+ $workstations = explode (',', $temp);
+ for ($i=0; $iattributes['userWorkstations'][0] = $workstations[0];
+ for ($i=1; $iattributes['userWorkstations'][0] = $this->attributes['userWorkstations'][0] . "," . $workstations[$i];
+ }
}
- return 0;
}
+ return 0;
+ }
/* This function will create the html-page
* to show a page with all attributes.
@@ -746,7 +738,7 @@ class sambaAccount extends baseModule {
1 => array ( 'kind' => 'input', 'type' => 'text', 'name' => 'scriptPath', 'size' => '20', 'maxlength' => '255', 'value' => $this->attributes['scriptPath'][0]),
2 => array ( 'kind' => 'help', 'value' => 'scriptPath' ));
$return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Samba workstations') ),
- 1 => array ( 'kind' => 'input', 'type' => 'submit', 'name' => 'userWorkstations', 'value' => _('Edit workstations')),
+ 1 => array ( 'kind' => 'input', 'type' => 'submit', 'name' => 'form_subpage_sambaAccount_userWorkstations_open', 'value' => _('Edit workstations')),
2 => array ( 'kind' => 'help', 'value' => 'userWorkstations' ));
$names = array_keys($this->rids);
@@ -780,7 +772,7 @@ class sambaAccount extends baseModule {
$return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Special user') ),
1 => array ( 'kind' => 'select', 'name' => 'rid', 'options' => $options, 'options_selected' => $selected),
2 => array ( 'kind' => 'help', 'value' => 'rid' ));
- }
+ }
$return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Domain') ),
1 => array ( 'kind' => 'input', 'type' => 'text', 'name' => 'domain', 'size' => '20', 'maxlength' => '255', 'value' => $this->attributes['domain'][0]),
2 => array ( 'kind' => 'help', 'value' => 'domain' ));
@@ -789,13 +781,9 @@ class sambaAccount extends baseModule {
$return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Reset password') ),
1 => array ( 'kind' => 'input', 'type' => 'submit', 'name' => 'ResetSambaPassword', 'value' => _('Submit')),
2 => array ( 'kind' => 'help', 'value' => 'ResetSambaPassword' ));
- }
+ }
return $return;
- }
-
- function display_html_delete(&$post) {
- return 0;
- }
+ }
/* This function will create the html-page
* to show a page with all attributes.
@@ -811,25 +799,24 @@ class sambaAccount extends baseModule {
$result = str_replace(' ', '', $this->attributes['userWorkstations'][0]);
$userWorkstations = explode (',', $result);
$availableUserWorkstations = array_delete($userWorkstations, $availableUserWorkstations);
- }
-
+ }
$return[] = array ( 0 => array ( 'kind' => 'fieldset', 'legend' => _("Allowed workstations"), 'value' =>
array ( 0 => array ( 0 => array ('kind' => 'fieldset', 'td' => array ('valign' => 'top'), 'legend' => _("Allowed workstations"), 'value' =>
- array ( 0 => array ( 0 => array ( 'kind' => 'select', 'name' => 'userWorkstations[]', 'size' => '15', 'multiple', 'options' => $userWorkstations)))),
+ array ( 0 => array ( 0 => array ( 'kind' => 'select', 'name' => 'userWorkstations', 'size' => '15', 'multiple' => true, 'options' => $userWorkstations)))),
1 => array ( 'kind' => 'table', 'value' => array ( 0 => array ( 0 => array ( 'kind' => 'input', 'type' => 'submit', 'name' => 'userWorkstations_add',
'value' => '<=')), 1 => array ( 0 => array ( 'kind' => 'input', 'type' => 'submit', 'name' => 'userWorkstations_remove', 'value' => '=>' )),
2 => array ( 0 => array ( 'kind' => 'help', 'value' => 'userWorkstations' )))),
2 => array ('kind' => 'fieldset', 'td' => array ('valign' => 'top'), 'legend' => _("Available workstations"), 'value' =>
- array ( 0 => array ( 0 => array ( 'kind' => 'select', 'name' => 'availableUserWorkstations[]', 'size' => '15', 'multiple', 'options' => $availableUserWorkstations))))
+ array ( 0 => array ( 0 => array ( 'kind' => 'select', 'name' => 'availableUserWorkstations', 'size' => '15', 'multiple' => true, 'options' => $availableUserWorkstations))))
))));
- $return[] = array ( 0 => array ( 'kind' => 'input', 'type' => 'submit', 'value' => _('Back') ),
- 1 => array ( 'kind' => 'text'),
- 2 => array ('kind' => 'text'));
- }
-
- return $return;
+ $return[] = array(
+ 0 => array('kind' => 'input', 'type' => 'submit', 'name' => 'form_subpage_sambaAccount_attributes_back', 'value' => _('Back')),
+ 1 => array('kind' => 'text'),
+ 2 => array('kind' => 'text'));
}
+ return $return;
+ }
/*
* (non-PHPDoc)
diff --git a/lam/lib/modules/sambaSamAccount.inc b/lam/lib/modules/sambaSamAccount.inc
index fc368402..24330d06 100644
--- a/lam/lib/modules/sambaSamAccount.inc
+++ b/lam/lib/modules/sambaSamAccount.inc
@@ -537,10 +537,10 @@ class sambaSamAccount extends baseModule {
$post['sambaPwdCanChange_mon'], $post['sambaPwdCanChange_day'], $post['sambaPwdCanChange_yea']);
$this->attributes['sambaPwdMustChange'][0] = mktime($post['sambaPwdMustChange_h'], $post['sambaPwdMustChange_m'], $post['sambaPwdMustChange_s'],
$post['sambaPwdMustChange_mon'], $post['sambaPwdMustChange_day'], $post['sambaPwdMustChange_yea']);
- $this->attributes['sambaHomePath'][0] = stripslashes($post['sambaHomePath']);
+ $this->attributes['sambaHomePath'][0] = $post['sambaHomePath'];
$this->attributes['sambaHomeDrive'][0] = $post['sambaHomeDrive'];
- $this->attributes['sambaLogonScript'][0] = stripslashes($post['sambaLogonScript']);
- $this->attributes['sambaProfilePath'][0] = stripslashes($post['sambaProfilePath']);
+ $this->attributes['sambaLogonScript'][0] = $post['sambaLogonScript'];
+ $this->attributes['sambaProfilePath'][0] = $post['sambaProfilePath'];
$rids = array_keys($this->rids);
$wrid = false;
for ($i=0; $iattributes['sambaHomePath'][0] = str_replace('$user', $_SESSION[$this->base]->module['posixAccount']->attributes['uid'][0], $this->attributes['sambaHomePath'][0]);
$this->attributes['sambaHomePath'][0] = str_replace('$group', $_SESSION['cache']->getgrnam($_SESSION[$this->base]->module['posixAccount']->attributes['gidNumber'][0]), $this->attributes['sambaHomePath'][0]);
- if ($this->attributes['sambaHomePath'][0] != stripslashes($post['sambaHomePath'])) $triggered_messages['sambaHomePath'][] = $this->messages['homePath'][1];
+ if ($this->attributes['sambaHomePath'][0] != $post['sambaHomePath']) $triggered_messages['sambaHomePath'][] = $this->messages['homePath'][1];
$this->attributes['sambaLogonScript'][0] = str_replace('$user', $_SESSION[$this->base]->module['posixAccount']->attributes['uid'][0], $this->attributes['sambaLogonScript'][0]);
$this->attributes['sambaLogonScript'][0] = str_replace('$group', $_SESSION['cache']->getgrnam($_SESSION[$this->base]->module['posixAccount']->attributes['gidNumber'][0]), $this->attributes['sambaLogonScript'][0]);
- if ($this->attributes['sambaLogonScript'][0] != stripslashes($post['sambaLogonScript'])) $triggered_messages['sambaLogonScript'][] = $this->messages['logonScript'][1];
+ if ($this->attributes['sambaLogonScript'][0] != $post['sambaLogonScript']) $triggered_messages['sambaLogonScript'][] = $this->messages['logonScript'][1];
$this->attributes['sambaProfilePath'][0] = str_replace('$user', $_SESSION[$this->base]->module['posixAccount']->attributes['uid'][0], $this->attributes['sambaProfilePath'][0]);
$this->attributes['sambaProfilePath'][0] = str_replace('$group', $_SESSION['cache']->getgrnam($_SESSION[$this->base]->module['posixAccount']->attributes['gidNumber'][0]), $this->attributes['sambaProfilePath'][0]);
- if ($this->attributes['sambaProfilePath'][0] != stripslashes($post['sambaProfilePath'])) $triggered_messages['sambaProfilePath'][] = $this->messages['profilePath'][1];
+ if ($this->attributes['sambaProfilePath'][0] != $post['sambaProfilePath']) $triggered_messages['sambaProfilePath'][] = $this->messages['profilePath'][1];
if ( (!$this->attributes['sambaHomePath'][0]=='') && (!get_preg($this->attributes['sambaHomePath'][0], 'UNC')))
$triggered_messages['sambaHomePath'][] = $this->messages['homePath'][0];
if ( (!$this->attributes['sambaLogonScript'][0]=='') && (!get_preg($this->attributes['sambaLogonScript'][0], 'logonscript')))
@@ -626,10 +626,8 @@ class sambaSamAccount extends baseModule {
return $triggered_messages;
}
else $this->triggered_messages = array();
- if ($post['sambaUserWorkstations']) return 'sambaUserWorkstations';
- if ($post['logonHours']) return 'logonHours';
return 0;
- }
+ }
/* Write variables into object and do some regexp checks
*/
@@ -675,10 +673,9 @@ class sambaSamAccount extends baseModule {
break;
}
} while(0);
- if ($post['attributes']) return 'attributes';
}
return 0;
- }
+ }
/**
* Save logon hours
@@ -687,7 +684,7 @@ class sambaSamAccount extends baseModule {
* @return string next page name (attributes or logonHours)
*/
function process_logonHours(&$post) {
- if ($post['abort']) return 'attributes';
+ if ($post['form_subpage_sambaSamAccount_attributes_abort']) return;
// set new logon hours
$logonHours = '';
for ($i = 0; $i < 7; $i++) {
@@ -712,7 +709,6 @@ class sambaSamAccount extends baseModule {
$logonHoursNew = $logonHoursNew . $hex;
}
$this->attributes['sambaLogonHours'][0] = $logonHoursNew;
- if ($post['submit']) return 'attributes';
}
/* This function will create the html-page
@@ -794,7 +790,7 @@ class sambaSamAccount extends baseModule {
1 => array ( 'kind' => 'input', 'type' => 'text', 'name' => 'sambaLogonScript', 'size' => '20', 'maxlength' => '255', 'value' => $this->attributes['sambaLogonScript'][0]),
2 => array ( 'kind' => 'help', 'value' => 'sambaLogonScript' ));
$return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Samba workstations') ),
- 1 => array ( 'kind' => 'input', 'type' => 'submit', 'name' => 'sambaUserWorkstations', 'value' => _('Edit workstations')),
+ 1 => array ( 'kind' => 'input', 'type' => 'submit', 'name' => 'form_subpage_sambaSamAccount_sambaUserWorkstations_open', 'value' => _('Edit workstations')),
2 => array ( 'kind' => 'help', 'value' => 'sambaUserWorkstations' ));
$names = array_keys($this->rids);
@@ -836,7 +832,7 @@ class sambaSamAccount extends baseModule {
// logon hours
if ($_SESSION[$this->base]->type=='user') {
$return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Logon hours') ),
- 1 => array ( 'kind' => 'input', 'type' => 'submit', 'name' => 'logonHours', 'value' => _('Edit logon hours')),
+ 1 => array ( 'kind' => 'input', 'type' => 'submit', 'name' => 'form_subpage_sambaSamAccount_logonHours_open', 'value' => _('Edit logon hours')),
2 => array ( 'kind' => 'help', 'value' => 'logonHours' ));
}
// reset host password
@@ -849,10 +845,6 @@ class sambaSamAccount extends baseModule {
return $return;
}
- function display_html_delete(&$post) {
- return 0;
- }
-
/* This function will create the html-page
* to show a page with all attributes.
* It will output a complete html-table
@@ -869,17 +861,17 @@ class sambaSamAccount extends baseModule {
$availableUserWorkstations = array_delete($userWorkstations, $availableUserWorkstations);
}
- $return[] = array ( 0 => array ( 'kind' => 'fieldset', 'legend' => _("Allowed workstations"), 'value' =>
+ $return[] = array( 0 => array ( 'kind' => 'fieldset', 'legend' => _("Allowed workstations"), 'value' =>
array ( 0 => array ( 0 => array ('kind' => 'fieldset', 'td' => array ('valign' => 'top'), 'legend' => _("Allowed workstations"), 'value' =>
- array ( 0 => array ( 0 => array ( 'kind' => 'select', 'name' => 'sambaUserWorkstations[]', 'size' => '15', 'multiple', 'options' => $userWorkstations)))),
+ array ( 0 => array ( 0 => array ( 'kind' => 'select', 'name' => 'sambaUserWorkstations', 'size' => '15', 'multiple' => true, 'options' => $userWorkstations)))),
1 => array ( 'kind' => 'table', 'value' => array ( 0 => array ( 0 => array ( 'kind' => 'input', 'type' => 'submit', 'name' => 'sambaUserWorkstations_add',
'value' => '<=')), 1 => array ( 0 => array ( 'kind' => 'input', 'type' => 'submit', 'name' => 'sambaUserWorkstations_remove', 'value' => '=>' )),
2 => array ( 0 => array ( 'kind' => 'help', 'value' => 'sambaUserWorkstations' )))),
2 => array ('kind' => 'fieldset', 'td' => array ('valign' => 'top'), 'legend' => _("Available workstations"), 'value' =>
- array ( 0 => array ( 0 => array ( 'kind' => 'select', 'name' => 'availableSambaUserWorkstations[]', 'size' => '15', 'multiple', 'options' => $availableUserWorkstations))))
+ array ( 0 => array ( 0 => array ( 'kind' => 'select', 'name' => 'availableSambaUserWorkstations', 'size' => '15', 'multiple' => true, 'options' => $availableUserWorkstations))))
))));
- $return[] = array ( 0 => array ( 'kind' => 'input', 'type' => 'submit', 'value' => _('Back') ),
+ $return[] = array ( 0 => array ( 'kind' => 'input', 'name' => 'form_subpage_sambaSamAccount_attributes_back', 'type' => 'submit', 'value' => _('Back') ),
1 => array ( 'kind' => 'text'),
2 => array ('kind' => 'text'));
}
@@ -953,8 +945,8 @@ class sambaSamAccount extends baseModule {
array_unshift($timezones, 'GMT-' . $t);
}
$return[] = array(
- 0 => array('kind' => 'input', 'name' => 'submit', 'type' => 'submit', 'value' => _('Submit'), 'td' => array('align' => 'right')),
- 1 => array('kind' => 'input', 'name' => 'abort', 'type' => 'submit', 'value' => _('Abort'), 'td' => array('align' => 'left')),
+ 0 => array('kind' => 'input', 'name' => 'form_subpage_sambaSamAccount_attributes_submit', 'type' => 'submit', 'value' => _('Submit'), 'td' => array('align' => 'right')),
+ 1 => array('kind' => 'input', 'name' => 'form_subpage_sambaSamAccount_attributes_abort', 'type' => 'submit', 'value' => _('Abort'), 'td' => array('align' => 'left')),
2 => array('kind' => 'text', 'td' => array('colspan' => 2)),
3 => array('kind' => 'table', 'td' => array('colspan' => 4, 'align' => 'right'), 'value' => array(0 => array(
0 => array('kind' => 'text', 'text' => _('Time zone')),
diff --git a/lam/templates/account/edit.php b/lam/templates/account/edit.php
index 16284589..4a2f0abc 100644
--- a/lam/templates/account/edit.php
+++ b/lam/templates/account/edit.php
@@ -67,10 +67,18 @@ if ($_GET['DN']) {
else if (count($_POST)==0) {
$type = str_replace("\'", '', $_GET['type']);
if ($_GET['type'] == $type) $type = str_replace("'", '',$_GET['type']);
- if ($_GET['DN'] == $DN) $DN = str_replace("'", '',$_GET['DN']);
$_SESSION['account'] = new accountContainer($type, 'account');
$_SESSION['account']->new_account();
}
+
+// remove double slashes if magic quotes are on
+if (get_magic_quotes_gpc() == 1) {
+ $postKeys = array_keys($_POST);
+ for ($i = 0; $i < sizeof($postKeys); $i++) {
+ if (is_string($_POST[$postKeys[$i]])) $_POST[$postKeys[$i]] = stripslashes($_POST[$postKeys[$i]]);
+ }
+}
+
// show account page
$_SESSION['account']->continue_main($_POST);