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 01:52:38 +01:00
$phpgw_info [ " flags " ] = array ( " noheader " => True ,
2000-12-26 07:30:51 +01:00
" nonavbar " => True ,
" currentapp " => " admin " ,
" parent_page " => " accounts.php " );
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
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-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 ) {
2001-01-04 21:06:38 +01:00
$phpgw -> db -> query ( " SELECT account_id FROM accounts WHERE account_lid=' " . $old_loginid . " ' " , __LINE__ , __FILE__ );
2000-12-26 07:30:51 +01:00
$phpgw -> db -> next_record ();
2000-12-31 03:19:56 +01:00
$account_id = $phpgw -> db -> f ( " account_id " );
2000-12-26 07:30:51 +01:00
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 );
$cd = account_edit ( array ( " loginid " => $n_loginid , " permissions " => $new_permissions ,
" firstname " => $n_firstname , " lastname " => $n_lastname ,
" passwd " => $n_passwd , " account_status " => $n_account_status ,
" old_loginid " => $old_loginid , " account_id " => rawurldecode ( $account_id ),
" groups " => $phpgw -> accounts -> groups_array_to_string ( $n_groups )));
// If the user is logged in, it will force a refresh of the session_info
2001-01-10 05:26:06 +01:00
//$phpgw->db->query("update phpgw_sessions set session_info='' where session_lid='$new_loginid@" . $phpgw_info["user"]["domain"] . "'",__LINE__,__FILE__);
2000-12-22 22:18:35 +01:00
2001-01-04 21:06:38 +01:00
2000-12-31 17:20:49 +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.
2001-01-04 21:06:38 +01:00
2001-01-18 04:50:48 +01:00
$pref = CreateObject ( 'phpgwapi.preferences' , intval ( $account_id ));
2001-01-04 21:06:38 +01:00
$t = $pref -> get_preferences ();
2000-12-31 17:20:49 +01:00
2001-01-04 21:06:38 +01:00
$docommit = False ;
2001-01-10 06:01:56 +01:00
$after_apps = explode ( ':' , $apps_after );
for ( $i = 1 ; $i < count ( $after_apps ) - 1 ; $i ++ ) {
if ( $after_apps [ $i ] == " admin " ) {
2001-01-04 21:06:38 +01:00
$check = " common " ;
} else {
2001-01-10 06:01:56 +01:00
$check = $after_apps [ $i ];
2001-01-04 21:06:38 +01:00
}
2001-01-10 06:01:56 +01:00
if ( ! $t [ " $check " ]) {
$phpgw -> common -> hook_single ( " add_def_pref " , $after_apps [ $i ]);
2001-01-04 21:06:38 +01:00
$docommit = True ;
2000-12-26 07:30:51 +01:00
}
2000-12-31 17:20:49 +01:00
}
2001-01-04 21:06:38 +01:00
if ( $docommit ) {
$pref -> commit ();
}
// start including other admin tools
2000-12-31 17:20:49 +01:00
while ( list ( $key , $value ) = each ( $phpgw_info [ " user " ][ " app_perms " ]))
{
$phpgw -> common -> hook_single ( " update_user_data " , $value );
}
Header ( " Location: " . $phpgw -> link ( " accounts.php " , " cd= $cd " ));
$phpgw -> common -> phpgw_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 -> common -> phpgw_header ();
2001-01-06 05:11:13 +01:00
echo parse_navbar ();
2000-12-22 22:18:35 +01:00
2001-01-18 04:50:48 +01:00
$phpgw -> template -> set_file ( array ( " form " => " account_form.tpl " ));
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-11-06 01:27:52 +01:00
$userData = $phpgw -> accounts -> read_userData ( $account_id );
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 " ];
2001-01-21 02:26:23 +01:00
$apps = CreateObject ( 'phpgwapi.applications' , intval ( $userData [ " account_id " ]));
2000-12-18 22:46:41 +01:00
}
2000-12-18 02:28:30 +01:00
if ( $phpgw_info [ " server " ][ " account_repository " ] == " ldap " ) {
2000-12-26 07:30:51 +01:00
$phpgw -> template -> set_var ( " form_action " , $phpgw -> link ( " editaccount.php " , " account_id= " . rawurlencode ( $userData [ " account_dn " ]) . " &old_loginid= " . $userData [ " account_lid " ]));
2000-12-18 02:28:30 +01:00
} else {
2000-12-26 07:30:51 +01:00
$phpgw -> template -> set_var ( " form_action " , $phpgw -> link ( " editaccount.php " , " account_id= " . $userData [ " account_id " ] . " &old_loginid= " . $userData [ " account_lid " ]));
2000-12-18 02:28:30 +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-12-18 02:28:30 +01:00
$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 );
2000-12-26 01:52:38 +01:00
$phpgw -> template -> set_var ( " lang_account_active " , lang ( " Account active " ));
2000-12-26 07:30:51 +01:00
if ( $userData [ " status " ]) {
$phpgw -> template -> set_var ( " account_checked " , " checked " );
} else {
$phpgw -> template -> set_var ( " account_checked " , " " );
}
2000-12-26 01:52:38 +01:00
2000-12-18 02:28:30 +01:00
$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 ;
2000-12-23 07:28:34 +01:00
$sorted_apps = $phpgw_info [ " apps " ];
2000-12-27 03:10:21 +01:00
@ asort ( $sorted_apps );
@ reset ( $sorted_apps );
2000-12-24 10:52:27 +01:00
while ( $permission = each ( $phpgw_info [ " apps " ])) {
2000-12-18 02:28:30 +01:00
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 ;
2000-12-26 01:52:38 +01:00
$perm_html .= '<tr bgcolor="' . $phpgw_info [ " theme " ][ " row_on " ] . '"><td>' . lang ( $perm_display [ $i ][ 1 ]) . '</td>'
2000-12-18 02:28:30 +01:00
. '<td><input type="checkbox" name="new_permissions['
. $perm_display [ $i ][ 0 ] . ']" value="True"' ;
2001-01-21 02:26:23 +01:00
if ( $new_permissions [ $perm_display [ $i ][ 0 ]] || $apps -> user_apps [ $perm_display [ $i ][ 0 ]]) {
2000-12-18 02:28:30 +01:00
$perm_html .= " checked " ;
}
$perm_html .= " ></td> " ;
$i ++ ;
2000-12-27 03:10:21 +01:00
if ( $i == count ( $perm_display ) && is_odd ( count ( $perm_display ))) {
$perm_html .= '<td colspan="2"> </td></tr>' ;
}
2000-12-18 02:28:30 +01:00
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"' ;
2001-01-21 02:26:23 +01:00
if ( $new_permissions [ $perm_display [ $i ][ 0 ]] || $apps -> user_apps [ $perm_display [ $i ][ 0 ]]) {
2000-12-18 02:28:30 +01:00
$perm_html .= " checked " ;
}
2000-12-27 03:10:21 +01:00
$perm_html .= " ></td></tr> \n " ;
2000-12-18 02:28:30 +01:00
$i ++ ;
}
2000-12-23 07:28:34 +01:00
2000-12-31 17:20:49 +01:00
$phpgw -> template -> set_var ( " permissions_list " , $perm_html );
// start inlcuding other admin tools
while ( list ( $key , $value ) = each ( $phpgw_info [ " user " ][ " app_perms " ]))
{
// check if we have something included, when not ne need to set
// {gui_hooks} to ""
if ( $phpgw -> common -> hook_single ( " show_user_data " , $value )) $includedSomething = " true " ;
}
if ( ! $includedSomething ) $phpgw -> template -> set_var ( " gui_hooks " , " " );
2000-12-26 01:52:38 +01:00
$phpgw -> template -> set_var ( " lang_button " , lang ( " Save " ));
2000-12-18 02:28:30 +01:00
$phpgw -> template -> pparse ( " out " , " form " );
2000-10-20 07:59:25 +02:00
account_close ();
$phpgw -> common -> phpgw_footer ();
2000-09-29 07:24:18 +02:00
?>