True, 'nonavbar' => True, 'currentapp' => 'admin', 'parent_page' => 'accounts.php', 'enable_sbox_class' => True ); include('../header.inc.php'); // creates the html for the user data function createPageBody($_account_id,$_userData='',$_errors='') { global $phpgw, $phpgw_info, $t; $t = CreateObject('phpgwapi.Template',PHPGW_APP_TPL); $t->set_unknowns('remove'); if ($phpgw_info['server']['ldap_extra_attributes'] && ($phpgw_info['server']['account_repository'] == 'ldap')) { $t->set_file(array('account' => 'account_form_ldap.tpl')); } else { $t->set_file(array('account' => 'account_form.tpl')); } $t->set_block('account','form','form'); $t->set_block('account','form_passwordinfo','form_passwordinfo'); $t->set_block('account','form_buttons_','form_buttons_'); $t->set_block('account','link_row','link_row'); print_debug('Type : '.gettype($_userData).'
_userData(size) = "'.$_userData.'"('.strlen($_userData).')'); if (is_array($_userData)) { $userData = Array(); $userData=$_userData; @reset($userData['account_groups']); while (list($key, $value) = @each($userData['account_groups'])) { $userGroups[$key]['account_id'] = $value; } $account = CreateObject('phpgwapi.accounts'); $allGroups = $account->get_list('groups'); } elseif(is_string($_userData) && $_userData=='') { $account = CreateObject('phpgwapi.accounts',$_account_id); $userData = $account->read_repository(); $userGroups = $account->memberships($_account_id); $allGroups = $account->get_list('groups'); if ($userData['expires'] == -1) { $userData['account_expires_month'] = 0; $userData['account_expires_day'] = 0; $userData['account_expires_year'] = 0; } else { $userData['account_expires_month'] = date('m',$userData['expires']); $userData['account_expires_day'] = date('d',$userData['expires']); $userData['account_expires_year'] = date('Y',$userData['expires']); } } $error_messages = ''; if ($_errors) { $error_messages = '
' . $phpgw->common->error_list($_errors) . '
'; } $var = Array( 'form_action' => $phpgw->link('/admin/editaccount.php','account_id='.$_account_id.'&old_loginid='.rawurlencode($userData['account_lid'])), 'error_messages' => $error_messages, 'th_bg' => $phpgw_info['theme']['th_bg'], 'tr_color1' => $phpgw_info['theme']['row_on'], 'tr_color2' => $phpgw_info['theme']['row_off'], 'lang_action' => lang('Edit user account'), 'lang_loginid' => lang('LoginID'), 'lang_account_active' => lang('Account active'), 'lang_password' => lang('Password'), 'lang_reenter_password' => lang('Re-Enter Password'), 'lang_lastname' => lang('Last Name'), 'lang_groups' => lang('Groups'), 'lang_expires' => lang('Expires'), 'lang_firstname' => lang('First Name'), 'lang_button' => lang('Save'), 'lang_file_space' => lang('File Space'), ); $t->set_var($var); $t->parse('form_buttons','form_buttons_',True); if ($phpgw_info['server']['ldap_extra_attributes']) { $lang_homedir = lang('home directory'); $lang_shell = lang('login shell'); $homedirectory = ''; $loginshell = ''; } else { $lang_homedir = ''; $lang_shell = ''; $homedirectory = ''; $loginshell = ''; } $_y = $phpgw->sbox->getyears('account_expires_year',$userData['account_expires_year'],date('Y'),date('Y')+10); $_m = $phpgw->sbox->getmonthtext('account_expires_month',$userData['account_expires_month']); $_d = $phpgw->sbox->getdays('account_expires_day',$userData['account_expires_day']); if (!$userData['file_space']) { $userData['file_space'] = $phpgw_info['server']['vfs_default_account_size_number'] . "-" . $phpgw_info['server']['vfs_default_account_size_type']; } $file_space_array = explode ("-", $userData['file_space']); $account_file_space_number = $file_space_array[0]; $account_file_space_type = $file_space_array[1]; $account_file_space_type_selected[$account_file_space_type] = "selected"; $account_file_space = ' '; $account_file_space_select =''; $t->set_var ('lang_file_space', "File space"); $t->set_var ('account_file_space', $account_file_space); $t->set_var ('account_file_space_select', $account_file_space_select); $var = Array( 'input_expires' => $phpgw->common->dateformatorder($_y,$_m,$_d,True), 'account_lid' => '', 'lang_homedir' => $lang_homedir, 'lang_shell' => $lang_shell, 'homedirectory' => $homedirectory, 'loginshell' => $loginshell, 'account_passwd' => $account_passwd, 'account_passwd_2' => $account_passwd_2, 'account_file_space' => $account_file_space, ); $t->set_var($var); $t->parse('password_fields','form_passwordinfo',True); if ($userData['status']) { $account_status = ''; } else { $account_status = ''; } $allAccounts; $userGroups; $groups_select = ''; // create list of available apps $i = 0; $apps = CreateObject('phpgwapi.applications',$_account_id); $db_perms = $apps->read_account_specific(); @reset($phpgw_info['apps']); $availableApps = $phpgw_info['apps']; @asort($availableApps); @reset($availableApps); while ($application = each($availableApps)) { if ($application[1]['enabled'] && $application[1]['status'] != 3) { $perm_display[$i]['appName'] = $application[0]; $perm_display[$i]['translatedName'] = $application[1]['title']; $i++; } } // create apps output @reset($db_perms); for ($i=0;$i%s', lang($perm_display[$i]['translatedName']), $perm_display[$i]['appName'], $checked); } $i++; $checked = ''; if ($userData['account_permissions'][$perm_display[$i]['appName']] || $db_perms[$perm_display[$i]['appName']]) { $checked = ' checked'; } if ($perm_display[$i]['translatedName']) { $part2 = sprintf('%s', lang($perm_display[$i]['translatedName']), $perm_display[$i]['appName'], $checked); } else { $part2 = ' '; } $appRightsOutput .= sprintf('%s%s',$phpgw_info['theme']['row_on'], $part1, $part2); } $var = Array( 'account_status' => $account_status, 'account_firstname' => '', 'account_lastname' => '', 'groups_select' => $groups_select, 'permissions_list' => $appRightsOutput ); $t->set_var($var); $phpgw->common->hook('edit_account'); echo $t->fp('out','form'); } // stores the userdata function saveUserData($_userData) { global $phpgw; $account = CreateObject('phpgwapi.accounts',$_userData['account_id']); $account->update_data($_userData); $account->save_repository(); if ($_userData['account_passwd']) { $auth = CreateObject('phpgwapi.auth'); $auth->change_password($old_passwd, $_userData['account_passwd'], $_userData['account_id']); } $apps = CreateObject('phpgwapi.applications',array(intval($_userData['account_id']),'u')); $apps->account_type = 'u'; $apps->account_id = $_userData['account_id']; $apps->account_apps = Array(Array()); if ($_userData['account_permissions']) { while($app = each($_userData['account_permissions'])) { if($app[1]) { $apps->add($app[0]); if(!$apps_before[$app[0]]) { $apps_after[] = $app[0]; } } } } $apps->save_repository(); $account = CreateObject('phpgwapi.accounts'); $allGroups = $account->get_list('groups'); if ($_userData['account_groups']) { reset($_userData['account_groups']); while (list($key,$value) = each($_userData['account_groups'])) { $newGroups[$value] = $value; } } $acl = CreateObject('phpgwapi.acl',$_userData['account_id']); reset($allGroups); while (list($key,$groupData) = each($allGroups)) { #print "$key,". $groupData['account_id'] ."
"; #print "$key,". $_userData['account_groups'][1] ."
"; if ($newGroups[$groupData['account_id']]) { $acl->add_repository('phpgw_group',$groupData['account_id'],$_userData['account_id'],1); } else { $acl->delete_repository('phpgw_group',$groupData['account_id'],$_userData['account_id']); } } $phpgw->session->delete_cache(intval($_userData['account_id'])); } // checks if the userdata are valid // returns FALSE if the data are correct // otherwise the error array function userDataInvalid(&$_userData) { global $phpgw,$phpgw_info; $totalerrors = 0; if ($phpgw_info['server']['account_repository'] == 'ldap' && ! $allow_long_loginids) { if (strlen($_userData['account_lid']) > 8) { $error[$totalerrors] = lang('The loginid can not be more then 8 characters'); $totalerrors++; } } if ($_userData['old_loginid'] != $_userData['account_lid']) { if ($phpgw->accounts->exists($_userData['account_lid'])) { $error[$totalerrors] = lang('That loginid has already been taken'); $totalerrors++; } } if ($_userData['account_passwd'] || $_userData['account_passwd_2']) { if ($_userData['account_passwd'] != $_userData['account_passwd_2']) { $error[$totalerrors] = lang('The two passwords are not the same'); $totalerrors++; } } if (!count($_userData['account_permissions']) && !count($_userData['account_groups'])) { $error[$totalerrors] = lang('You must add at least 1 permission or group to this account'); $totalerrors++; } if ($_userData['account_expires_month'] || $_userData['account_expires_day'] || $_userData['account_expires_year']) { if (! checkdate($_userData['account_expires_month'],$_userData['account_expires_day'],$_userData['account_expires_year'])) { $error[$totalerrors] = lang('You have entered an invalid expiration date'); $totalerrors++; } else { $_userData['expires'] = mktime(2,0,0,$_userData['account_expires_month'],$_userData['account_expires_day'],$_userData['account_expires_year']); } } else { $_userData['expires'] = -1; } $check_account_file_space = explode ("-", $_userData['file_space']); if (preg_match ("/\D/", $check_account_file_space[0])) { $error[$totalerrors++] = lang ('File space must be an integer'); } if ($totalerrors == 0) { return FALSE; } else { return $error; } } function section_item($pref_link='',$pref_text='', $bgcolor) { global $phpgw, $phpgw_info, $t; $t->set_var('row_link',$pref_link); $t->set_var('row_text',$pref_text); $t->set_var('tr_color',$bgcolor); $t->parse('rows','link_row',True); } // $file must be in the follow format: // $file = Array( // 'Login History' => array('/index.php','menuaction=admin.uiaccess_history.list') // ); // This allows extra data to be sent along function display_section($appname,$title,$file) { global $phpgw, $phpgw_info, $account_id; $i = 0; $color[1] = $phpgw_info['theme']['row_off']; $color[0] = $phpgw_info['theme']['row_on']; while(list($text,$_url) = each($file)) { list($url,$extra_data) = $_url; if ($extra_data) { $link = $phpgw->link($url,'account_id=' . $account_id . '&' . $extra_data); } else { $link = $phpgw->link($url,'account_id=' . $account_id); } section_item($link,lang($text),$color[$i%2]); $i++; } } // todo // not needed if i use the same file for new users too if (! $account_id) { Header('Location: ' . $phpgw->link('/admin/accounts.php')); } if ($submit) { $userData = array( 'account_lid' => $account_lid, 'firstname' => $account_firstname, 'lastname' => $account_lastname, 'account_passwd' => $account_passwd, 'status' => $account_status, 'old_loginid' => rawurldecode($old_loginid), 'account_id' => $account_id, 'account_passwd_2' => $account_passwd_2, 'account_groups' => $account_groups, 'account_permissions' => $account_permissions, 'homedirectory' => $homedirectory, 'loginshell' => $loginshell, 'account_expires_month' => $account_expires_month, 'account_expires_day' => $account_expires_day, 'account_expires_year' => $account_expires_year, 'file_space' => $account_file_space_number . "-" . $account_file_space_type, ); if (!$errors = userDataInvalid($userData)) { saveUserData($userData); Header('Location: ' . $phpgw->link('/admin/accounts.php', 'cd='.$cd)); $phpgw->common->phpgw_exit(); } else { $phpgw->common->phpgw_header(); echo parse_navbar(); createPageBody($userData['account_id'],$userData,$errors); $phpgw->common->phpgw_footer(); } } else { $phpgw->common->phpgw_header(); echo parse_navbar(); createPageBody($account_id); $phpgw->common->phpgw_footer(); } return; ///////////////////////////////////////////////////////////////////////////////////////// // // the old code // ///////////////////////////////////////////////////////////////////////////////////////// // The following sets any default preferences needed for new applications.. // This is smart enough to know if previous preferences were selected, use them. $pref = CreateObject('phpgwapi.preferences',intval($account_id)); $t = $pref->get_preferences(); $docommit = False; $after_apps = explode(':',$apps_after); for ($i=1;$icommon->hook_single('add_def_pref', $after_apps[$i]); $docommit = True; } } if ($docommit) { $pref->commit(); } // start including other admin tools while ($app = each($apps_after)) { $phpgw->common->hook_single('update_user_data', $app[0]); } $includedSomething = False; // start inlcuding other admin tools while($app = each($apps_after)) { $phpgw->common->hook_single('show_user_data', $app[0]); } ?>