True, "nonavbar" => True, "currentapp" => "admin", "parent_page" => "accounts.php" ); include("../header.inc.php"); include($phpgw_info["server"]["app_inc"]."/accounts_".$phpgw_info["server"]["account_repository"].".inc.php"); // creates the html for the user data function createPageBody($_account_id,$_userData='',$_errors='') { global $phpgw,$phpgw_info; $t = new Template($phpgw->common->get_tpl_dir("admin")); $t->set_file(array("form" => "account_form.tpl")); $account = CreateObject('phpgwapi.accounts',$_account_id); $userData = $account->read_repository(); $t->set_var("form_action",$phpgw->link("editaccount.php", "account_id=$_account_id&old_loginid=".rawurlencode($userData['account_lid']))); if ($_errors) { $t->set_var("error_messages","
" . $phpgw->common->error_list($_errors) . "
"); } else { $t->set_var("error_messages",""); } $t->set_var("th_bg",$phpgw_info["theme"]["th_bg"]); $t->set_var("tr_color1",$phpgw_info["theme"]["row_on"]); $t->set_var("tr_color2",$phpgw_info["theme"]["row_off"]); $t->set_var("lang_action",lang("Edit user account")); $t->set_var("lang_loginid",lang("LoginID")); $t->set_var("lang_account_active",lang("Account active")); $t->set_var("lang_password",lang("Password")); $t->set_var("lang_reenter_password",lang("Re-Enter Password")); $t->set_var("lang_lastname",lang("Last Name")); $t->set_var("lang_groups",lang("Groups")); $t->set_var("lang_firstname",lang("First Name")); $t->set_var("lang_button",lang('Save')); $t->set_var("n_loginid_value",$userData["account_lid"]); $t->set_var("n_passwd_value",$n_passwd); $t->set_var("n_passwd_2_value",$n_passwd_2); if ($userData["status"]) { $t->set_var("account_checked","checked"); } else { $t->set_var("account_checked",""); } $t->set_var("n_firstname_value",$userData["firstname"]); $t->set_var("n_lastname_value",$userData["lastname"]); // create list of available app $i = 0; $availableApps = $phpgw_info["apps"]; @asort($availableApps); @reset($availableApps); while ($application = each($availableApps)) { if ($application[1]["enabled"]) { $perm_display[$i]['appName'] = $application[0]; $perm_display[$i]['translatedName'] = $application[1]["title"]; $i++; } } // create apps output $apps = CreateObject('phpgwapi.applications',intval($_account_id)); $db_perms = $apps->read_account_specific(); @reset($db_perms); for ($i=0;$i<=count($perm_display);$i++) { $checked = ""; if ($new_permissions[$perm_display[$i]['appName']] || $db_perms[$perm_display[$i]['appName']]) { $checked = " checked"; } if($perm_display[$i]['translatedName']) { $part1 = sprintf("%s", lang($perm_display[$i]['translatedName']), $perm_display[$i]['appName'], $checked); } $i++; $checked = ""; if ($new_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("$part1$part2\n",$phpgw_info["theme"]["row_on"]); } $t->set_var("permissions_list",$appRightsOutput); $t->pparse('out','form'); } // stores the userdata function saveUserData($_userData) { global $new_permissions; $account = CreateObject('phpgwapi.accounts',$_userData['account_id']); $account->update_data($_userData); $account->save_repository(); if ($_userData['passwd']) { $auth = CreateObject('phpgwapi.auth'); $auth->change_password($old_passwd, $_userData['passwd'], $_userData['account_id']); } $apps = CreateObject('phpgwapi.applications',array(intval($_userData['account_id']),'u')); # $apps->read_installed_apps(); # $apps_before = $apps->read_account_specific(); $apps->account_type = 'u'; $apps->account_id = $_userData['account_id']; $apps->account_apps = Array(Array()); while($app = each($new_permissions)) { if($app[1]) { $apps->add($app[0]); if(!$apps_before[$app[0]]) { $apps_after[] = $app[0]; } } } $apps->save_repository(); } // checks if the userdata are valid // returns FALSE if the data are correct // otherwise the error array function userDataInvalid($_userData) { global $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 (account_exsists($_userData['n_loginid'])) { $error[$totalerrors] = lang("That loginid has already been taken"); $totalerrors++; } } if ($_userData['n_passwd'] || $_userData['n_passwd_2']) { if ($_userData['n_passwd'] != $_userData['n_passwd_2']) { $error[$totalerrors] = lang("The two passwords are not the same"); $totalerrors++; } } if (!count($new_permissions) || !count($n_groups)) { #$error[$totalerrors] = "
" . lang("You must add at least 1 permission or group to this account"); #$totalerrors++; } if ($totalerrors == 0) { return FALSE; } else { return $error; } } // todo // not needed if i use the same file for new users too if (! $account_id) { Header("Location: " . $phpgw->link("accounts.php")); } if ($submit) { $userData = array( 'account_lid' => $account_lid, 'firstname' => $firstname, 'lastname' => $lastname, 'n_passwd' => $n_passwd, 'status' => $status, 'old_loginid' => rawurldecode($old_loginid), 'account_id' => $account_id, 'n_passwd_2' => $n_passwd_2 ); if (!$errors = userDataInvalid($userData)) { saveUserData($userData); Header('Location: ' . $phpgw->link('accounts.php', 'cd='.$cd)); $phpgw->common->phpgw_exit(); } else { $phpgw->common->phpgw_header(); echo parse_navbar(); createPageBody($userData['account_id'],$userData,$errors); account_close(); $phpgw->common->phpgw_footer(); } } else { $phpgw->common->phpgw_header(); echo parse_navbar(); createPageBody($account_id); account_close(); $phpgw->common->phpgw_footer(); } return; ////////////////////////////////////////////////////////////////////////////////////////// // // the old code // ///////////////////////////////////////////////////////////////////////////////////////// if (! $account_id) { Header("Location: " . $phpgw->link("accounts.php")); } if ($submit) { $totalerrors = 0; if ($phpgw_info["server"]["account_repository"] == "ldap" && ! $allow_long_loginids) { if (strlen($n_loginid) > 8) { $error[$totalerrors++] = lang("The loginid can not be more then 8 characters"); } } if ($old_loginid != $n_loginid) { if (account_exsists($n_loginid)) { $error[$totalerrors++] = lang("That loginid has already been taken"); } // $c_loginid = $n_loginid; // $n_loginid = $old_loginid; } if ($n_passwd || $n_passwd_2) { if ($n_passwd != $n_passwd_2) { $error[$totalerrors++] = lang("The two passwords are not the same"); } if (! $n_passwd){ $error[$totalerrors++] = lang("You must enter a password"); } } if (!count($new_permissions) || !count($n_groups)) { $error[$totalerrors++] = "
" . lang("You must add at least 1 permission or group to this account"); } if (! $totalerrors) { $phpgw->db->lock(array('accounts','preferences','phpgw_sessions','phpgw_acl','applications')); $phpgw->db->query("SELECT account_id FROM accounts WHERE account_lid='" . $old_loginid . "'",__LINE__,__FILE__); $phpgw->db->next_record(); $account_id = intval($phpgw->db->f("account_id")); $apps = CreateObject('phpgwapi.applications',array(intval($account_id),'u')); $apps->read_installed_apps(); $apps_before = $apps->read_account_specific(); // Read Old Group ID's $old_groups = $phpgw->accounts->read_groups($account_id); // Read Old Group Apps if ($old_groups) { $apps->account_type = 'g'; reset($old_groups); while($groups = each($old_groups)) { $apps->account_id = $groups[0]; $old_app_groups = $apps->read_account_specific(); @reset($old_app_groups); while($old_group_app = each($old_app_groups)) { if(!$apps_before[$old_group_app[0]]) { $apps_before[$old_group_app[0]] = $old_app_groups[$old_group_app[0]]; } } // delete old groups user was associated to $phpgw->acl->delete('phpgw_group',$groups[0],$account_id,'u'); } } $apps->account_type = 'u'; $apps->account_id = $account_id; $apps->account_apps = Array(Array()); while($app = each($new_permissions)) { if($app[1]) { $apps->add_app($app[0]); if(!$apps_before[$app[0]]) { $apps_after[] = $app[0]; } } } $apps->save_apps(); @reset($new_permissions); $cd = account_edit(array('loginid' => $n_loginid, 'firstname' => $n_firstname, 'lastname' => $n_lastname, 'passwd' => $n_passwd, 'account_status' => $n_account_status, 'old_loginid' => $old_loginid, 'account_id' => rawurldecode($account_id))); // If the user is logged in, it will force a refresh of the session_info //$phpgw->db->query("update phpgw_sessions set session_info='' where session_lid='$new_loginid@" . $phpgw_info["user"]["domain"] . "'",__LINE__,__FILE__); // Add new groups user is associated to for($i=0;$iacl->add('phpgw_group',$n_groups[$i],$account_id,'u',1); } // 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(); } $apps->account_apps = Array(Array()); $apps_after = Array(Array()); // Read new Group ID's $new_groups = $phpgw->accounts->read_groups($account_id); // Read new Group Apps if ($new_groups) { $apps->account_type = 'g'; reset($new_groups); while($groups = each($new_groups)) { $apps->account_id = intval($groups[0]); $new_app_groups = $apps->read_account_specific(); @reset($new_app_groups); while($new_group_app = each($new_app_groups)) { if(!$apps_after[$new_group_app[0]]) { $apps_after[$new_group_app[0]] = $new_app_groups[$new_group_app[0]]; } } } } $apps->account_type = 'u'; $apps->account_id = $account_id; $new_app_user = $apps->read_account_specific(); while($new_user_app = each($new_app_user)) { if(!$apps_after[$new_user_app[0]]) { $apps_after[$new_user_app[0]] = $new_app_user[$new_user_app[0]]; } } // start including other admin tools while($app = each($apps_after)) { $phpgw->common->hook_single('update_user_data', $app[0]); } $phpgw->db->unlock(); Header('Location: ' . $phpgw->link('accounts.php', 'cd='.$cd)); $phpgw->common->phpgw_exit(); } } // if $submit if ($totalerrors) { $t->set_var("error_messages","
" . $phpgw->common->error_list($error) . "
"); } else { $t->set_var("error_messages",""); } $userData = $phpgw->accounts->read_repository($account_id); if (! $submit) { print $n_loginid = $userData["account_lid"]; print $n_firstname = $userData["firstname"]; print $n_lastname = $userData["lastname"]; $apps = CreateObject('phpgwapi.applications',array(intval($userData["account_id"]),'u')); $apps->read_installed_apps(); /* $db_perms = $apps->read_account_specific(); */ } if ($phpgw_info["server"]["account_repository"] == "ldap") { $t->set_var("form_action",$phpgw->link("editaccount.php","account_id=" . rawurlencode($userData["account_dn"]) . "&old_loginid=" . $userData["account_lid"])); } else { $t->set_var("form_action",$phpgw->link("editaccount.php","account_id=" . $userData["account_id"] . "&old_loginid=" . $userData["account_lid"])); } $t->set_var("th_bg",$phpgw_info["theme"]["th_bg"]); $t->set_var("tr_color1",$phpgw_info["theme"]["row_on"]); $t->set_var("tr_color2",$phpgw_info["theme"]["row_off"]); $t->set_var("lang_action",lang("Edit user account")); $t->set_var("lang_loginid",lang("LoginID")); $t->set_var("n_loginid_value",$n_loginid); $t->set_var("lang_account_active",lang("Account active")); if ($userData["status"]) { $t->set_var("account_checked","checked"); } else { $t->set_var("account_checked",""); } $t->set_var("lang_password",lang("Password")); $t->set_var("n_passwd_value",$n_passwd); $t->set_var("lang_reenter_password",lang("Re-Enter Password")); $t->set_var("n_passwd_2_value",$n_passwd_2); $t->set_var("lang_firstname",lang("First Name")); $t->set_var("n_firstname_value",$n_firstname); $t->set_var("lang_lastname",lang("Last Name")); $t->set_var("n_lastname_value",$n_lastname); $t->set_var("lang_groups",lang("Groups")); /* $user_groups = $phpgw->accounts->read_group_names($userData["account_lid"]); $groups_select = '"; $t->set_var("groups_select",$groups_select); $i = 0; $sorted_apps = $phpgw_info["apps"]; @asort($sorted_apps); @reset($sorted_apps); while ($permission = each($sorted_apps)) { if ($permission[1]["enabled"]) { $perm_display[$i][0] = $permission[0]; $perm_display[$i][1] = $permission[1]["title"]; $i++; } } @reset($db_perms); for ($i=0;$i<200;) { // The $i<200 is only used for a brake if (! $perm_display[$i][1]) break; $perm_html .= '' . lang($perm_display[$i][1]) . '' . '' . 'set_var("permissions_list",$perm_html); $apps->account_apps = Array(Array()); // Read new Group ID's $new_groups = $phpgw->accounts->read_groups($account_id); $apps_after = Array(Array()); // Read new Group Apps if ($new_groups) { $apps->account_type = 'g'; reset($new_groups); while($groups = each($new_groups)) { $apps->account_id = intval($groups[0]); $new_app_groups = $apps->read_account_specific(); @reset($new_app_groups); while($new_group_app = each($new_app_groups)) { if(!$apps_after[$new_group_app[0]]) { $apps_after[$new_group_app[0]] = $new_app_groups[$new_group_app[0]]; } } } } $apps->account_type = 'u'; $apps->account_id = intval($userData["account_id"]); $new_app_user = $apps->read_account_specific(); while($new_user_app = each($new_app_user)) { if(!$apps_after[$new_user_app[0]]) { $apps_after[$new_user_app[0]] = $new_app_user[$new_user_app[0]]; } } */ $includedSomething = False; // start inlcuding other admin tools while($app = each($apps_after)) { // check if we have something included, when not ne need to set // {gui_hooks} to "" if ($phpgw->common->hook_single('show_user_data', $app[0])) $includedSomething=True; } if (!$includedSomething) $t->set_var('gui_hooks',''); $t->set_var("lang_button",lang('Save')); $t->pparse('out','form'); account_close(); $phpgw->common->phpgw_footer(); ?>