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-12-26 06:39:19 +01:00
|
|
|
$phpgw_info["flags"] = array("currentapp" => "admin", "noheader" => True, "nonavbar" => True,
|
|
|
|
"parent_page" => "accounts.php");
|
2000-08-18 05:24:22 +02:00
|
|
|
include("../header.inc.php");
|
2001-02-22 06:52:21 +01:00
|
|
|
#include($phpgw_info["server"]["app_inc"]."/accounts_".$phpgw_info["server"]["account_repository"].".inc.php");
|
2000-10-20 05:30:28 +02:00
|
|
|
|
2000-12-27 03:10:21 +01:00
|
|
|
function is_odd($n)
|
|
|
|
{
|
|
|
|
$ln = substr($n,-1);
|
|
|
|
if ($ln == 1 || $ln == 3 || $ln == 5 || $ln == 7 || $ln == 9) {
|
|
|
|
return True;
|
|
|
|
} else {
|
|
|
|
return False;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2000-08-18 05:24:22 +02:00
|
|
|
if ($submit) {
|
2000-10-02 12:48:03 +02:00
|
|
|
$totalerrors = 0;
|
2000-10-28 21:24:51 +02:00
|
|
|
|
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-02 12:48:03 +02:00
|
|
|
|
2001-02-21 04:03:16 +01:00
|
|
|
if (! $account_lid)
|
2000-10-02 12:48:03 +02:00
|
|
|
$error[$totalerrors++] = lang("You must enter a loginid");
|
2000-08-18 05:24:22 +02:00
|
|
|
|
2001-02-22 03:42:34 +01:00
|
|
|
if (! $account_passwd)
|
2000-10-02 12:48:03 +02:00
|
|
|
$error[$totalerrors++] = lang("You must enter a password");
|
2000-08-18 05:24:22 +02:00
|
|
|
|
2001-02-22 03:42:34 +01:00
|
|
|
if ($account_passwd == $account_lid)
|
2000-10-02 12:48:03 +02:00
|
|
|
$error[$totalerrors++] = lang("The login and password can not be the same");
|
2000-08-18 05:24:22 +02:00
|
|
|
|
2001-02-22 03:42:34 +01:00
|
|
|
if ($account_passwd != $account_passwd_2)
|
2000-10-02 12:48:03 +02:00
|
|
|
$error[$totalerrors++] = lang("The two passwords are not the same");
|
2000-08-18 05:24:22 +02:00
|
|
|
|
2001-02-22 03:44:50 +01:00
|
|
|
if (!count($account_permissions) || !count($account_groups)) {
|
2001-02-02 13:28:39 +01:00
|
|
|
$error[$totalerrors++] = "<br>" . lang("You must add at least 1 permission or group to this account");
|
|
|
|
}
|
2000-08-24 21:15:39 +02:00
|
|
|
|
2001-02-21 04:03:16 +01:00
|
|
|
if ($phpgw->accounts->exists($account_lid)) {
|
2000-11-17 17:19:37 +01:00
|
|
|
$error[$totalerrors++] = lang("That loginid has already been taken");
|
2000-10-20 05:30:28 +02:00
|
|
|
}
|
2000-08-18 05:24:22 +02:00
|
|
|
|
2001-02-20 15:12:06 +01:00
|
|
|
if (! $error)
|
|
|
|
{
|
|
|
|
$phpgw->db->lock(array(
|
|
|
|
'phpgw_accounts',
|
|
|
|
'phpgw_preferences',
|
|
|
|
'phpgw_sessions',
|
|
|
|
'phpgw_acl',
|
|
|
|
'phpgw_applications'
|
|
|
|
));
|
2001-02-22 03:42:34 +01:00
|
|
|
$phpgw->accounts->create('u', $account_lid, $account_passwd, $account_firstname, $account_lastname, $account_status);
|
2001-02-02 13:28:39 +01:00
|
|
|
|
2001-02-21 04:03:16 +01:00
|
|
|
$account_id = $phpgw->accounts->name2id($account_lid);
|
2001-02-20 15:12:06 +01:00
|
|
|
|
|
|
|
$apps = CreateObject('phpgwapi.applications',array($account_id,'u'));
|
|
|
|
$apps->read_installed_apps();
|
|
|
|
|
|
|
|
// Read Group Apps
|
2001-02-22 03:42:34 +01:00
|
|
|
if ($account_groups)
|
2001-02-20 15:12:06 +01:00
|
|
|
{
|
|
|
|
$apps->account_type = 'g';
|
2001-02-22 03:42:34 +01:00
|
|
|
reset($account_groups);
|
|
|
|
while($groups = each($account_groups))
|
2001-02-20 15:12:06 +01:00
|
|
|
{
|
|
|
|
$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_after[$old_group_app[0]])
|
|
|
|
{
|
|
|
|
$apps_after[$old_group_app[0]] = $old_app_groups[$old_group_app[0]];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2001-02-02 13:28:39 +01:00
|
|
|
|
2001-02-20 15:12:06 +01:00
|
|
|
$apps->account_type = 'u';
|
|
|
|
$apps->account_id = $account_id;
|
|
|
|
$apps->account_apps = Array(Array());
|
2001-02-22 03:44:50 +01:00
|
|
|
@reset($account_permissions);
|
|
|
|
while ($app = each($account_permissions))
|
2001-02-20 15:12:06 +01:00
|
|
|
{
|
|
|
|
if ($app[1])
|
|
|
|
{
|
|
|
|
$apps->add($app[0]);
|
|
|
|
if (!$apps_after[$app[0]])
|
|
|
|
{
|
|
|
|
$apps_after[] = $app[0];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$apps->save_repository();
|
|
|
|
|
|
|
|
// Assign user to groups
|
2001-02-22 03:42:34 +01:00
|
|
|
for ($i=0;$i<count($account_groups);$i++)
|
2001-02-20 15:12:06 +01:00
|
|
|
{
|
2001-02-22 03:42:34 +01:00
|
|
|
$phpgw->acl->add_repository('phpgw_group',$account_groups[$i],$account_id,1);
|
2001-02-20 15:12:06 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
$pref = CreateObject('phpgwapi.preferences',$account_id);
|
|
|
|
$phpgw->common->hook_single('add_def_pref','admin');
|
|
|
|
while ($apps = each($apps_after))
|
|
|
|
{
|
|
|
|
if ($apps[0] != 'admin')
|
|
|
|
{
|
|
|
|
$phpgw->common->hook_single('add_def_pref', $apps[0]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$pref->save_repository(False);
|
|
|
|
|
|
|
|
$apps->account_apps = Array(Array());
|
|
|
|
$apps_after = Array(Array());
|
|
|
|
|
|
|
|
$phpgw->db->unlock();
|
|
|
|
|
|
|
|
/* // start inlcuding other admin tools
|
2001-02-02 13:28:39 +01:00
|
|
|
while($app = each($apps_after))
|
2000-12-31 17:20:49 +01:00
|
|
|
{
|
2001-02-02 13:28:39 +01:00
|
|
|
$phpgw->common->hook_single('add_user_data', $value);
|
2000-12-31 17:20:49 +01:00
|
|
|
}
|
2001-02-20 15:12:06 +01:00
|
|
|
*/
|
2001-02-02 13:28:39 +01:00
|
|
|
Header('Location: ' . $phpgw->link('accounts.php','cd='.$cd));
|
2000-12-23 23:50:32 +01:00
|
|
|
$phpgw->common->phpgw_exit();
|
2000-08-18 05:24:22 +02:00
|
|
|
}
|
2001-02-20 15:12:06 +01:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2001-02-22 03:42:34 +01:00
|
|
|
$account_status = 'A';
|
2001-02-20 15:12:06 +01:00
|
|
|
}
|
2000-11-07 21:37:02 +01:00
|
|
|
|
2001-02-20 15:12:06 +01:00
|
|
|
$phpgw->template->set_file(array('form' => 'account_form.tpl'));
|
|
|
|
$phpgw->template->set_unknowns('remove');
|
2000-10-02 22:43:56 +02:00
|
|
|
|
2001-02-20 15:12:06 +01:00
|
|
|
$phpgw->common->phpgw_header();
|
|
|
|
echo parse_navbar();
|
2000-08-18 05:24:22 +02:00
|
|
|
|
2000-11-07 21:37:02 +01:00
|
|
|
$phpgw->template->set_var("lang_action",lang("Add new account"));
|
2000-10-02 22:43:56 +02:00
|
|
|
|
2000-11-23 04:26:45 +01:00
|
|
|
if ($totalerrors) {
|
2000-11-07 21:37:02 +01:00
|
|
|
$phpgw->template->set_var("error_messages","<center>" . $phpgw->common->error_list($error) . "</center>");
|
2000-10-02 22:43:56 +02:00
|
|
|
} else {
|
2000-11-07 21:37:02 +01:00
|
|
|
$phpgw->template->set_var("error_messages","");
|
2000-10-02 22:43:56 +02:00
|
|
|
}
|
2000-12-26 01:52:38 +01:00
|
|
|
|
2000-12-26 06:39:19 +01:00
|
|
|
$phpgw->template->set_var("th_bg",$phpgw_info["theme"]["th_bg"]);
|
2000-12-26 01:52:38 +01:00
|
|
|
$phpgw->template->set_var("tr_color1",$phpgw_info["theme"]["row_on"]);
|
|
|
|
$phpgw->template->set_var("tr_color2",$phpgw_info["theme"]["row_off"]);
|
2000-10-02 22:43:56 +02:00
|
|
|
|
2000-11-07 21:37:02 +01:00
|
|
|
$phpgw->template->set_var("form_action",$phpgw->link("newaccount.php"));
|
|
|
|
$phpgw->template->set_var("lang_loginid",lang("LoginID"));
|
2001-02-20 15:12:06 +01:00
|
|
|
|
2001-02-22 03:42:34 +01:00
|
|
|
if ($account_status)
|
2001-02-20 15:12:06 +01:00
|
|
|
{
|
|
|
|
$phpgw->template->set_var('account_status',' checked');
|
|
|
|
}
|
|
|
|
|
2001-02-22 03:42:34 +01:00
|
|
|
$phpgw->template->set_var("account_lid",$account_lid);
|
2000-10-02 12:48:03 +02:00
|
|
|
|
2000-12-26 01:52:38 +01:00
|
|
|
$phpgw->template->set_var("lang_account_active",lang("Account active"));
|
|
|
|
|
2000-11-07 21:37:02 +01:00
|
|
|
$phpgw->template->set_var("lang_password",lang("Password"));
|
2001-02-22 03:42:34 +01:00
|
|
|
$phpgw->template->set_var("account_passwd",$account_passwd);
|
2000-10-02 22:43:56 +02:00
|
|
|
|
2000-11-07 21:37:02 +01:00
|
|
|
$phpgw->template->set_var("lang_reenter_password",lang("Re-Enter Password"));
|
2001-02-22 03:42:34 +01:00
|
|
|
$phpgw->template->set_var("account_passwd_2",$account_passwd_2);
|
2000-10-02 22:43:56 +02:00
|
|
|
|
2000-11-07 21:37:02 +01:00
|
|
|
$phpgw->template->set_var("lang_firstname",lang("First Name"));
|
2001-02-22 03:42:34 +01:00
|
|
|
$phpgw->template->set_var("account_firstname",$account_firstname);
|
2000-10-02 22:43:56 +02:00
|
|
|
|
2000-11-07 21:37:02 +01:00
|
|
|
$phpgw->template->set_var("lang_lastname",lang("Last Name"));
|
2001-02-22 03:42:34 +01:00
|
|
|
$phpgw->template->set_var("account_lastname",$account_lastname);
|
2000-10-02 22:43:56 +02:00
|
|
|
|
2000-11-07 21:37:02 +01:00
|
|
|
$phpgw->template->set_var("lang_groups",lang("Groups"));
|
2001-02-20 15:12:06 +01:00
|
|
|
|
|
|
|
|
|
|
|
// groups list
|
2001-02-22 03:42:34 +01:00
|
|
|
$groups_select = '<select name="account_groups[]" multiple>';
|
2001-02-20 15:12:06 +01:00
|
|
|
|
|
|
|
$groups = $phpgw->accounts->get_list('groups');
|
|
|
|
|
|
|
|
while (list(,$group) = each($groups))
|
|
|
|
{
|
|
|
|
$groups_select .= '<option value="' . $group['account_id'] . '"';
|
2001-02-22 03:42:34 +01:00
|
|
|
while (list(,$ags) = @each($account_groups))
|
|
|
|
{
|
|
|
|
if ($group['account_id'] == $ags)
|
|
|
|
{
|
|
|
|
$groups_select .= ' selected';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@reset($account_groups);
|
|
|
|
|
2001-02-20 15:12:06 +01:00
|
|
|
$groups_select .= ">" . $group["account_lid"] . "</option>\n";
|
|
|
|
}
|
|
|
|
$groups_select .= '</select>';
|
|
|
|
$phpgw->template->set_var('groups_select',$groups_select);
|
|
|
|
// end groups list
|
2000-10-02 22:43:56 +02:00
|
|
|
|
2000-11-07 21:37:02 +01:00
|
|
|
$phpgw->template->set_var("","");
|
2000-10-02 22:43:56 +02:00
|
|
|
$i = 0;
|
2000-12-23 07:28:34 +01:00
|
|
|
$sorted_apps = $phpgw_info["apps"];
|
2000-12-23 07:36:30 +01:00
|
|
|
@asort($sorted_apps);
|
|
|
|
@reset($sorted_apps);
|
2000-12-23 07:28:34 +01:00
|
|
|
while ($permission = each($sorted_apps)) {
|
2000-10-02 22:43:56 +02:00
|
|
|
if ($permission[1]["enabled"]) {
|
|
|
|
$perm_display[$i][0] = $permission[0];
|
|
|
|
$perm_display[$i][1] = $permission[1]["title"];
|
|
|
|
$i++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
for ($i=0;$i<200;) { // The $i<200 is only used for a brake
|
|
|
|
if (! $perm_display[$i][1]) break;
|
|
|
|
|
2000-12-26 06:39:19 +01:00
|
|
|
$perms_html .= '<tr bgcolor="' . $phpgw_info["theme"]["row_on"] . '"><td>' . lang($perm_display[$i][1]) . '</td>'
|
2001-02-22 03:44:50 +01:00
|
|
|
. '<td><input type="checkbox" name="account_permissions['
|
2000-10-02 22:43:56 +02:00
|
|
|
. $perm_display[$i][0] . ']" value="True"';
|
2001-02-22 03:44:50 +01:00
|
|
|
if ($account_permissions[$perm_display[$i][0]]) {
|
2000-10-02 22:43:56 +02:00
|
|
|
$perms_html .= " checked";
|
|
|
|
}
|
|
|
|
$perms_html .= "></td>";
|
|
|
|
|
|
|
|
$i++;
|
|
|
|
|
2000-12-27 03:10:21 +01:00
|
|
|
if ($i == count($perm_display) && is_odd(count($perm_display))) {
|
|
|
|
$perms_html .= '<td colspan="2"> </td></tr>';
|
|
|
|
}
|
|
|
|
|
|
|
|
if (! $perm_display[$i][1]) break;
|
|
|
|
|
|
|
|
$perms_html .= '<td>' . lang($perm_display[$i][1]) . '</td>'
|
2001-02-22 03:44:50 +01:00
|
|
|
. '<td><input type="checkbox" name="account_permissions['
|
2000-12-27 03:10:21 +01:00
|
|
|
. $perm_display[$i][0] . ']" value="True"';
|
2001-02-22 03:44:50 +01:00
|
|
|
if ($account_permissions[$perm_display[$i][0]]) {
|
2000-12-27 03:10:21 +01:00
|
|
|
$perms_html .= " checked";
|
|
|
|
}
|
|
|
|
$perms_html .= "></td></tr>";
|
|
|
|
|
|
|
|
$i++;
|
2000-10-02 22:43:56 +02:00
|
|
|
}
|
2000-11-07 21:37:02 +01:00
|
|
|
$phpgw->template->set_var("permissions_list",$perms_html);
|
2000-10-02 12:48:03 +02:00
|
|
|
|
2001-02-02 13:28:39 +01:00
|
|
|
$includedSomething = False;
|
|
|
|
// Skeeter: I don't see this as a player, if creating new accounts...
|
|
|
|
|
2000-12-31 17:20:49 +01:00
|
|
|
// start inlcuding other admin tools
|
2001-02-02 13:28:39 +01:00
|
|
|
// while(list($key,$value) = each($phpgw_info["user"]["app_perms"]))
|
|
|
|
// {
|
2000-12-31 17:20:49 +01:00
|
|
|
// check if we have something included, when not ne need to set
|
|
|
|
// {gui_hooks} to ""
|
2001-02-02 13:28:39 +01:00
|
|
|
// if ($phpgw->common->hook_single("show_newuser_data", $value)) $includedSomething="true";
|
|
|
|
// }
|
2000-12-31 17:20:49 +01:00
|
|
|
if (!$includedSomething) $phpgw->template->set_var("gui_hooks","");
|
|
|
|
|
2000-11-07 21:37:02 +01:00
|
|
|
$phpgw->template->set_var("lang_button",Lang("Add"));
|
2001-02-20 15:12:06 +01:00
|
|
|
echo $phpgw->template->finish($phpgw->template->parse("out","form"));
|
2000-10-20 07:59:25 +02:00
|
|
|
|
2001-02-22 06:52:21 +01:00
|
|
|
#account_close();
|
2000-10-02 22:43:56 +02:00
|
|
|
$phpgw->common->phpgw_footer();
|
|
|
|
?>
|