2000-08-18 05:24:22 +02:00
|
|
|
<?php
|
|
|
|
/**************************************************************************\
|
|
|
|
* phpGroupWare - administration *
|
|
|
|
* http://www.phpgroupware.org *
|
|
|
|
* -------------------------------------------- *
|
|
|
|
* This program is free software; you can redistribute it and/or modify it *
|
|
|
|
* under the terms of the GNU General Public License as published by the *
|
|
|
|
* Free Software Foundation; either version 2 of the License, or (at your *
|
|
|
|
* option) any later version. *
|
|
|
|
\**************************************************************************/
|
|
|
|
|
|
|
|
/* $Id$ */
|
|
|
|
|
2000-11-21 01:41:31 +01:00
|
|
|
$phpgw_info = array();
|
2000-11-16 09:00:18 +01:00
|
|
|
$phpgw_info["flags"] = array("noheader" => True, "nonavbar" => True, "currentapp" => "admin");
|
2000-08-18 05:24:22 +02:00
|
|
|
include("../header.inc.php");
|
2000-12-18 11:09:34 +01:00
|
|
|
include($phpgw_info["server"]["app_inc"]."/accounts_".$phpgw_info["server"]["account_repository"].".inc.php");
|
2000-10-20 06:43:13 +02:00
|
|
|
|
|
|
|
if (! $account_id) {
|
2000-08-18 05:24:22 +02:00
|
|
|
Header("Location: " . $phpgw->link("accounts.php"));
|
2000-10-20 06:43:13 +02:00
|
|
|
}
|
2000-08-18 05:24:22 +02:00
|
|
|
|
|
|
|
if ($submit) {
|
2000-10-28 21:24:51 +02:00
|
|
|
$totalerrors = 0;
|
|
|
|
|
2000-12-06 12:19:59 +01:00
|
|
|
if ($phpgw_info["server"]["account_repository"] == "ldap" && ! $allow_long_loginids) {
|
2000-11-13 11:05:45 +01:00
|
|
|
if (strlen($n_loginid) > 8) {
|
|
|
|
$error[$totalerrors++] = lang("The loginid can not be more then 8 characters");
|
|
|
|
}
|
|
|
|
}
|
2000-10-28 21:24:51 +02:00
|
|
|
|
2000-10-20 06:43:13 +02:00
|
|
|
if ($old_loginid != $n_loginid) {
|
|
|
|
if (account_exsists($n_loginid)) {
|
2000-10-28 21:24:51 +02:00
|
|
|
$error[$totalerrors++] = lang("That loginid has already been taken");
|
2000-10-20 06:43:13 +02:00
|
|
|
}
|
2000-11-23 23:00:11 +01:00
|
|
|
// $c_loginid = $n_loginid;
|
|
|
|
// $n_loginid = $old_loginid;
|
2000-10-20 06:43:13 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
if ($n_passwd || $n_passwd_2) {
|
|
|
|
if ($n_passwd != $n_passwd_2) {
|
2000-10-28 21:24:51 +02:00
|
|
|
$error[$totalerrors++] = lang("The two passwords are not the same");
|
2000-10-20 06:43:13 +02:00
|
|
|
}
|
|
|
|
if (! $n_passwd){
|
2000-10-28 21:24:51 +02:00
|
|
|
$error[$totalerrors++] = lang("You must enter a password");
|
2000-10-20 06:43:13 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (count($new_permissions) == 0){
|
2000-10-28 21:24:51 +02:00
|
|
|
$error[$totalerrors++] = "<br>" . lang("You must add at least 1 permission to this account");
|
2000-10-20 06:43:13 +02:00
|
|
|
}
|
|
|
|
|
2000-10-28 21:24:51 +02:00
|
|
|
if (! $totalerrors) {
|
2000-12-22 22:18:35 +01:00
|
|
|
$phpgw->db->query("SELECT account_permissions FROM accounts WHERE account_id = ".$account_id);
|
|
|
|
$phpgw->db->next_record();
|
|
|
|
$apps_before = $phpgw->db->f("account_permissions");
|
|
|
|
|
|
|
|
while ($permission = each($new_permissions)) {
|
|
|
|
if ($phpgw_info["apps"][$permission[0]]["enabled"]) {
|
|
|
|
$phpgw->accounts->add_app($permission[0]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$apps_after = $phpgw->accounts->add_app("",True);
|
|
|
|
if($apps_before <> $apps_after) {
|
|
|
|
$after_apps = explode(":",$apps_after);
|
|
|
|
for ($i=1;$i<=count($after_apps);$i++) {
|
|
|
|
if (!strpos(" ".$apps_before." ",$after_apps) {
|
|
|
|
$new_apps[] = $after_apps;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
$cd = account_edit(array("loginid" => $n_loginid, "permissions" => $new_permissions,
|
2000-12-18 17:36:43 +01:00
|
|
|
"firstname" => $n_firstname, "lastname" => $n_lastname,
|
|
|
|
"passwd" => $n_passwd, "account_status" => $n_account_status,
|
2000-11-23 23:00:11 +01:00
|
|
|
"old_loginid" => $old_loginid, "account_id" => rawurldecode($account_id),
|
|
|
|
"groups" => $phpgw->accounts->groups_array_to_string($n_groups)));
|
2000-12-22 22:18:35 +01:00
|
|
|
|
|
|
|
// The following sets any default preferences needed for new applications..
|
|
|
|
// This is smart enough to know if previous preferences were selected, use them.
|
|
|
|
if (count($new_apps)) {
|
|
|
|
if ($account_id <> $phpgw_info["user"]["account_id"]) {
|
|
|
|
$phpgw->db->query("SELECT preference_value FROM preferences WHERE preference_owner=".$account_id,__FILE__,__LINE__);
|
|
|
|
$phpgw->db->next_record();
|
|
|
|
$phpgw_newuser["user"]["preferences"] = unserialize($phpgw->db->f("preference_value");
|
|
|
|
} else {
|
|
|
|
$phpgw_newuser["user"]["preferences"] = $phpgw_info["user"]["preferences"]
|
|
|
|
}
|
|
|
|
$docommit = False;
|
|
|
|
for ($j=0;$j<count($new_apps);$j++) {
|
|
|
|
if (!$phpgw_newuser["user"]["preferences"][$new_apps[$j]]) {
|
|
|
|
$phpgw->common->hook_single("add_def_pref", $new_apps[$j]);
|
|
|
|
$docommit = True;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ($docommit) {
|
|
|
|
if ($account_id <> $phpgw_info["user"]["account_id"]) {
|
|
|
|
$phpgw->preferences->commit_user($account_id);
|
|
|
|
} else {
|
|
|
|
$phpgw_info["user"]["preferences"] = $phpgw_newuser["user"]["preferences"];
|
|
|
|
unset($phpgw_newuser);
|
|
|
|
$phpgw->preferences->commit();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
Header("Location: " . $phpgw->link("accounts.php", "cd=$cd"));
|
|
|
|
exit;
|
2000-10-20 06:43:13 +02:00
|
|
|
}
|
|
|
|
|
2000-12-18 02:28:30 +01:00
|
|
|
} // if $submit
|
|
|
|
|
2000-12-22 22:18:35 +01:00
|
|
|
$phpgw->template->set_file(array("form" => "account_form.tpl"));
|
|
|
|
|
|
|
|
$phpgw->common->phpgw_header();
|
|
|
|
$phpgw->common->navbar();
|
|
|
|
|
2000-12-18 02:28:30 +01:00
|
|
|
if ($totalerrors) {
|
|
|
|
$phpgw->template->set_var("error_messages","<center>" . $phpgw->common->error_list($error) . "</center>");
|
|
|
|
} else {
|
|
|
|
$phpgw->template->set_var("error_messages","");
|
|
|
|
}
|
|
|
|
|
2000-12-18 22:33:02 +01:00
|
|
|
|
2000-11-06 01:27:52 +01:00
|
|
|
$userData = $phpgw->accounts->read_userData($account_id);
|
|
|
|
$db_perms = $phpgw->accounts->read_apps($userData["account_lid"]);
|
2000-08-26 21:20:27 +02:00
|
|
|
|
2000-12-18 22:46:41 +01:00
|
|
|
if (! $submit) {
|
|
|
|
$n_loginid = $userData["account_lid"];
|
|
|
|
$n_firstname = $userData["firstname"];
|
|
|
|
$n_lastname = $userData["lastname"];
|
|
|
|
}
|
|
|
|
|
2000-12-18 02:28:30 +01:00
|
|
|
if ($phpgw_info["server"]["account_repository"] == "ldap") {
|
|
|
|
$phpgw->template->set_var("form_action",$phpgw->link("editaccount.php","account_id=" . rawurlencode($userData["account_dn"]) . "&old_loginid=" . $userData["account_lid"]));
|
|
|
|
} else {
|
|
|
|
$phpgw->template->set_var("form_action",$phpgw->link("editaccount.php","account_id=" . $userData["account_id"] . "&old_loginid=" . $userData["account_lid"]));
|
|
|
|
}
|
|
|
|
|
|
|
|
$phpgw->template->set_var("lang_action",lang("Edit user account"));
|
|
|
|
|
|
|
|
$phpgw->template->set_var("lang_loginid",lang("LoginID"));
|
|
|
|
$phpgw->template->set_var("n_loginid_value",$n_loginid);
|
|
|
|
|
|
|
|
$phpgw->template->set_var("lang_password",lang("Password"));
|
|
|
|
$phpgw->template->set_var("n_passwd_value",$n_passwd);
|
|
|
|
|
|
|
|
$phpgw->template->set_var("lang_reenter_password",lang("Re-Enter Password"));
|
|
|
|
$phpgw->template->set_var("n_passwd_2_value",$n_passwd_2);
|
|
|
|
|
|
|
|
$phpgw->template->set_var("lang_firstname",lang("First Name"));
|
|
|
|
$phpgw->template->set_var("n_firstname_value",$n_firstname);
|
|
|
|
|
|
|
|
$phpgw->template->set_var("lang_lastname",lang("Last Name"));
|
|
|
|
$phpgw->template->set_var("n_lastname_value",$n_lastname);
|
|
|
|
|
|
|
|
$phpgw->template->set_var("lang_groups",lang("Groups"));
|
|
|
|
$user_groups = $phpgw->accounts->read_group_names($userData["account_lid"]);
|
|
|
|
|
2000-12-18 22:46:41 +01:00
|
|
|
$groups_select = '<select name="n_groups[]" multiple>';
|
2000-12-18 02:28:30 +01:00
|
|
|
$phpgw->db->query("select * from groups");
|
|
|
|
while ($phpgw->db->next_record()) {
|
|
|
|
$groups_select .= '<option value="' . $phpgw->db->f("group_id") . '"';
|
|
|
|
for ($i=0; $i<count($user_groups); $i++) {
|
|
|
|
if ($user_groups[$i][0] == $phpgw->db->f("group_id")) {
|
|
|
|
$groups_select .= " selected";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$groups_select .= ">" . $phpgw->db->f("group_name") . "</option>\n";
|
|
|
|
}
|
2000-12-18 22:46:41 +01:00
|
|
|
$groups_select .= "</select>";
|
|
|
|
$phpgw->template->set_var("groups_select",$groups_select);
|
2000-12-18 02:28:30 +01:00
|
|
|
|
|
|
|
$i = 0;
|
|
|
|
while ($permission = each($phpgw_info["apps"])) {
|
|
|
|
if ($permission[1]["enabled"]) {
|
|
|
|
$perm_display[$i][0] = $permission[0];
|
|
|
|
$perm_display[$i][1] = $permission[1]["title"];
|
|
|
|
$i++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2000-12-18 17:36:43 +01:00
|
|
|
for ($i=0;$i<200;) { // The $i<200 is only used for a brake
|
2000-12-18 02:28:30 +01:00
|
|
|
if (! $perm_display[$i][1]) break;
|
|
|
|
$perm_html .= '<tr><td>' . lang($perm_display[$i][1]) . '</td>'
|
|
|
|
. '<td><input type="checkbox" name="new_permissions['
|
|
|
|
. $perm_display[$i][0] . ']" value="True"';
|
|
|
|
if ($new_permissions[$perm_display[$i][0]] || $db_perms[$perm_display[$i][0]]) {
|
|
|
|
$perm_html .= " checked";
|
|
|
|
}
|
|
|
|
$perm_html .= "></td>";
|
|
|
|
$i++;
|
|
|
|
|
|
|
|
if (! $perm_display[$i][1]) break;
|
|
|
|
$perm_html .= '<td>' . lang($perm_display[$i][1]) . '</td>'
|
|
|
|
. '<td><input type="checkbox" name="new_permissions['
|
|
|
|
. $perm_display[$i][0] . ']" value="True"';
|
|
|
|
if ($new_permissions[$perm_display[$i][0]] || $db_perms[$perm_display[$i][0]]) {
|
|
|
|
$perm_html .= " checked";
|
|
|
|
}
|
|
|
|
$perm_html .= "></td></tr>";
|
|
|
|
$i++;
|
|
|
|
}
|
|
|
|
$phpgw->template->set_var("permissions_list",$perm_html);
|
|
|
|
|
|
|
|
$phpgw->template->set_var("lang_button",lang("Edit"));
|
|
|
|
|
|
|
|
$phpgw->template->pparse("out","form");
|
|
|
|
|
|
|
|
/*
|
2000-09-06 17:55:58 +02:00
|
|
|
?>
|
|
|
|
<form method="POST" action="<?php echo $phpgw->link("editaccount.php"); ?>">
|
2000-11-12 10:26:54 +01:00
|
|
|
<input type="hidden" name="account_id" value="<?
|
2000-12-18 17:36:43 +01:00
|
|
|
if ($phpgw_info["server"]["account_repository"] == "ldap")
|
|
|
|
{
|
|
|
|
echo rawurlencode($userData["account_dn"]);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
echo $userData["account_id"];
|
|
|
|
}?>">
|
2000-11-06 01:27:52 +01:00
|
|
|
<input type="hidden" name="old_loginid" value="<? echo $userData["account_lid"]; ?>">
|
2000-09-06 17:55:58 +02:00
|
|
|
<?php
|
|
|
|
if ($error) {
|
2000-10-28 21:24:51 +02:00
|
|
|
echo "<center>" . $phpgw->common->error_list($error) . "</center>";
|
2000-09-06 17:55:58 +02:00
|
|
|
}
|
|
|
|
?>
|
2000-08-18 05:24:22 +02:00
|
|
|
<center>
|
|
|
|
<table border=0 width=65%>
|
|
|
|
<tr>
|
2000-09-07 22:49:55 +02:00
|
|
|
<td><?php echo lang("LoginID"); ?></td>
|
2000-11-06 01:27:52 +01:00
|
|
|
<td><input name="n_loginid" value="<? echo $userData["account_lid"]; ?>"></td>
|
2000-08-18 05:24:22 +02:00
|
|
|
</tr>
|
|
|
|
<tr>
|
2000-09-07 22:49:55 +02:00
|
|
|
<td><?php echo lang("First Name"); ?></td>
|
2000-11-06 01:27:52 +01:00
|
|
|
<td><input name="n_firstname" value="<?echo $userData["firstname"]; ?>"></td>
|
2000-08-18 05:24:22 +02:00
|
|
|
</tr>
|
|
|
|
<tr>
|
2000-09-07 22:49:55 +02:00
|
|
|
<td><?php echo lang("Last Name"); ?></td>
|
2000-11-06 01:27:52 +01:00
|
|
|
<td><input name="n_lastname" value="<? echo $userData["lastname"]; ?>"></td>
|
2000-08-18 05:24:22 +02:00
|
|
|
</tr>
|
|
|
|
<tr>
|
2000-09-07 22:49:55 +02:00
|
|
|
<td><?php echo lang("Groups"); ?></td>
|
2000-08-18 05:24:22 +02:00
|
|
|
<td><select name="n_groups[]" multiple size="5">
|
2000-09-06 17:55:58 +02:00
|
|
|
<?php
|
2000-11-06 01:27:52 +01:00
|
|
|
$user_groups = $phpgw->accounts->read_group_names($userData["account_lid"]);
|
2000-09-06 17:55:58 +02:00
|
|
|
|
|
|
|
$phpgw->db->query("select * from groups");
|
|
|
|
while ($phpgw->db->next_record()) {
|
|
|
|
echo "<option value=\"" . $phpgw->db->f("group_id") . "\"";
|
|
|
|
for ($i=0; $i<count($user_groups); $i++) {
|
2000-12-18 17:36:43 +01:00
|
|
|
if ($user_groups[$i][0] == $phpgw->db->f("group_id")) {
|
2000-09-06 17:55:58 +02:00
|
|
|
echo " selected";
|
2000-08-18 05:24:22 +02:00
|
|
|
}
|
2000-12-18 17:36:43 +01:00
|
|
|
}
|
|
|
|
echo ">" . $phpgw->db->f("group_name") . "</option>\n";
|
2000-09-06 17:55:58 +02:00
|
|
|
}
|
|
|
|
?>
|
|
|
|
</select>
|
|
|
|
</tr>
|
|
|
|
<?php
|
|
|
|
$i = 0;
|
|
|
|
while ($permission = each($phpgw_info["apps"])) {
|
|
|
|
if ($permission[1]["enabled"]) {
|
|
|
|
$perm_display[$i][0] = $permission[0];
|
|
|
|
$perm_display[$i][1] = $permission[1]["title"];
|
2000-08-18 05:24:22 +02:00
|
|
|
$i++;
|
2000-09-06 17:55:58 +02:00
|
|
|
}
|
2000-12-18 17:36:43 +01:00
|
|
|
}
|
2000-09-06 17:55:58 +02:00
|
|
|
|
2000-12-18 17:36:43 +01:00
|
|
|
for ($i=0;$i<200;) { // The $i<200 is only used for a brake
|
2000-09-06 17:55:58 +02:00
|
|
|
if (! $perm_display[$i][1]) break;
|
2000-09-07 22:49:55 +02:00
|
|
|
echo '<tr><td>' . lang($perm_display[$i][1]) . '</td>'
|
2000-09-06 17:55:58 +02:00
|
|
|
. '<td><input type="checkbox" name="new_permissions['
|
2000-12-18 17:36:43 +01:00
|
|
|
. $perm_display[$i][0] . ']" value="True"';
|
2000-09-06 17:55:58 +02:00
|
|
|
if ($new_permissions[$perm_display[$i][0]] || $db_perms[$perm_display[$i][0]]) {
|
|
|
|
echo " checked";
|
|
|
|
}
|
|
|
|
echo "></td>";
|
|
|
|
$i++;
|
|
|
|
if (! $perm_display[$i][1]) break;
|
2000-09-07 22:49:55 +02:00
|
|
|
echo '<td>' . lang($perm_display[$i][1]) . '</td>'
|
2000-09-06 17:55:58 +02:00
|
|
|
. '<td><input type="checkbox" name="new_permissions['
|
2000-12-18 17:36:43 +01:00
|
|
|
. $perm_display[$i][0] . ']" value="True"';
|
2000-09-06 17:55:58 +02:00
|
|
|
if ($new_permissions[$perm_display[$i][0]] || $db_perms[$perm_display[$i][0]]) {
|
|
|
|
echo " checked";
|
|
|
|
}
|
2000-12-18 17:36:43 +01:00
|
|
|
echo "></td></tr>";
|
2000-09-06 17:55:58 +02:00
|
|
|
$i++;
|
|
|
|
}
|
|
|
|
?>
|
2000-08-18 05:24:22 +02:00
|
|
|
<tr>
|
2000-09-07 22:49:55 +02:00
|
|
|
<td><?php echo lang("Account active"); ?></td>
|
2000-11-06 01:27:52 +01:00
|
|
|
<td>
|
2000-12-18 17:36:43 +01:00
|
|
|
<input type="checkbox" name="n_account_status" value="A"
|
|
|
|
<?php if ($userData["status"] == "A") { echo " checked"; } ?>
|
|
|
|
>
|
2000-09-06 17:55:58 +02:00
|
|
|
</td>
|
2000-08-18 05:24:22 +02:00
|
|
|
</tr>
|
|
|
|
<tr>
|
2000-09-07 22:49:55 +02:00
|
|
|
<td><?php echo lang("New password [ Leave blank for no change ]"); ?></td>
|
2000-08-18 05:24:22 +02:00
|
|
|
<td><input type=password name="n_passwd"></td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
2000-09-07 22:49:55 +02:00
|
|
|
<td><?php echo lang("Re-enter password"); ?></td>
|
2000-08-18 05:24:22 +02:00
|
|
|
<td><input type=password name="n_passwd_2"></td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
2000-09-07 22:49:55 +02:00
|
|
|
<td colspan=2><input type="submit" name="submit" value="<?php echo lang("submit"); ?>"></td>
|
2000-08-18 05:24:22 +02:00
|
|
|
</tr>
|
|
|
|
</table>
|
|
|
|
</center>
|
|
|
|
</form>
|
2000-12-18 02:28:30 +01:00
|
|
|
<?php */
|
2000-10-20 07:59:25 +02:00
|
|
|
account_close();
|
|
|
|
$phpgw->common->phpgw_footer();
|
2000-09-29 07:24:18 +02:00
|
|
|
?>
|