2001-09-02 01:32:40 +02:00
< ? php
/************************************************************************** \
2004-01-27 00:26:19 +01:00
* eGroupWare - account administration *
* http :// www . egroupware . org *
2003-08-28 16:16:30 +02:00
* -------------------------------------------- *
2001-09-02 01:32:40 +02:00
* 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 . *
\ **************************************************************************/
2001-09-04 05:29:36 +02:00
/* $Id$ */
2001-09-02 01:32:40 +02:00
class uiaccounts
{
2005-02-28 17:12:31 +01:00
//(regis) maybe some of them should be deleted?
2003-04-23 03:08:32 +02:00
var $public_functions = array
(
2003-08-28 16:16:30 +02:00
'list_groups' => True ,
'list_users' => True ,
'add_group' => True ,
'add_user' => True ,
'delete_group' => True ,
'delete_user' => True ,
'edit_user' => True ,
'edit_user_hook' => True ,
'edit_group' => True ,
'view_user' => True ,
2005-02-28 17:12:31 +01:00
'edit_group_hook' => True ,
2003-09-24 18:48:04 +02:00
'edit_view_user_hook' => True ,
2003-08-28 16:16:30 +02:00
'group_manager' => True ,
2001-09-02 01:32:40 +02:00
);
var $bo ;
var $nextmatchs ;
2004-08-28 15:48:32 +02:00
var $apps_with_acl = array (
'addressbook' => True ,
'todo' => True ,
'calendar' => True ,
'notes' => True ,
'projects' => True ,
'phonelog' => True ,
'infolog' => True ,
'filemanager' => True ,
'tts' => True ,
'bookmarks' => True ,
'img' => True ,
'netsaint' => True ,
'inv' => True ,
'phpbrain' => True ,
2005-06-14 09:44:36 +02:00
'projectmanager' => True ,
2005-12-19 05:17:43 +01:00
'timesheet' => true ,
2004-08-28 15:48:32 +02:00
);
2001-09-02 01:32:40 +02:00
function uiaccounts ()
{
2005-10-14 19:03:16 +02:00
$this -> bo =& CreateObject ( 'admin.boaccounts' );
$this -> nextmatchs =& CreateObject ( 'phpgwapi.nextmatchs' );
2001-11-17 04:09:19 +01:00
@ set_time_limit ( 300 );
2001-09-02 01:32:40 +02:00
}
function row_action ( $action , $type , $account_id )
{
2005-10-14 19:03:16 +02:00
return '<a href="' . $GLOBALS [ 'egw' ] -> link ( '/index.php' , Array (
2001-12-21 04:41:06 +01:00
'menuaction' => 'admin.uiaccounts.' . $action . '_' . $type ,
'account_id' => $account_id
)) . '"> ' . lang ( $action ) . ' </a>' ;
2001-09-02 01:32:40 +02:00
}
2001-09-03 04:58:25 +02:00
function list_groups ()
{
2005-10-14 19:03:16 +02:00
if ( $GLOBALS [ 'egw' ] -> acl -> check ( 'group_access' , 1 , 'admin' ))
2003-04-27 21:28:13 +02:00
{
2005-10-14 19:03:16 +02:00
$GLOBALS [ 'egw' ] -> redirect ( $GLOBALS [ 'egw' ] -> link ( '/admin/index.php' ));
2001-09-04 06:26:51 +02:00
}
2001-09-03 04:58:25 +02:00
2003-04-07 00:29:57 +02:00
$GLOBALS [ 'cd' ] = ( $_GET [ 'cd' ] ? $_GET [ 'cd' ] : 0 );
2004-04-04 20:59:12 +02:00
if ( isset ( $_POST [ 'query' ]))
{
// limit query to limit characters
2004-05-19 08:05:01 +02:00
if ( eregi ( '^[a-z_0-9]+$' , $_POST [ 'query' ]))
$GLOBALS [ 'query' ] = $_POST [ 'query' ];
2004-04-04 20:59:12 +02:00
}
if ( isset ( $_POST [ 'start' ]))
{
$start = ( int ) $_POST [ 'start' ];
}
else
{
$start = 0 ;
}
switch ( $_GET [ 'order' ])
{
case 'account_lid' :
$order = $_GET [ 'order' ];
break ;
default :
$order = 'account_lid' ;
break ;
}
switch ( $_GET [ 'sort' ])
{
case 'ASC' :
case 'DESC' :
$sort = $_GET [ 'sort' ];
break ;
default :
$sort = 'ASC' ;
break ;
}
2003-08-28 16:16:30 +02:00
2005-10-14 19:03:16 +02:00
unset ( $GLOBALS [ 'egw_info' ][ 'flags' ][ 'noheader' ]);
unset ( $GLOBALS [ 'egw_info' ][ 'flags' ][ 'nonavbar' ]);
if ( !@ is_object ( $GLOBALS [ 'egw' ] -> js ))
2004-02-26 10:01:42 +01:00
{
2005-10-14 19:03:16 +02:00
$GLOBALS [ 'egw' ] -> js =& CreateObject ( 'phpgwapi.javascript' );
2004-02-26 10:01:42 +01:00
}
2005-10-14 19:03:16 +02:00
$GLOBALS [ 'egw' ] -> js -> validate_file ( 'jscode' , 'openwindow' , 'admin' );
$GLOBALS [ 'egw_info' ][ 'flags' ][ 'app_header' ] = $GLOBALS [ 'egw_info' ][ 'apps' ][ 'admin' ][ 'title' ] . ' - ' .
2004-05-19 08:05:01 +02:00
lang ( 'User groups' );
2005-10-14 19:03:16 +02:00
$GLOBALS [ 'egw' ] -> common -> egw_header ();
2001-09-03 04:58:25 +02:00
2005-10-14 19:03:16 +02:00
$p =& CreateObject ( 'phpgwapi.Template' , EGW_APP_TPL );
2003-08-28 16:16:30 +02:00
$p -> set_file (
array (
'groups' => 'groups.tpl'
)
);
$p -> set_block ( 'groups' , 'list' , 'list' );
$p -> set_block ( 'groups' , 'row' , 'row' );
$p -> set_block ( 'groups' , 'row_empty' , 'row_empty' );
2003-04-23 23:52:22 +02:00
2005-10-14 19:03:16 +02:00
if ( ! $GLOBALS [ 'egw' ] -> acl -> check ( 'account_access' , 2 , 'admin' ))
2001-09-04 06:26:51 +02:00
{
2005-10-14 19:03:16 +02:00
$account_info = $GLOBALS [ 'egw' ] -> accounts -> get_list ( 'groups' , $start , $sort , $order , $GLOBALS [ 'query' ]);
2001-09-04 06:26:51 +02:00
}
else
{
2005-10-14 19:03:16 +02:00
$account_info = $GLOBALS [ 'egw' ] -> accounts -> get_list ( 'groups' , $start , $sort , $order );
2001-09-04 06:26:51 +02:00
}
2005-10-14 19:03:16 +02:00
$total = $GLOBALS [ 'egw' ] -> accounts -> total ;
2003-08-28 16:16:30 +02:00
$var = Array (
'left_next_matchs' => $this -> nextmatchs -> left ( '/index.php' , $start , $total , 'menuaction=admin.uiaccounts.list_groups' ),
2004-05-19 08:05:01 +02:00
'right_next_matchs' => $this -> nextmatchs -> right ( '/index.php' , $start , $total , 'menuaction=admin.uiaccounts.list_groups' ),
'lang_groups' => lang ( '%1 - %2 of %3 user groups' , $start + 1 , $start + count ( $account_info ), $total ),
2003-08-28 16:16:30 +02:00
'sort_name' => $this -> nextmatchs -> show_sort_order ( $sort , 'account_lid' , $order , '/index.php' , lang ( 'name' ), 'menuaction=admin.uiaccounts.list_groups' ),
'header_edit' => lang ( 'Edit' ),
'header_delete' => lang ( 'Delete' )
2001-12-21 04:41:06 +01:00
);
2003-08-28 16:16:30 +02:00
$p -> set_var ( $var );
2001-09-03 04:58:25 +02:00
2003-08-28 16:16:30 +02:00
if ( ! count ( $account_info ) || ! $total )
{
$p -> set_var ( 'message' , lang ( 'No matches found' ));
$p -> parse ( 'rows' , 'row_empty' , True );
2001-09-03 04:58:25 +02:00
}
2003-08-28 16:16:30 +02:00
else
{
2005-10-14 19:03:16 +02:00
if ( ! $GLOBALS [ 'egw' ] -> acl -> check ( 'group_access' , 8 , 'admin' ))
2003-08-28 16:16:30 +02:00
{
$can_view = True ;
}
2001-09-04 06:26:51 +02:00
2005-10-14 19:03:16 +02:00
if ( ! $GLOBALS [ 'egw' ] -> acl -> check ( 'group_access' , 16 , 'admin' ))
2003-08-28 16:16:30 +02:00
{
$can_edit = True ;
}
2005-10-14 19:03:16 +02:00
if ( ! $GLOBALS [ 'egw' ] -> acl -> check ( 'group_access' , 32 , 'admin' ))
2003-08-28 16:16:30 +02:00
{
$can_delete = True ;
}
2004-05-19 08:05:01 +02:00
foreach ( $account_info as $account )
2003-08-28 16:16:30 +02:00
{
$var = Array (
2005-07-06 04:26:44 +02:00
'class' => $this -> nextmatchs -> alternate_row_color ( '' , True ),
2003-08-28 16:16:30 +02:00
'group_name' => ( ! $account [ 'account_lid' ] ? ' ' : $account [ 'account_lid' ]),
'delete_link' => $this -> row_action ( 'delete' , 'group' , $account [ 'account_id' ])
);
$p -> set_var ( $var );
if ( $can_edit )
{
$p -> set_var ( 'edit_link' , $this -> row_action ( 'edit' , 'group' , $account [ 'account_id' ]));
}
else
{
$p -> set_var ( 'edit_link' , ' ' );
}
if ( $can_delete )
{
$p -> set_var ( 'delete_link' , $this -> row_action ( 'delete' , 'group' , $account [ 'account_id' ]));
}
else
{
$p -> set_var ( 'delete_link' , ' ' );
}
2003-04-23 03:08:32 +02:00
2003-08-28 16:16:30 +02:00
$p -> fp ( 'rows' , 'row' , True );
}
}
$var = Array (
2005-10-14 19:03:16 +02:00
'new_action' => $GLOBALS [ 'egw' ] -> link ( '/index.php' , 'menuaction=admin.uiaccounts.add_group' ),
'search_action' => $GLOBALS [ 'egw' ] -> link ( '/index.php' , 'menuaction=admin.uiaccounts.list_groups' )
2003-04-23 03:08:32 +02:00
);
2003-08-28 16:16:30 +02:00
$p -> set_var ( $var );
2001-09-03 04:58:25 +02:00
2005-10-14 19:03:16 +02:00
if ( ! $GLOBALS [ 'egw' ] -> acl -> check ( 'group_access' , 4 , 'admin' ))
2003-08-28 16:16:30 +02:00
{
$p -> set_var ( 'input_add' , '<input type="submit" value="' . lang ( 'Add' ) . '">' );
}
2005-10-14 19:03:16 +02:00
if ( ! $GLOBALS [ 'egw' ] -> acl -> check ( 'group_access' , 2 , 'admin' ))
2001-09-04 03:12:13 +02:00
{
2004-05-19 08:05:01 +02:00
$p -> set_var ( 'input_search' , lang ( 'Search' ) . ' <input name="query" value="' . htmlspecialchars ( stripslashes ( $GLOBALS [ 'query' ])) . '">' );
2003-04-27 21:28:13 +02:00
}
2003-08-28 16:16:30 +02:00
$p -> pfp ( 'out' , 'list' );
}
function list_users ( $param_cd = '' )
{
2005-10-14 19:03:16 +02:00
if ( $GLOBALS [ 'egw' ] -> acl -> check ( 'account_access' , 1 , 'admin' ))
2003-04-27 21:28:13 +02:00
{
2005-10-14 19:03:16 +02:00
$GLOBALS [ 'egw' ] -> redirect ( $GLOBALS [ 'egw' ] -> link ( '/admin/index.php' ));
2001-09-04 03:12:13 +02:00
}
2005-10-14 19:03:16 +02:00
if ( ! is_object ( $GLOBALS [ 'egw' ] -> html ))
2004-07-04 19:33:13 +02:00
{
2005-10-14 19:03:16 +02:00
$GLOBALS [ 'egw' ] -> html =& CreateObject ( 'phpgwapi.html' );
2004-07-04 19:33:13 +02:00
}
2001-09-04 03:12:13 +02:00
2001-11-16 05:09:21 +01:00
if ( $param_cd )
2001-09-02 01:32:40 +02:00
{
$cd = $param_cd ;
}
2003-08-28 16:16:30 +02:00
2004-07-04 19:33:13 +02:00
if ( isset ( $_REQUEST [ 'query' ]))
2003-08-28 16:16:30 +02:00
{
2004-04-04 20:59:12 +02:00
// limit query to limit characters
2004-07-04 19:33:13 +02:00
if ( eregi ( '^[a-z_0-9]+$' , $_REQUEST [ 'query' ]))
$GLOBALS [ 'query' ] = $_REQUEST [ 'query' ];
2003-08-28 16:16:30 +02:00
}
2004-07-04 19:33:13 +02:00
if ( isset ( $_REQUEST [ 'start' ]))
2003-08-28 16:16:30 +02:00
{
2004-07-04 19:33:13 +02:00
$start = ( int ) $_REQUEST [ 'start' ];
2003-08-28 16:16:30 +02:00
}
else
{
$start = 0 ;
}
2003-04-23 03:08:32 +02:00
2004-07-04 19:33:13 +02:00
switch ( $_REQUEST [ 'order' ])
2003-04-07 00:29:57 +02:00
{
2004-04-04 20:59:12 +02:00
case 'account_lastname' :
case 'account_firstname' :
case 'account_lid' :
2004-07-04 19:33:13 +02:00
case 'account_email' :
$order = $_REQUEST [ 'order' ];
2004-04-04 20:59:12 +02:00
break ;
default :
$order = 'account_lid' ;
break ;
2003-04-07 00:29:57 +02:00
}
2004-04-04 20:59:12 +02:00
2004-07-04 19:33:13 +02:00
switch ( $_REQUEST [ 'sort' ])
2003-04-07 00:29:57 +02:00
{
2004-04-04 20:59:12 +02:00
case 'ASC' :
case 'DESC' :
2004-07-04 19:33:13 +02:00
$sort = $_REQUEST [ 'sort' ];
2004-04-04 20:59:12 +02:00
break ;
default :
$sort = 'ASC' ;
break ;
2003-04-07 00:29:57 +02:00
}
2004-04-04 20:59:12 +02:00
2005-10-14 19:03:16 +02:00
unset ( $GLOBALS [ 'egw_info' ][ 'flags' ][ 'noheader' ]);
unset ( $GLOBALS [ 'egw_info' ][ 'flags' ][ 'nonavbar' ]);
if ( !@ is_object ( $GLOBALS [ 'egw' ] -> js ))
2004-02-26 10:01:42 +01:00
{
2005-10-14 19:03:16 +02:00
$GLOBALS [ 'egw' ] -> js =& CreateObject ( 'phpgwapi.javascript' );
2004-02-26 10:01:42 +01:00
}
2005-10-14 19:03:16 +02:00
$GLOBALS [ 'egw' ] -> js -> validate_file ( 'jscode' , 'openwindow' , 'admin' );
$GLOBALS [ 'egw_info' ][ 'flags' ][ 'app_header' ] = $GLOBALS [ 'egw_info' ][ 'apps' ][ 'admin' ][ 'title' ] . ' - ' .
2004-05-19 08:05:01 +02:00
lang ( 'User accounts' );
2005-10-14 19:03:16 +02:00
$GLOBALS [ 'egw' ] -> common -> egw_header ();
2001-09-02 01:32:40 +02:00
2005-10-14 19:03:16 +02:00
$p =& CreateObject ( 'phpgwapi.Template' , EGW_APP_TPL );
2003-04-23 23:52:22 +02:00
2003-08-28 16:16:30 +02:00
$p -> set_file (
Array (
2004-07-04 19:33:13 +02:00
'list' => 'accounts.tpl'
2003-08-28 16:16:30 +02:00
)
);
2004-07-04 19:33:13 +02:00
$p -> set_block ( 'list' , 'row' , 'rows' );
$p -> set_block ( 'list' , 'row_empty' , 'row_empty' );
$p -> set_block ( 'list' , 'letter_search' , 'letter_search_cells' );
$search_param = array (
2005-12-15 00:27:17 +01:00
'type' => ( int ) $_REQUEST [ 'group_id' ] ? $_REQUEST [ 'group_id' ] : 'accounts' ,
2004-07-04 19:33:13 +02:00
'start' => $start ,
'sort' => $sort ,
'order' => $order ,
'query_type' => $_REQUEST [ 'query_type' ],
);
2005-10-14 19:03:16 +02:00
if ( ! $GLOBALS [ 'egw' ] -> acl -> check ( 'account_access' , 2 , 'admin' ))
2001-09-04 06:26:51 +02:00
{
2004-07-04 19:33:13 +02:00
$search_param [ 'query' ] = $GLOBALS [ 'query' ];
2001-09-04 06:26:51 +02:00
}
2005-10-14 19:03:16 +02:00
$account_info = $GLOBALS [ 'egw' ] -> accounts -> search ( $search_param );
$total = $GLOBALS [ 'egw' ] -> accounts -> total ;
2004-05-19 08:05:01 +02:00
2004-07-04 19:33:13 +02:00
$link_data = array (
'menuaction' => 'admin.uiaccounts.list_users' ,
'group_id' => $_REQUEST [ 'group_id' ],
'query_type' => $_REQUEST [ 'query_type' ],
);
2005-10-14 19:03:16 +02:00
$uiaccountsel =& CreateObject ( 'phpgwapi.uiaccountsel' );
2004-07-04 19:33:13 +02:00
$p -> set_var ( array (
'left_next_matchs' => $this -> nextmatchs -> left ( '/index.php' , $start , $total , $link_data ),
2005-10-14 19:03:16 +02:00
'lang_showing' => ( $_REQUEST [ 'group_id' ] ? $GLOBALS [ 'egw' ] -> common -> grab_owner_name ( $_REQUEST [ 'group_id' ]) . ': ' : '' ) .
2004-07-04 19:33:13 +02:00
( $GLOBALS [ 'query' ] ? lang ( " Search %1 '%2' " , lang ( $uiaccountsel -> query_types [ $_REQUEST [ 'query_type' ]]), $GLOBALS [ 'query' ]) . ': ' : '' )
. $this -> nextmatchs -> show_hits ( $total , $start ),
'right_next_matchs' => $this -> nextmatchs -> right ( '/index.php' , $start , $total , $link_data ),
'lang_loginid' => $this -> nextmatchs -> show_sort_order ( $sort , 'account_lid' , $order , '/index.php' , lang ( 'LoginID' ), $link_data ),
'lang_lastname' => $this -> nextmatchs -> show_sort_order ( $sort , 'account_lastname' , $order , '/index.php' , lang ( 'last name' ), $link_data ),
'lang_firstname' => $this -> nextmatchs -> show_sort_order ( $sort , 'account_firstname' , $order , '/index.php' , lang ( 'first name' ), $link_data ),
'lang_email' => $this -> nextmatchs -> show_sort_order ( $sort , 'account_email' , $order , '/index.php' , lang ( 'email' ), $link_data ),
2003-08-28 16:16:30 +02:00
'lang_edit' => lang ( 'edit' ),
'lang_delete' => lang ( 'delete' ),
'lang_view' => lang ( 'view' ),
'lang_search' => lang ( 'search' )
2004-07-04 19:33:13 +02:00
));
$link_data += array (
'order' => $order ,
'sort' => $sort ,
2001-09-02 01:32:40 +02:00
);
2004-07-04 19:33:13 +02:00
$p -> set_var ( array (
2005-10-14 19:03:16 +02:00
'query_type' => is_array ( $uiaccountsel -> query_types ) ? $GLOBALS [ 'egw' ] -> html -> select ( 'query_type' , $_REQUEST [ 'query_type' ], $uiaccountsel -> query_types ) : '' ,
2004-07-04 19:33:13 +02:00
'lang_group' => lang ( 'group' ),
'group' => $uiaccountsel -> selection ( 'group_id' , 'admin_uiaccount_listusers_group_id' , $_REQUEST [ 'group_id' ], 'groups' , 0 , False , '' , 'this.form.submit();' , lang ( 'all' )),
2005-10-14 19:03:16 +02:00
'accounts_url' => $GLOBALS [ 'egw' ] -> link ( '/index.php' , $link_data ),
2004-07-04 19:33:13 +02:00
));
$letters = lang ( 'alphabet' );
$letters = explode ( ',' , substr ( $letters , - 1 ) != '*' ? $letters : 'a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z' );
$link_data [ 'query_type' ] = 'start' ;
foreach ( $letters as $letter )
{
$link_data [ 'query' ] = $letter ;
$p -> set_var ( array (
'letter' => $letter ,
2005-10-14 19:03:16 +02:00
'link' => $GLOBALS [ 'egw' ] -> link ( '/index.php' , $link_data ),
2004-07-04 19:33:13 +02:00
'class' => $GLOBALS [ 'query' ] == $letter && $_REQUEST [ 'query_type' ] == 'start' ? 'letter_box_active' : 'letter_box' ,
));
$p -> fp ( 'letter_search_cells' , 'letter_search' , True );
}
unset ( $link_data [ 'query' ]);
unset ( $link_data [ 'query_type' ]);
$p -> set_var ( array (
'letter' => lang ( 'all' ),
2005-10-14 19:03:16 +02:00
'link' => $GLOBALS [ 'egw' ] -> link ( '/index.php' , $link_data ),
2004-07-04 19:33:13 +02:00
'class' => $_REQUEST [ 'query_type' ] != 'start' || ! in_array ( $GLOBALS [ 'query' ], $letters ) ? 'letter_box_active' : 'letter_box' ,
));
$p -> fp ( 'letter_search_cells' , 'letter_search' , True );
2005-10-14 19:03:16 +02:00
if ( ! $GLOBALS [ 'egw' ] -> acl -> check ( 'account_access' , 4 , 'admin' ))
2003-08-28 16:16:30 +02:00
{
2005-10-14 19:03:16 +02:00
$p -> set_var ( 'new_action' , $GLOBALS [ 'egw' ] -> link ( '/index.php' , 'menuaction=admin.uiaccounts.add_user' ));
2003-11-05 11:35:53 +01:00
$p -> set_var ( 'input_add' , '<input type="submit" value="' . lang ( 'Add' ) . '">' );
2001-09-04 03:12:13 +02:00
}
2003-08-28 16:16:30 +02:00
if ( ! count ( $account_info ) || ! $total )
2003-04-23 03:08:32 +02:00
{
2003-08-28 16:16:30 +02:00
$p -> set_var ( 'message' , lang ( 'No matches found' ));
$p -> parse ( 'rows' , 'row_empty' , True );
}
else
{
2005-10-14 19:03:16 +02:00
if ( ! $GLOBALS [ 'egw' ] -> acl -> check ( 'account_access' , 8 , 'admin' ))
2003-08-28 16:16:30 +02:00
{
$can_view = True ;
}
2003-04-23 03:08:32 +02:00
2005-10-14 19:03:16 +02:00
if ( ! $GLOBALS [ 'egw' ] -> acl -> check ( 'account_access' , 16 , 'admin' ))
2003-04-23 03:08:32 +02:00
{
2003-08-28 16:16:30 +02:00
$can_edit = True ;
2003-04-23 03:08:32 +02:00
}
2003-08-28 16:16:30 +02:00
2005-10-14 19:03:16 +02:00
if ( ! $GLOBALS [ 'egw' ] -> acl -> check ( 'account_access' , 32 , 'admin' ))
2003-08-28 16:16:30 +02:00
{
$can_delete = True ;
}
2004-07-04 19:33:13 +02:00
foreach ( $account_info as $account )
2003-04-23 03:08:32 +02:00
{
2004-07-04 19:33:13 +02:00
$p -> set_var ( 'class' , $this -> nextmatchs -> alternate_row_color ( '' , True ));
2003-08-28 16:16:30 +02:00
2004-07-04 19:33:13 +02:00
$p -> set_var ( $account );
2003-08-28 16:16:30 +02:00
if ( $can_edit )
{
$p -> set_var ( 'row_edit' , $this -> row_action ( 'edit' , 'user' , $account [ 'account_id' ]));
}
else
2003-04-23 03:08:32 +02:00
{
2003-08-28 16:16:30 +02:00
$p -> set_var ( 'row_edit' , ' ' );
2003-04-23 03:08:32 +02:00
}
2003-08-28 16:16:30 +02:00
if ( $can_delete )
2003-04-23 03:08:32 +02:00
{
2005-10-14 19:03:16 +02:00
$p -> set_var ( 'row_delete' ,( $GLOBALS [ 'egw_info' ][ 'user' ][ 'userid' ] != $account [ 'account_lid' ] ? $this -> row_action ( 'delete' , 'user' , $account [ 'account_id' ]) : ' ' ));
2003-08-28 16:16:30 +02:00
}
else
{
$p -> set_var ( 'row_delete' , ' ' );
2003-04-23 03:08:32 +02:00
}
2003-08-28 16:16:30 +02:00
if ( $can_view )
2003-04-23 03:08:32 +02:00
{
2003-08-28 16:16:30 +02:00
$p -> set_var ( 'row_view' , $this -> row_action ( 'view' , 'user' , $account [ 'account_id' ]));
2003-04-23 03:08:32 +02:00
}
else
{
2003-08-28 16:16:30 +02:00
$p -> set_var ( 'row_view' , ' ' );
2003-04-23 03:08:32 +02:00
}
2003-08-28 16:16:30 +02:00
$p -> parse ( 'rows' , 'row' , True );
2003-04-23 03:08:32 +02:00
}
2003-08-28 16:16:30 +02:00
} // End else
$p -> pfp ( 'out' , 'list' );
}
2003-04-23 03:08:32 +02:00
2003-08-28 16:16:30 +02:00
function add_group ()
{
2005-10-14 19:03:16 +02:00
if ( $GLOBALS [ 'egw' ] -> acl -> check ( 'group_access' , 4 , 'admin' ))
2003-04-23 03:08:32 +02:00
{
2003-08-28 16:16:30 +02:00
$this -> list_groups ();
return False ;
2001-09-04 06:26:51 +02:00
}
2003-08-28 16:16:30 +02:00
$group_info = Array (
'account_id' => $_GET [ 'account_id' ],
'account_name' => '' ,
'account_user' => Array (),
'account_apps' => Array ()
);
$this -> create_edit_group ( $group_info );
}
2001-09-03 04:58:25 +02:00
2003-08-28 16:16:30 +02:00
function add_user ()
{
2005-10-14 19:03:16 +02:00
if ( $GLOBALS [ 'egw' ] -> acl -> check ( 'account_access' , 4 , 'admin' ))
2001-09-03 04:58:25 +02:00
{
2003-08-28 16:16:30 +02:00
$this -> list_users ();
}
else
{
$this -> create_edit_user ( 0 );
}
}
function delete_group ()
{
2005-10-14 19:03:16 +02:00
if ( $_POST [ 'no' ] || $_POST [ 'yes' ] || !@ isset ( $_GET [ 'account_id' ]) || !@ $_GET [ 'account_id' ] || $GLOBALS [ 'egw' ] -> acl -> check ( 'group_access' , 32 , 'admin' ))
2003-08-28 16:16:30 +02:00
{
if ( $_POST [ 'yes' ])
{
$this -> bo -> delete_group ();
}
$this -> list_groups ();
return False ;
2001-09-03 04:58:25 +02:00
}
2003-04-23 03:08:32 +02:00
2005-10-14 19:03:16 +02:00
unset ( $GLOBALS [ 'egw_info' ][ 'flags' ][ 'noheader' ]);
unset ( $GLOBALS [ 'egw_info' ][ 'flags' ][ 'nonavbar' ]);
if ( !@ is_object ( $GLOBALS [ 'egw' ] -> js ))
2004-02-26 10:01:42 +01:00
{
2005-10-14 19:03:16 +02:00
$GLOBALS [ 'egw' ] -> js =& CreateObject ( 'phpgwapi.javascript' );
2004-02-26 10:01:42 +01:00
}
2005-10-14 19:03:16 +02:00
$GLOBALS [ 'egw' ] -> js -> validate_file ( 'jscode' , 'openwindow' , 'admin' );
$GLOBALS [ 'egw' ] -> common -> egw_header ();
2003-08-28 16:16:30 +02:00
2005-10-14 19:03:16 +02:00
$p =& CreateObject ( 'phpgwapi.Template' , EGW_APP_TPL );
2003-08-28 16:16:30 +02:00
$p -> set_file (
Array (
'body' => 'delete_common.tpl' ,
'message_row' => 'message_row.tpl' ,
'form_button' => 'form_button_script.tpl'
)
2003-04-23 03:08:32 +02:00
);
2003-08-28 16:16:30 +02:00
$p -> set_var ( 'message_display' , lang ( 'Are you sure you want to delete this group ?' ));
$p -> parse ( 'messages' , 'message_row' );
2003-04-23 03:08:32 +02:00
2005-10-14 19:03:16 +02:00
$old_group_list = $GLOBALS [ 'egw' ] -> acl -> get_ids_for_location (( int ) $_GET [ 'account_id' ], 1 , 'phpgw_group' );
2003-04-23 03:08:32 +02:00
2003-08-28 16:16:30 +02:00
if ( $old_group_list )
2001-09-03 04:58:25 +02:00
{
2005-10-14 19:03:16 +02:00
$group_name = $GLOBALS [ 'egw' ] -> accounts -> id2name ( $_GET [ 'account_id' ]);
2003-04-23 03:08:32 +02:00
2003-08-28 16:16:30 +02:00
$p -> set_var ( 'message_display' , '<br>' );
$p -> parse ( 'messages' , 'message_row' , True );
2003-04-23 03:08:32 +02:00
2003-08-28 16:16:30 +02:00
$user_list = '' ;
while ( list (, $id ) = each ( $old_group_list ))
2003-04-23 03:08:32 +02:00
{
2005-10-14 19:03:16 +02:00
$user_list .= '<a href="' . $GLOBALS [ 'egw' ] -> link ( '/index.php' ,
2003-08-28 16:16:30 +02:00
Array (
'menuaction' => 'admin.uiaccounts.edit_user' ,
'account_id' => $id
)
2005-10-14 19:03:16 +02:00
) . '">' . $GLOBALS [ 'egw' ] -> common -> grab_owner_name ( $id ) . '</a><br>' ;
2003-04-23 03:08:32 +02:00
}
2003-08-28 16:16:30 +02:00
$p -> set_var ( 'message_display' , $user_list );
$p -> parse ( 'messages' , 'message_row' , True );
$p -> set_var ( 'message_display' , lang ( " Sorry, the above users are still a member of the group %1 " , $group_name )
. '.<br>' . lang ( 'They must be removed before you can continue' ) . '.<br>' . lang ( 'Remove all users from this group' ) . '?' );
$p -> parse ( 'messages' , 'message_row' , True );
2003-04-23 03:08:32 +02:00
}
2001-09-03 04:58:25 +02:00
2003-08-28 16:16:30 +02:00
$var = Array (
2005-10-14 19:03:16 +02:00
'form_action' => $GLOBALS [ 'egw' ] -> link ( '/index.php' , 'menuaction=admin.uiaccounts.delete_group' ),
2003-08-28 16:16:30 +02:00
'hidden_vars' => '<input type="hidden" name="account_id" value="' . $_GET [ 'account_id' ] . '">' ,
'yes' => lang ( 'Yes' ),
'no' => lang ( 'No' )
);
$p -> set_var ( $var );
/*
$p -> parse ( 'yes' , 'form_button' );
2003-04-23 03:08:32 +02:00
2003-08-28 16:16:30 +02:00
$var = Array (
'submit_button' => lang ( 'Submit' ),
2005-10-14 19:03:16 +02:00
'action_url_button' => $GLOBALS [ 'egw' ] -> link ( '/index.php' , 'menuaction=admin.uiaccounts.list_groups' ),
2003-08-28 16:16:30 +02:00
'action_text_button' => ' ' . lang ( 'No' ),
'action_confirm_button' => '' ,
'action_extra_field' => ''
);
$p -> set_var ( $var );
$p -> parse ( 'no' , 'form_button' );
*/
$p -> pparse ( 'phpgw_body' , 'body' );
}
function delete_user ()
{
2005-10-14 19:03:16 +02:00
if ( $GLOBALS [ 'egw' ] -> acl -> check ( 'account_access' , 32 , 'admin' ) || $GLOBALS [ 'egw_info' ][ 'user' ][ 'account_id' ] == $_GET [ 'account_id' ])
2003-04-23 03:08:32 +02:00
{
2003-08-28 16:16:30 +02:00
$this -> list_users ();
return False ;
}
2005-10-14 19:03:16 +02:00
unset ( $GLOBALS [ 'egw_info' ][ 'flags' ][ 'noheader' ]);
unset ( $GLOBALS [ 'egw_info' ][ 'flags' ][ 'nonavbar' ]);
if ( !@ is_object ( $GLOBALS [ 'egw' ] -> js ))
2004-02-26 10:01:42 +01:00
{
2005-10-14 19:03:16 +02:00
$GLOBALS [ 'egw' ] -> js =& CreateObject ( 'phpgwapi.javascript' );
2004-02-26 10:01:42 +01:00
}
2005-10-14 19:03:16 +02:00
$GLOBALS [ 'egw' ] -> js -> validate_file ( 'jscode' , 'openwindow' , 'admin' );
$GLOBALS [ 'egw' ] -> common -> egw_header ();
2003-04-23 03:08:32 +02:00
2005-10-14 19:03:16 +02:00
$t =& CreateObject ( 'phpgwapi.Template' , EGW_APP_TPL );
2003-08-28 16:16:30 +02:00
$t -> set_file (
Array (
'form' => 'delete_account.tpl'
)
2003-04-23 03:08:32 +02:00
);
2003-08-28 16:16:30 +02:00
$var = Array (
2005-10-14 19:03:16 +02:00
'form_action' => $GLOBALS [ 'egw' ] -> link ( '/index.php' , 'menuaction=admin.boaccounts.delete_user' ),
2003-08-28 16:16:30 +02:00
'account_id' => $_GET [ 'account_id' ]
2003-04-23 03:08:32 +02:00
);
2003-08-28 16:16:30 +02:00
// the account can have special chars/white spaces, if it is a ldap dn
$account_id = rawurlencode ( $_GET [ 'account_id' ]);
2003-04-23 03:08:32 +02:00
2003-08-28 16:16:30 +02:00
// Find out who the new owner is of the deleted users records...
2005-10-14 19:03:16 +02:00
$users = $GLOBALS [ 'egw' ] -> accounts -> get_list ( 'accounts' );
2003-08-28 16:16:30 +02:00
$c_users = count ( $users );
$str = '' ;
for ( $i = 0 ; $i < $c_users ; $i ++ )
{
2005-10-14 19:03:16 +02:00
$str .= '<option value=' . $users [ $i ][ 'account_id' ] . '>' . $GLOBALS [ 'egw' ] -> common -> display_fullname ( $users [ $i ][ 'account_lid' ], $users [ $i ][ 'account_firstname' ], $users [ $i ][ 'account_lastname' ]) . '</option>' . " \n " ;
2003-08-28 16:16:30 +02:00
}
$var [ 'lang_new_owner' ] = lang ( 'Who would you like to transfer ALL records owned by the deleted user to?' );
$var [ 'new_owner_select' ] = '<select name="new_owner" size="5">' . " \n " . '<option value=0 selected>' . lang ( 'Delete All Records' ) . '</option>' . " \n " . $str . '</select>' . " \n " ;
$var [ 'cancel' ] = lang ( 'cancel' );
$var [ 'delete' ] = lang ( 'delete' );
$t -> set_var ( $var );
$t -> pparse ( 'out' , 'form' );
2001-09-03 04:58:25 +02:00
}
2005-02-28 17:12:31 +01:00
// (regis) why only for users, it works with groups as well so I add it
// I use it on the workflow app to add monitoring rights for some users
// and we could have history of connexions for members groups.
function edit_group_hook () // (regis) why only for users, it works with groups as well so I add it
{
if ( $_GET [ 'account_id' ] && // can't set it on add
2005-10-14 19:03:16 +02:00
! $GLOBALS [ 'egw' ] -> acl -> check ( 'account_access' , 64 , 'admin' )) // no rights to set ACL-rights
2005-02-28 17:12:31 +01:00
{
$GLOBALS [ 'menuData' ][] = array (
'description' => 'ACL Rights' ,
'url' => '/index.php' ,
'extradata' => 'menuaction=admin.uiaclmanager.list_apps'
);
}
}
2003-08-28 16:16:30 +02:00
function edit_group ( $cd = '' , $account_id = '' )
2001-09-02 01:32:40 +02:00
{
2005-10-14 19:03:16 +02:00
if ( $GLOBALS [ 'egw' ] -> acl -> check ( 'group_access' , 16 , 'admin' ))
2003-04-27 02:17:58 +02:00
{
2003-08-28 16:16:30 +02:00
$this -> list_groups ();
return False ;
2003-04-27 02:17:58 +02:00
}
2003-08-28 16:16:30 +02:00
$cdid = $cd ;
2001-09-02 01:32:40 +02:00
settype ( $cd , 'integer' );
2003-12-20 19:51:51 +01:00
$cd = ( $_GET [ 'cd' ] ? $_GET [ 'cd' ] : ( int ) $cdid );
2001-09-02 01:32:40 +02:00
$accountid = $account_id ;
settype ( $account_id , 'integer' );
2003-12-20 19:51:51 +01:00
$account_id = ( $_GET [ 'account_id' ] ? $_GET [ 'account_id' ] : ( int ) $accountid );
2001-09-02 01:32:40 +02:00
2003-08-28 16:16:30 +02:00
// todo
// not needed if i use the same file for new groups too
if ( ! $account_id )
2001-09-02 01:32:40 +02:00
{
2003-08-28 16:16:30 +02:00
$this -> list_groups ();
2003-04-27 02:17:58 +02:00
}
2003-08-28 16:16:30 +02:00
else
2001-09-02 01:32:40 +02:00
{
2003-08-28 16:16:30 +02:00
$group_info = Array (
2003-12-20 19:51:51 +01:00
'account_id' => ( int ) $_GET [ 'account_id' ],
2005-10-14 19:03:16 +02:00
'account_name' => $GLOBALS [ 'egw' ] -> accounts -> id2name ( $_GET [ 'account_id' ]),
2003-08-28 16:16:30 +02:00
'account_user' => $this -> bo -> load_group_users ( $_GET [ 'account_id' ]),
'account_apps' => $this -> bo -> load_group_apps ( $_GET [ 'account_id' ])
);
2001-09-02 01:32:40 +02:00
2003-08-28 16:16:30 +02:00
$this -> create_edit_group ( $group_info );
2001-09-02 01:32:40 +02:00
}
2003-08-28 16:16:30 +02:00
}
2001-09-02 01:32:40 +02:00
2003-08-28 16:16:30 +02:00
function edit_view_user_hook ()
{
2005-10-14 19:03:16 +02:00
if ( ! $GLOBALS [ 'egw' ] -> acl -> check ( 'current_sessions_access' , 1 , 'admin' )) // no rights to view
2001-09-02 01:32:40 +02:00
{
2003-08-28 16:16:30 +02:00
$GLOBALS [ 'menuData' ][] = array (
'description' => 'Login History' ,
'url' => '/index.php' ,
'extradata' => 'menuaction=admin.uiaccess_history.list_history'
);
2001-09-02 01:32:40 +02:00
}
2003-08-28 16:16:30 +02:00
// not sure if this realy belongs here, or only in edit_user
if ( $_GET [ 'account_id' ] && // can't set it on add
2005-10-14 19:03:16 +02:00
! $GLOBALS [ 'egw' ] -> acl -> check ( 'account_access' , 64 , 'admin' )) // no rights to set ACL-rights
2001-09-02 01:32:40 +02:00
{
2003-08-28 16:16:30 +02:00
$GLOBALS [ 'menuData' ][] = array (
'description' => 'ACL Rights' ,
'url' => '/index.php' ,
'extradata' => 'menuaction=admin.uiaclmanager.list_apps'
2003-04-27 02:17:58 +02:00
);
2003-04-28 01:16:15 +02:00
}
2004-08-26 00:29:28 +02:00
// NDEE210804
// added for different way of handling ldap entries inside account manager
// we show this only, if accounts are stored in ldap
2005-10-14 19:03:16 +02:00
if ( $GLOBALS [ 'egw_info' ][ 'server' ][ 'account_repository' ] == " ldap " )
2004-08-26 00:29:28 +02:00
{
$GLOBALS [ 'menuData' ][] = array (
'description' => 'LDAP-MGR' ,
'url' => '/index.php' ,
'extradata' => 'menuaction=admin.uildap_mgr.editUserData'
);
}
//NDEE
2003-08-28 16:16:30 +02:00
}
2003-04-27 02:17:58 +02:00
2003-08-28 16:16:30 +02:00
function edit_user ( $cd = '' , $account_id = '' )
{
2005-10-14 19:03:16 +02:00
if ( $GLOBALS [ 'egw' ] -> acl -> check ( 'account_access' , 16 , 'admin' ))
2003-04-28 01:16:15 +02:00
{
2003-08-28 16:16:30 +02:00
$this -> list_users ();
return False ;
2001-09-02 01:32:40 +02:00
}
2003-08-28 16:16:30 +02:00
$cdid = $cd ;
settype ( $cd , 'integer' );
2003-12-20 19:51:51 +01:00
$cd = ( $_GET [ 'cd' ] ? $_GET [ 'cd' ] : ( int ) $cdid );
2001-09-02 01:32:40 +02:00
2003-08-28 16:16:30 +02:00
$accountid = $account_id ;
settype ( $account_id , 'integer' );
2003-12-20 19:51:51 +01:00
$account_id = ( int )( $_GET [ 'account_id' ] ? $_GET [ 'account_id' ] : $accountid );
2003-08-28 16:16:30 +02:00
// todo
// not needed if i use the same file for new users too
if ( ! $account_id )
2003-04-27 02:17:58 +02:00
{
2003-08-28 16:16:30 +02:00
$this -> list_users ();
return False ;
2003-04-27 02:17:58 +02:00
}
2003-08-28 16:16:30 +02:00
else
2003-04-27 02:17:58 +02:00
{
2003-08-28 16:16:30 +02:00
$this -> create_edit_user ( $account_id );
2003-04-27 02:17:58 +02:00
}
}
function view_user ()
{
2005-10-14 19:03:16 +02:00
if ( $GLOBALS [ 'egw' ] -> acl -> check ( 'account_access' , 8 , 'admin' ) || ! $_GET [ 'account_id' ])
2003-04-27 02:17:58 +02:00
{
$this -> list_users ();
return False ;
}
2005-10-14 19:03:16 +02:00
unset ( $GLOBALS [ 'egw_info' ][ 'flags' ][ 'noheader' ]);
unset ( $GLOBALS [ 'egw_info' ][ 'flags' ][ 'nonavbar' ]);
if ( !@ is_object ( $GLOBALS [ 'egw' ] -> js ))
2004-02-26 10:01:42 +01:00
{
2005-10-14 19:03:16 +02:00
$GLOBALS [ 'egw' ] -> js =& CreateObject ( 'phpgwapi.javascript' );
2004-02-26 10:01:42 +01:00
}
2005-10-14 19:03:16 +02:00
$GLOBALS [ 'egw' ] -> js -> validate_file ( 'jscode' , 'openwindow' , 'admin' );
$GLOBALS [ 'egw' ] -> common -> egw_header ();
2003-04-27 02:17:58 +02:00
2005-10-14 19:03:16 +02:00
$t =& CreateObject ( 'phpgwapi.Template' , EGW_APP_TPL );
2003-04-27 02:17:58 +02:00
$t -> set_unknowns ( 'remove' );
$t -> set_file (
Array (
'account' => 'account_form.tpl'
)
);
$t -> set_block ( 'account' , 'form' , 'form' );
$t -> set_block ( 'account' , 'form_logininfo' );
$t -> set_block ( 'account' , 'link_row' );
$var = Array (
2005-10-14 19:03:16 +02:00
'tr_color1' => $GLOBALS [ 'egw_info' ][ 'theme' ][ 'row_on' ],
'tr_color2' => $GLOBALS [ 'egw_info' ][ 'theme' ][ 'row_off' ],
2003-04-27 02:17:58 +02:00
'lang_action' => lang ( 'View user account' ),
'lang_loginid' => lang ( 'LoginID' ),
'lang_account_active' => lang ( 'Account active' ),
'lang_lastname' => lang ( 'Last Name' ),
'lang_groups' => lang ( 'Groups' ),
2003-08-28 16:16:30 +02:00
'lang_anonymous' => lang ( 'Anonymous user (not shown in list sessions)' ),
'lang_changepassword' => lang ( 'Can change password' ),
2003-04-27 02:17:58 +02:00
'lang_firstname' => lang ( 'First Name' ),
'lang_lastlogin' => lang ( 'Last login' ),
'lang_lastloginfrom' => lang ( 'Last login from' ),
'lang_expires' => lang ( 'Expires' )
);
$t -> parse ( 'password_fields' , 'form_logininfo' , True );
2005-10-14 19:03:16 +02:00
$account =& CreateObject ( 'phpgwapi.accounts' ,( int ) $_GET [ 'account_id' ], 'u' );
2003-04-27 02:17:58 +02:00
$userData = $account -> read_repository ();
$var [ 'account_lid' ] = $userData [ 'account_lid' ];
$var [ 'account_firstname' ] = $userData [ 'firstname' ];
$var [ 'account_lastname' ] = $userData [ 'lastname' ];
2005-10-14 19:03:16 +02:00
$acl =& CreateObject ( 'phpgwapi.acl' ,( int ) $_GET [ 'account_id' ]);
2003-08-28 16:16:30 +02:00
$var [ 'anonymous' ] = $acl -> check ( 'anonymous' , 1 , 'phpgwapi' ) ? ' X' : ' ' ;
$var [ 'changepassword' ] = $acl -> check ( 'changepassword' , 0xFFFF , 'preferences' ) ? ' X' : ' ' ;
unset ( $acl );
2003-04-27 02:17:58 +02:00
if ( $userData [ 'status' ])
{
$var [ 'account_status' ] = lang ( 'Enabled' );
}
else
{
$var [ 'account_status' ] = '<b>' . lang ( 'Disabled' ) . '</b>' ;
}
// Last login time
if ( $userData [ 'lastlogin' ])
{
2005-10-14 19:03:16 +02:00
$var [ 'account_lastlogin' ] = $GLOBALS [ 'egw' ] -> common -> show_date ( $userData [ 'lastlogin' ]);
2003-04-27 02:17:58 +02:00
}
else
{
$var [ 'account_lastlogin' ] = lang ( 'Never' );
}
// Last login IP
if ( $userData [ 'lastloginfrom' ])
{
$var [ 'account_lastloginfrom' ] = $userData [ 'lastloginfrom' ];
}
else
{
$var [ 'account_lastloginfrom' ] = lang ( 'Never' );
}
// Account expires
if ( $userData [ 'expires' ] != - 1 )
{
2005-10-14 19:03:16 +02:00
$var [ 'input_expires' ] = $GLOBALS [ 'egw' ] -> common -> show_date ( $userData [ 'expires' ]);
2003-04-27 02:17:58 +02:00
}
else
{
$var [ 'input_expires' ] = lang ( 'Never' );
}
// Find out which groups they are members of
2003-12-20 19:51:51 +01:00
$usergroups = $account -> membership (( int ) $_GET [ 'account_id' ]);
if ( !@ is_array ( $usergroups ))
2003-04-27 02:17:58 +02:00
{
$var [ 'groups_select' ] = lang ( 'None' );
}
else
{
while ( list (, $group ) = each ( $usergroups ))
{
$group_names [] = $group [ 'account_name' ];
}
2003-08-28 16:16:30 +02:00
$var [ 'groups_select' ] = implode ( ', ' , $group_names );
2003-04-27 02:17:58 +02:00
}
$account_lastlogin = $userData [ 'account_lastlogin' ];
$account_lastloginfrom = $userData [ 'account_lastloginfrom' ];
$account_status = $userData [ 'account_status' ];
// create list of available app
$i = 0 ;
2003-12-20 19:51:51 +01:00
2005-10-14 19:03:16 +02:00
$availableApps = $GLOBALS [ 'egw_info' ][ 'apps' ];
2003-04-27 02:17:58 +02:00
@ asort ( $availableApps );
@ reset ( $availableApps );
2003-08-28 16:16:30 +02:00
foreach ( $availableApps as $app => $data )
2003-04-27 02:17:58 +02:00
{
2003-08-28 16:16:30 +02:00
if ( $data [ 'enabled' ] && $data [ 'status' ] != 2 )
2003-04-27 02:17:58 +02:00
{
2003-08-28 16:16:30 +02:00
$perm_display [ $i ][ 'appName' ] = $app ;
$perm_display [ $i ][ 'title' ] = $data [ 'title' ];
2003-04-27 02:17:58 +02:00
$i ++ ;
}
}
// create apps output
2005-10-14 19:03:16 +02:00
$apps =& CreateObject ( 'phpgwapi.applications' ,( int ) $_GET [ 'account_id' ]);
2003-04-27 02:17:58 +02:00
$db_perms = $apps -> read_account_specific ();
@ reset ( $db_perms );
2003-08-28 16:16:30 +02:00
for ( $i = 0 ; $i < count ( $perm_display ); $i ++ )
2001-09-02 01:32:40 +02:00
{
2003-08-28 16:16:30 +02:00
if ( $perm_display [ $i ][ 'title' ])
2001-09-02 01:32:40 +02:00
{
2003-08-28 16:16:30 +02:00
$part1 = sprintf ( " <td>%s</td><td>%s</td> " , $perm_display [ $i ][ 'title' ],( $_userData [ 'account_permissions' ][ $perm_display [ $i ][ 'appName' ]] || $db_perms [ $perm_display [ $i ][ 'appName' ]] ? ' X' : ' ' ));
2001-09-02 01:32:40 +02:00
}
2001-12-21 04:41:06 +01:00
$i ++ ;
2001-09-02 01:32:40 +02:00
2003-08-28 16:16:30 +02:00
if ( $perm_display [ $i ][ 'title' ])
2001-09-02 01:32:40 +02:00
{
2003-08-28 16:16:30 +02:00
$part2 = sprintf ( " <td>%s</td><td>%s</td> " , $perm_display [ $i ][ 'title' ],( $_userData [ 'account_permissions' ][ $perm_display [ $i ][ 'appName' ]] || $db_perms [ $perm_display [ $i ][ 'appName' ]] ? ' X' : ' ' ));
2001-09-02 01:32:40 +02:00
}
else
{
$part2 = '<td colspan="2"> </td>' ;
}
2001-12-21 04:41:06 +01:00
2005-10-14 19:03:16 +02:00
$appRightsOutput .= sprintf ( " <tr bgcolor= \" %s \" > $part1 $part2 </tr> \n " , $GLOBALS [ 'egw_info' ][ 'theme' ][ 'row_on' ]);
2001-09-02 01:32:40 +02:00
}
2003-04-27 02:17:58 +02:00
$var [ 'permissions_list' ] = $appRightsOutput ;
2001-09-02 01:32:40 +02:00
2001-12-21 04:41:06 +01:00
// create the menu on the left, if needed
2005-10-14 19:03:16 +02:00
// $menuClass =& CreateObject('admin.uimenuclass');
2001-12-27 16:14:02 +01:00
// This is now using ExecMethod()
2003-04-27 02:17:58 +02:00
$var [ 'rows' ] = ExecMethod ( 'admin.uimenuclass.createHTMLCode' , 'view_user' );
$t -> set_var ( $var );
$t -> pfp ( 'out' , 'form' );
}
2003-08-28 16:16:30 +02:00
function group_manager ( $cd = '' , $account_id = '' )
2003-04-27 02:17:58 +02:00
{
2005-10-14 19:03:16 +02:00
if ( $GLOBALS [ 'egw' ] -> acl -> check ( 'group_access' , 16 , 'admin' ))
2003-04-27 02:17:58 +02:00
{
2003-08-28 16:16:30 +02:00
$this -> list_groups ();
return False ;
2003-04-27 02:17:58 +02:00
}
2003-08-28 16:16:30 +02:00
$cdid = $cd ;
settype ( $cd , 'integer' );
2003-12-20 19:51:51 +01:00
$cd = ( $_GET [ 'cd' ] ? $_GET [ 'cd' ] : ( int ) $cdid );
2003-08-28 16:16:30 +02:00
$accountid = $account_id ;
settype ( $account_id , 'integer' );
2003-12-20 19:51:51 +01:00
$account_id = ( int )( $_GET [ 'account_id' ] ? $_GET [ 'account_id' ] : $accountid );
2003-08-28 16:16:30 +02:00
// todo
// not needed if i use the same file for new groups too
if ( ! $account_id )
2003-04-27 02:17:58 +02:00
{
2003-08-28 16:16:30 +02:00
$this -> list_groups ();
2003-04-27 02:17:58 +02:00
}
2003-08-28 16:16:30 +02:00
else
{
$group_info = Array (
2003-12-20 19:51:51 +01:00
'account_id' => ( int ) $_GET [ 'account_id' ],
2005-10-14 19:03:16 +02:00
'account_name' => $GLOBALS [ 'egw' ] -> accounts -> id2name ( $_GET [ 'account_id' ]),
'account_user' => $GLOBALS [ 'egw' ] -> accounts -> member ( $_GET [ 'account_id' ]),
2003-08-28 16:16:30 +02:00
'account_managers' => $this -> bo -> load_group_managers ( $_GET [ 'account_id' ])
);
2003-04-27 02:17:58 +02:00
2003-08-28 16:16:30 +02:00
$this -> edit_group_managers ( $group_info );
}
}
function create_edit_group ( $group_info , $_errors = '' )
{
2005-10-14 19:03:16 +02:00
$sbox =& CreateObject ( 'phpgwapi.sbox' );
2003-04-27 02:17:58 +02:00
2005-10-14 19:03:16 +02:00
unset ( $GLOBALS [ 'egw_info' ][ 'flags' ][ 'noheader' ]);
unset ( $GLOBALS [ 'egw_info' ][ 'flags' ][ 'nonavbar' ]);
if ( !@ is_object ( $GLOBALS [ 'egw' ] -> js ))
2004-02-26 10:01:42 +01:00
{
2005-10-14 19:03:16 +02:00
$GLOBALS [ 'egw' ] -> js =& CreateObject ( 'phpgwapi.javascript' );
2004-02-26 10:01:42 +01:00
}
2005-10-14 19:03:16 +02:00
$GLOBALS [ 'egw' ] -> js -> validate_file ( 'jscode' , 'openwindow' , 'admin' );
$GLOBALS [ 'egw' ] -> common -> egw_header ();
2003-08-28 16:16:30 +02:00
2005-10-14 19:03:16 +02:00
$p =& CreateObject ( 'phpgwapi.Template' , EGW_APP_TPL );
2003-08-28 16:16:30 +02:00
$p -> set_file ( Array ( 'edit' => 'group_form.tpl' ));
$p -> set_block ( 'edit' , 'select' );
$p -> set_block ( 'edit' , 'popwin' );
2005-01-28 21:12:28 +01:00
//fix from Maanus 280105
2005-10-14 19:03:16 +02:00
$accounts =& CreateObject ( 'phpgwapi.accounts' , $group_info [ 'account_id' ], 'g' );
2003-08-28 16:16:30 +02:00
2005-10-14 19:03:16 +02:00
if ( ! is_object ( $GLOBALS [ 'egw' ] -> uiaccountsel ))
2003-04-27 02:17:58 +02:00
{
2005-10-14 19:03:16 +02:00
$GLOBALS [ 'egw' ] -> uiaccountsel =& CreateObject ( 'phpgwapi.uiaccountsel' );
2003-08-28 16:16:30 +02:00
}
2005-12-02 15:06:25 +01:00
$p -> set_var ( 'accounts' , $GLOBALS [ 'egw' ] -> uiaccountsel -> selection ( 'account_user[]' , 'admin_uiaccounts_user' , $group_info [ 'account_user' ], 'accounts' , min ( 3 + count ( $group_info [ 'account_user' ]), 10 ), false , 'style="width: 300px;"' ));
2003-08-28 16:16:30 +02:00
$var = Array (
2005-10-14 19:03:16 +02:00
'form_action' => $GLOBALS [ 'egw' ] -> link ( '/index.php' , 'menuaction=admin.boaccounts.' . ( $group_info [ 'account_id' ] ? 'edit' : 'add' ) . '_group' ),
2003-08-28 16:16:30 +02:00
'hidden_vars' => '<input type="hidden" name="account_id" value="' . $group_info [ 'account_id' ] . '">' ,
'lang_group_name' => lang ( 'group name' ),
'group_name_value' => $group_info [ 'account_name' ],
'lang_include_user' => lang ( 'Select users for inclusion' ),
2005-10-14 19:03:16 +02:00
'error' => ( ! $_errors ? '' : '<center>' . $GLOBALS [ 'egw' ] -> common -> error_list ( $_errors ) . '</center>' ),
2003-08-28 16:16:30 +02:00
'lang_permissions' => lang ( 'Permissions this group has' )
);
$p -> set_var ( $var );
$group_repository = $accounts -> read_repository ();
if ( ! $group_repository [ 'file_space' ])
{
2005-10-14 19:03:16 +02:00
$group_repository [ 'file_space' ] = $GLOBALS [ 'egw_info' ][ 'server' ][ 'vfs_default_account_size_number' ] . " - " . $GLOBALS [ 'egw_info' ][ 'server' ][ 'vfs_default_account_size_type' ];
2003-08-28 16:16:30 +02:00
}
/*
$file_space_array = explode ( '-' , $group_repository [ 'file_space' ]);
$account_file_space_types = array ( 'gb' , 'mb' , 'kb' , 'b' );
while ( list ( $num , $type ) = each ( $account_file_space_types ))
{
$account_file_space_select .= '<option value="' . $type . '"' . ( $type == $file_space_array [ 1 ] ? ' selected' : '' ) . '>' . strtoupper ( $type ) . '</option>' . " \n " ;
}
$p -> set_var ( 'lang_file_space' , lang ( 'File space' ));
$p -> set_var ( 'account_file_space' , '<input type=text name="account_file_space_number" value="' . trim ( $file_space_array [ 0 ]) . '" size="7">' );
$p -> set_var ( 'account_file_space_select' , '<select name="account_file_space_type">' . " \n " . $account_file_space_select . '</select>' . " \n " );
*/
2005-10-14 19:03:16 +02:00
reset ( $GLOBALS [ 'egw_info' ][ 'apps' ]);
$sorted_apps = $GLOBALS [ 'egw_info' ][ 'apps' ];
2003-08-28 16:16:30 +02:00
@ asort ( $sorted_apps );
@ reset ( $sorted_apps );
while ( $permission = each ( $sorted_apps ))
{
if ( $permission [ 1 ][ 'enabled' ] && $permission [ 1 ][ 'status' ] != 3 )
2003-04-27 02:17:58 +02:00
{
2003-08-28 16:16:30 +02:00
$perm_display [] = Array (
$permission [ 0 ],
$permission [ 1 ][ 'title' ]
2003-04-27 02:17:58 +02:00
);
}
2003-08-28 16:16:30 +02:00
}
2003-04-27 02:17:58 +02:00
2004-08-28 15:48:32 +02:00
$perm_html = '<td width="35%">' . lang ( 'Application' ) . '</td><td width="15%">' . lang ( 'enabled' ) . ' / ' . lang ( 'ACL' ) . '</td>' ;
$perm_html = '<tr class="th">' .
2003-08-28 16:16:30 +02:00
$perm_html . $perm_html . " </tr> \n " ;
2005-10-14 19:03:16 +02:00
$tr_color = $GLOBALS [ 'egw_info' ][ 'theme' ][ 'row_off' ];
2003-08-28 16:16:30 +02:00
for ( $i = 0 ; $i < count ( $perm_display ); $i ++ )
{
$app = $perm_display [ $i ][ 0 ];
if ( ! ( $i & 1 ))
{
2005-07-06 04:26:44 +02:00
$tr_class = $this -> nextmatchs -> alternate_row_color ( '' , True );
$perm_html .= '<tr class="' . $tr_class . '">' ;
2003-08-28 16:16:30 +02:00
}
2004-08-28 15:48:32 +02:00
$perm_html .= '<td>' . $perm_display [ $i ][ 1 ] . '</td>'
. '<td><input type="checkbox" name="account_apps['
. $perm_display [ $i ][ 0 ] . ']" value="True"' . ( $group_info [ 'account_apps' ][ $app ] ? ' checked' : '' ) . '> '
2005-10-14 19:03:16 +02:00
. ( $this -> apps_with_acl [ $app ] && $group_info [ 'account_id' ] ? '<a href="' . $GLOBALS [ 'egw' ] -> link ( '/index.php' , 'menuaction=preferences.uiaclprefs.index&acl_app=' . $app . '&owner=' . $group_info [ 'account_id' ])
. '"><img src="' . $GLOBALS [ 'egw' ] -> common -> image ( 'phpgwapi' , 'edit' ) . '" border="0" hspace="3" align="absmiddle" title="'
2004-03-23 14:45:23 +01:00
. lang ( 'Grant Access' ) . ': ' . lang ( " edit group ACL's " ) . '"></a>' : ' ' ) . '</td>' . ( $i & 1 ? '</tr>' : '' ) . " \n " ;
2003-08-28 16:16:30 +02:00
}
if ( $i & 1 )
{
$perm_html .= '<td colspan="4"> </td></tr>' ;
2003-04-27 02:17:58 +02:00
}
2003-08-28 16:16:30 +02:00
$var = Array (
'permissions_list' => $perm_html ,
'lang_submit_button' => lang ( 'submit changes' )
);
$p -> set_var ( $var );
// create the menu on the left, if needed
$p -> set_var ( 'rows' , ExecMethod ( 'admin.uimenuclass.createHTMLCode' , 'group_manager' ));
$p -> set_var ( 'select' , '' );
$p -> set_var ( 'popwin' , '' );
$p -> pfp ( 'out' , 'edit' );
2003-04-27 02:17:58 +02:00
}
2003-08-28 16:16:30 +02:00
function create_edit_user ( $_account_id , $_userData = '' , $_errors = '' )
2003-04-27 02:17:58 +02:00
{
2006-04-16 14:31:00 +02:00
$GLOBALS [ 'egw_info' ][ 'flags' ][ 'include_xajax' ] = true ;
2005-10-14 19:03:16 +02:00
$sbox =& CreateObject ( 'phpgwapi.sbox' );
$jscal =& CreateObject ( 'phpgwapi.jscalendar' );
2003-08-28 16:16:30 +02:00
2005-10-14 19:03:16 +02:00
unset ( $GLOBALS [ 'egw_info' ][ 'flags' ][ 'noheader' ]);
unset ( $GLOBALS [ 'egw_info' ][ 'flags' ][ 'nonavbar' ]);
if ( !@ is_object ( $GLOBALS [ 'egw' ] -> js ))
2004-02-26 10:01:42 +01:00
{
2005-10-14 19:03:16 +02:00
$GLOBALS [ 'egw' ] -> js =& CreateObject ( 'phpgwapi.javascript' );
2004-02-26 10:01:42 +01:00
}
2005-10-14 19:03:16 +02:00
$GLOBALS [ 'egw' ] -> js -> validate_file ( 'jscode' , 'openwindow' , 'admin' );
2005-01-28 21:12:28 +01:00
2005-10-14 19:03:16 +02:00
$GLOBALS [ 'egw' ] -> common -> egw_header ();
2003-04-27 02:17:58 +02:00
2005-10-14 19:03:16 +02:00
$t =& CreateObject ( 'phpgwapi.Template' , EGW_APP_TPL );
2003-08-28 16:16:30 +02:00
$t -> set_unknowns ( 'remove' );
2005-10-14 19:03:16 +02:00
if ( $GLOBALS [ 'egw_info' ][ 'server' ][ 'ldap_extra_attributes' ] && ( $GLOBALS [ 'egw_info' ][ 'server' ][ 'account_repository' ] == 'ldap' ))
2003-08-28 16:16:30 +02:00
{
$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' );
2005-10-14 19:03:16 +02:00
$theme = $GLOBALS [ 'egw_info' ][ 'user' ][ 'preferences' ][ 'common' ][ 'theme' ];
$t -> set_var ( 'icon_create_edit' , '<img src="' . $GLOBALS [ 'egw_info' ][ 'server' ][ 'webserver_url' ] . '/admin/templates/' . $theme . '/images/useradm.gif">' );
2005-01-28 21:12:28 +01:00
2006-04-30 14:18:47 +02:00
//print_debug('Type : '.gettype($_userData).'<br>_userData(size) = "'.$_userData.'"('.strlen($_userData).')');
2003-08-28 16:16:30 +02:00
if ( is_array ( $_userData ))
{
$userData = Array ();
$userData = $_userData ;
2004-07-12 21:54:44 +02:00
$userData [ 'firstname' ] = $userData [ 'account_firstname' ];
$userData [ 'lastname' ] = $userData [ 'account_lastname' ];
2003-08-28 16:16:30 +02:00
@ reset ( $userData [ 'account_groups' ]);
while ( list ( $key , $value ) = @ each ( $userData [ 'account_groups' ]))
{
$userGroups [ $key ][ 'account_id' ] = $value ;
}
2005-10-14 19:03:16 +02:00
$account =& CreateObject ( 'phpgwapi.accounts' );
2003-08-28 16:16:30 +02:00
$allGroups = $account -> get_list ( 'groups' );
}
elseif ( is_string ( $_userData ) && $_userData == '' )
{
if ( $_account_id )
{
2005-10-14 19:03:16 +02:00
$account =& CreateObject ( 'phpgwapi.accounts' ,( int ) $_account_id , 'u' );
2003-08-28 16:16:30 +02:00
$userData = $account -> read_repository ();
$userGroups = $account -> membership ( $_account_id );
2005-10-14 19:03:16 +02:00
$acl =& CreateObject ( 'phpgwapi.acl' , $_account_id );
2003-08-28 16:16:30 +02:00
$acl -> read_repository ();
$userData [ 'anonymous' ] = $acl -> check ( 'anonymous' , 1 , 'phpgwapi' );
$userData [ 'changepassword' ] = $acl -> check ( 'changepassword' , 0xFFFF , 'preferences' );
unset ( $acl );
}
else
{
2005-10-14 19:03:16 +02:00
$account =& CreateObject ( 'phpgwapi.accounts' );
2003-08-28 16:16:30 +02:00
$userData = Array ();
$userData [ 'status' ] = 'A' ;
$userGroups = Array ();
$userData [ 'anonymous' ] = False ;
$userData [ 'changepassword' ] = True ;
}
$allGroups = $account -> get_list ( 'groups' );
}
$page_params [ 'menuaction' ] = 'admin.boaccounts.' . ( $_account_id ? 'edit' : 'add' ) . '_user' ;
if ( $_account_id )
{
$page_params [ 'account_id' ] = $_account_id ;
$page_params [ 'old_loginid' ] = rawurlencode ( $userData [ 'account_lid' ]);
}
2003-04-27 02:17:58 +02:00
$var = Array (
2005-10-14 19:03:16 +02:00
'form_action' => $GLOBALS [ 'egw' ] -> link ( '/index.php' , $page_params ),
'error_messages' => ( ! $_errors ? '' : '<center>' . $GLOBALS [ 'egw' ] -> common -> error_list ( $_errors ) . '</center>' ),
'th_bg' => $GLOBALS [ 'egw_info' ][ 'theme' ][ 'th_bg' ],
'tr_color1' => $GLOBALS [ 'egw_info' ][ 'theme' ][ 'row_on' ],
'tr_color2' => $GLOBALS [ 'egw_info' ][ 'theme' ][ 'row_off' ],
2005-01-28 21:12:28 +01:00
'lang_action' => ( $_account_id ? lang ( 'Edit user account' ) : lang ( 'Add new account' )),
'lang_loginid' => lang ( 'LoginID' ),
'lang_account_active' => lang ( 'Account active' ),
'lang_email' => lang ( 'email' ),
'lang_password' => lang ( 'Password' ),
2003-08-28 16:16:30 +02:00
'lang_reenter_password' => lang ( 'Re-Enter Password' ),
2005-01-28 21:12:28 +01:00
'lang_lastname' => lang ( 'Last Name' ),
'lang_groups' => lang ( 'Groups' ),
2003-09-13 16:09:41 +02:00
'lang_primary_group' => lang ( 'primary Group' ),
2005-01-28 21:12:28 +01:00
'lang_expires' => lang ( 'Expires' ),
'lang_firstname' => lang ( 'First Name' ),
'lang_anonymous' => lang ( 'Anonymous User (not shown in list sessions)' ),
'lang_changepassword' => lang ( 'Can change password' ),
2006-04-16 14:31:00 +02:00
'lang_button' => ( $_account_id ? lang ( 'Save' ) : lang ( 'Add' )),
'lang_passwds_unequal' => lang ( 'The two passwords are not the same' ),
2005-01-28 21:12:28 +01:00
/* 'lang_file_space' => lang('File Space') */
2003-04-27 02:17:58 +02:00
);
2003-08-28 16:16:30 +02:00
$t -> set_var ( $var );
$t -> parse ( 'form_buttons' , 'form_buttons_' , True );
2003-04-27 02:17:58 +02:00
2005-10-14 19:03:16 +02:00
if ( $GLOBALS [ 'egw_info' ][ 'server' ][ 'ldap_extra_attributes' ]) {
2003-08-28 16:16:30 +02:00
$lang_homedir = lang ( 'home directory' );
$lang_shell = lang ( 'login shell' );
2005-10-14 19:03:16 +02:00
$homedirectory = '<input name="homedirectory" value="' . ( $_account_id ? $userData [ 'homedirectory' ] : $GLOBALS [ 'egw_info' ][ 'server' ][ 'ldap_account_home' ] . $account_lid ) . '">' ;
2003-08-28 16:16:30 +02:00
$loginshell = '<input name="loginshell" value="'
2005-10-14 19:03:16 +02:00
. ( $_account_id ? $userData [ 'loginshell' ] : $GLOBALS [ 'egw_info' ][ 'server' ][ 'ldap_account_shell' ])
2003-08-28 16:16:30 +02:00
. '">' ;
}
else
{
$lang_homedir = '' ;
$lang_shell = '' ;
$homedirectory = '' ;
$loginshell = '' ;
}
$account_file_space = '' ;
/*
if ( ! $userData [ 'file_space' ])
{
2005-10-14 19:03:16 +02:00
$userData [ 'file_space' ] = $GLOBALS [ 'egw_info' ][ 'server' ][ 'vfs_default_account_size_number' ] . " - " . $GLOBALS [ 'egw_info' ][ 'server' ][ 'vfs_default_account_size_type' ];
2003-08-28 16:16:30 +02:00
}
$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' ;
2003-04-27 02:17:58 +02:00
2003-08-28 16:16:30 +02:00
$account_file_space = '<input type=text name="account_file_space_number" value="' . trim ( $account_file_space_number ) . '" size="7">' ;
$account_file_space_select = '<select name="account_file_space_type">' ;
$account_file_space_types = array ( 'gb' , 'mb' , 'kb' , 'b' );
while ( list ( $num , $type ) = each ( $account_file_space_types ))
2003-04-27 02:17:58 +02:00
{
2003-08-28 16:16:30 +02:00
$account_file_space_select .= '<option value="' . $type . '"' . $account_file_space_type_selected [ $type ] . '>' . strtoupper ( $type ) . '</option>' ;
2003-04-27 02:17:58 +02:00
}
2003-08-28 16:16:30 +02:00
$account_file_space_select .= '</select>' ;
$var = Array (
'lang_file_space' => 'File space' ,
'account_file_space' => $account_file_space ,
'account_file_space_select' => $account_file_space_select
);
2003-04-27 02:17:58 +02:00
$t -> set_var ( $var );
2003-08-28 16:16:30 +02:00
*/
2004-01-12 07:22:20 +01:00
$accountPrefix = '' ;
2005-10-14 19:03:16 +02:00
if ( isset ( $GLOBALS [ 'egw_info' ][ 'server' ][ 'account_prefix' ]))
2004-01-12 07:22:20 +01:00
{
2005-10-14 19:03:16 +02:00
$accountPrefix = $GLOBALS [ 'egw_info' ][ 'server' ][ 'account_prefix' ];
2004-01-12 07:22:20 +01:00
if ( preg_match ( " /^ $accountPrefix (.*)/i " , $userData [ 'account_lid' ], $matches ))
{
$userData [ 'account_lid' ] = $matches [ 1 ];
}
}
2003-08-28 16:16:30 +02:00
$var = Array (
2005-01-28 21:12:28 +01:00
'input_expires' => $jscal -> input ( 'expires' , $userData [ 'expires' ] < 0 ? '' : ( $userData [ 'expires' ] ? $userData [ 'expires' ] : time () + ( 60 * 60 * 24 * 7 ))),
'lang_never' => lang ( 'Never' ),
2006-04-30 14:18:47 +02:00
'account_lid' => $accountPrefix . '<input id="account" onchange="check_account_email(this.id);" name="account_lid" maxlength="64" value="' . $userData [ 'account_lid' ] . '">' ,
2005-01-28 21:12:28 +01:00
'lang_homedir' => $lang_homedir ,
'lang_shell' => $lang_shell ,
'homedirectory' => $homedirectory ,
'loginshell' => $loginshell ,
'anonymous' => '<input type="checkbox" name="anonymous" value="1"' . ( $userData [ 'anonymous' ] ? ' checked' : '' ) . '>' ,
'changepassword' => '<input type="checkbox" name="changepassword" value="1"' . ( $userData [ 'changepassword' ] ? ' checked' : '' ) . '>' ,
2003-08-28 16:16:30 +02:00
'account_status' => '<input type="checkbox" name="account_status" value="A"' . ( $userData [ 'status' ] ? ' checked' : '' ) . '>' ,
2006-04-30 14:18:47 +02:00
'account_firstname' => '<input id="firstname" onchange="check_account_email(this.id);" name="account_firstname" maxlength="50" value="' . $userData [ 'firstname' ] . '">' ,
'account_lastname' => '<input id="lastname" onchange="check_account_email(this.id);" name="account_lastname" maxlength="50" value="' . $userData [ 'lastname' ] . '">' ,
'account_email' => '<input id="email" onchange="check_account_email(this.id);" name="account_email" size="32" maxlength="100" value="' . $userData [ 'email' ] . '">' ,
2004-07-12 21:54:44 +02:00
'account_passwd' => $userData [ 'account_passwd' ],
'account_passwd_2' => $userData [ 'account_passwd_2' ],
2006-04-16 14:31:00 +02:00
'account_file_space' => $account_file_space ,
'account_id' => ( int ) $userData [ 'account_id' ],
2003-08-28 16:16:30 +02:00
);
2003-04-27 02:17:58 +02:00
2003-08-28 16:16:30 +02:00
if ( $userData [ 'expires' ] == - 1 )
2003-04-27 02:17:58 +02:00
{
2003-08-28 16:16:30 +02:00
$var [ 'never_expires' ] = '<input type="checkbox" name="never_expires" value="True" checked>' ;
}
else
{
$var [ 'never_expires' ] = '<input type="checkbox" name="never_expires" value="True">' ;
2003-04-27 02:17:58 +02:00
}
2003-08-28 16:16:30 +02:00
$t -> set_var ( $var );
$t -> parse ( 'password_fields' , 'form_passwordinfo' , True );
2003-04-27 02:17:58 +02:00
2003-09-13 16:09:41 +02:00
$groups_select = '' ;
$primary_group_select = '' ;
2003-08-28 16:16:30 +02:00
reset ( $allGroups );
2005-01-03 11:41:07 +01:00
2005-01-03 16:05:56 +01:00
while ( list ( $key , $value ) = each ( $allGroups ))
{
2005-01-03 11:41:07 +01:00
$groups_select .= '<input type="checkbox" name="account_groups[]" value="' . $value [ 'account_id' ] . '"' ;
for ( $i = 0 ; $i < count ( $userGroups ); $i ++ )
2003-08-28 16:16:30 +02:00
{
2005-01-03 11:41:07 +01:00
/* print
" Los1: " . $userData [ " account_id " ] . $userGroups [ $i ][ 'account_id' ] . " :
" . $value['account_id'] . " < br > " ; */
2005-01-28 21:12:28 +01:00
if ( @ $userGroups [ $i ][ 'account_id' ] == $value [ 'account_id' ])
2003-08-28 16:16:30 +02:00
{
2005-01-03 11:41:07 +01:00
$groups_select .= ' checked' ;
2003-08-28 16:16:30 +02:00
}
2005-01-03 16:05:56 +01:00
}
$groups_select .= '>' . $value [ 'account_lid' ] . " <br/> \n " ;
2003-04-27 02:17:58 +02:00
}
2003-08-28 16:16:30 +02:00
2005-01-03 16:05:56 +01:00
2003-09-13 21:06:10 +02:00
if ( ! $userData [ 'account_primary_group' ])
{
$userData [ 'account_primary_group' ] = @ $userGroups [ 0 ][ 'account_id' ] ? @ $userGroups [ 0 ][ 'account_id' ] : $account -> name2id ( 'Default' );
}
2003-09-13 16:09:41 +02:00
foreach ( $allGroups as $key => $value )
{
# print "<br>$key =>";
# _debug_array($userGroups);
$primary_group_select .= '<option value="' . $value [ 'account_id' ] . '"' ;
#print $value['account_id'].''.$value['account_primary_group']
2003-09-13 21:06:10 +02:00
if ( $value [ 'account_id' ] == $userData [ 'account_primary_group' ])
2003-09-13 16:09:41 +02:00
{
2004-08-28 15:48:32 +02:00
$primary_group_select .= ' selected="1"' ;
2003-09-13 16:09:41 +02:00
}
$primary_group_select .= '>' . $value [ 'account_lid' ] . '</option>' . " \n " ;
}
2003-08-28 16:16:30 +02:00
/* create list of available apps */
2005-10-14 19:03:16 +02:00
$apps =& CreateObject ( 'phpgwapi.applications' , $_account_id );
2003-08-28 16:16:30 +02:00
$db_perms = $apps -> read_account_specific ();
2005-10-14 19:03:16 +02:00
$availableApps = $GLOBALS [ 'egw_info' ][ 'apps' ];
2003-10-06 01:16:03 +02:00
uasort ( $availableApps , create_function ( '$a,$b' , 'return strcasecmp($a["title"],$b["title"]);' ));
2003-04-27 02:17:58 +02:00
2003-08-28 16:16:30 +02:00
$appRightsOutput = '' ;
2003-10-06 01:16:03 +02:00
$i = 0 ;
foreach ( $availableApps as $app => $data )
2003-08-28 16:16:30 +02:00
{
2003-10-06 01:16:03 +02:00
if ( ! $data [ 'enabled' ] || $data [ 'status' ] == 3 )
2003-08-28 16:16:30 +02:00
{
2003-10-06 01:16:03 +02:00
continue ;
2003-08-28 16:16:30 +02:00
}
2004-08-28 15:48:32 +02:00
$checked = ( @ $userData [ 'account_permissions' ][ $app ] || @ $db_perms [ $app ]) && $_account_id ? ' checked="1"' : '' ;
$part [ $i & 1 ] = sprintf ( '<td>%s</td><td><input type="checkbox" name="account_permissions[%s]" value="True"%s>' ,
$data [ 'title' ], $app , $checked ) .
2005-10-14 19:03:16 +02:00
( $this -> apps_with_acl [ $app ] && $_account_id ? '<a href="' . $GLOBALS [ 'egw' ] -> link ( '/index.php' , 'menuaction=preferences.uiaclprefs.index&acl_app=' . $app . '&owner=' . $_account_id )
. '"><img src="' . $GLOBALS [ 'egw' ] -> common -> image ( 'phpgwapi' , 'edit' ) . '" border="0" hspace="3" align="absmiddle" title="'
2004-08-28 15:48:32 +02:00
. lang ( 'Grant Access' ) . '"></a>' : ' ' ) . '</td>' ;
2003-08-28 16:16:30 +02:00
if ( $i & 1 )
{
2003-10-06 01:16:03 +02:00
$appRightsOutput .= sprintf ( '<tr bgcolor="%s">%s%s</tr>' , $this -> nextmatchs -> alternate_row_color (), $part [ 0 ], $part [ 1 ]);
2003-08-28 16:16:30 +02:00
}
2003-10-06 01:16:03 +02:00
++ $i ;
}
if ( $i & 1 )
{
2004-08-28 15:48:32 +02:00
$part [ 1 ] = '<td colspan="3"> </td>' ;
2003-10-06 01:16:03 +02:00
$appRightsOutput .= sprintf ( '<tr bgcolor="%s">%s%s</tr>' , $this -> nextmatchs -> alternate_row_color (), $part [ 0 ], $part [ 1 ]);
2003-04-27 02:17:58 +02:00
}
2003-08-28 16:16:30 +02:00
2005-01-03 11:41:07 +01:00
$var = Array (
'groups_select'
2005-01-28 21:12:28 +01:00
=> '<div id="groupselector">' .
2005-01-03 11:41:07 +01:00
" \n " . $groups_select . '</div>' . " \n " ,
'primary_group_select'
=> ' < select
name = " account_primary_group " > '."\n".$primary_group_select.' </
select > ' . " \n " ,
'permissions_list'
2005-10-14 19:03:16 +02:00
=> $appRightsOutput ,
2005-01-03 11:41:07 +01:00
'lang_app' => lang ( 'application' ),
'lang_acl' => lang ( 'enabled' ) . ' / ' . lang ( 'ACL' ),
);
/*
2003-08-28 16:16:30 +02:00
$var = Array (
2003-12-20 19:51:51 +01:00
'groups_select'
2003-09-13 16:09:41 +02:00
=> '<select name="account_groups[]" multiple>' . " \n " . $groups_select . '</select>' . " \n " ,
'primary_group_select'
=> '<select name="account_primary_group">' . " \n " . $primary_group_select . '</select>' . " \n " ,
'permissions_list'
2004-08-28 15:48:32 +02:00
=> $appRightsOutput ,
'lang_app' => lang ( 'application' ),
'lang_acl' => lang ( 'enabled' ) . ' / ' . lang ( 'ACL' ),
2003-08-28 16:16:30 +02:00
);
2005-01-03 11:41:07 +01:00
2005-01-03 16:05:56 +01:00
*/
2003-08-28 16:16:30 +02:00
$t -> set_var ( $var );
// create the menu on the left, if needed
2005-10-14 19:03:16 +02:00
// $menuClass =& CreateObject('admin.uimenuclass');
2003-08-28 16:16:30 +02:00
// This is now using ExecMethod()
$GLOBALS [ 'account_id' ] = $_account_id ;
$t -> set_var ( 'rows' , ExecMethod ( 'admin.uimenuclass.createHTMLCode' , 'edit_user' ));
echo $t -> fp ( 'out' , 'form' );
2001-09-02 01:32:40 +02:00
}
2002-01-10 19:18:44 +01:00
2006-04-16 14:31:00 +02:00
function ajax_check_account_email ( $first , $last , $account_lid , $account_id , $email , $id )
{
$response =& new xajaxResponse ();
if ( ! $email )
{
$response -> addAssign ( 'email' , 'value' , $GLOBALS [ 'egw' ] -> common -> email_address ( $first , $last , $account_lid ));
}
$id_account_lid = ( int ) $GLOBALS [ 'egw' ] -> accounts -> name2id ( $account_lid );
if ( $id == 'account' && $id_account_lid && $id_account_lid != ( int ) $account_id )
{
$response -> addScript ( " alert(' " . addslashes ( lang ( 'That loginid has already been taken' ) . ': ' . $account_lid ) . " '); document.getElementById('account').value=' " .
( $account_id ? $GLOBALS [ 'egw' ] -> accounts -> id2name ( $account_id ) : '' ) . " '; document.getElementById('account').focus(); " );
}
return $response -> getXML ();
}
2002-01-10 19:18:44 +01:00
function edit_group_managers ( $group_info , $_errors = '' )
{
2005-10-14 19:03:16 +02:00
if ( $GLOBALS [ 'egw' ] -> acl -> check ( 'group_access' , 16 , 'admin' ))
2002-01-10 19:18:44 +01:00
{
$this -> list_groups ();
return False ;
}
2005-10-14 19:03:16 +02:00
$accounts =& CreateObject ( 'phpgwapi.accounts' , $group_info [ 'account_id' ], 'u' );
2002-01-10 19:18:44 +01:00
$account_list = $accounts -> member ( $group_info [ 'account_id' ]);
$user_list = '' ;
while ( list ( $key , $entry ) = each ( $account_list ))
{
$user_list .= '<option value="' . $entry [ 'account_id' ] . '"'
2003-12-20 19:51:51 +01:00
. $group_info [ 'account_managers' ][( int ) $entry [ 'account_id' ]] . '>'
2005-10-14 19:03:16 +02:00
. $GLOBALS [ 'egw' ] -> common -> grab_owner_name ( $entry [ 'account_id' ])
2002-01-10 19:18:44 +01:00
. '</option>' . " \n " ;
}
2005-10-14 19:03:16 +02:00
unset ( $GLOBALS [ 'egw_info' ][ 'flags' ][ 'noheader' ]);
unset ( $GLOBALS [ 'egw_info' ][ 'flags' ][ 'nonavbar' ]);
if ( !@ is_object ( $GLOBALS [ 'egw' ] -> js ))
2004-02-26 10:01:42 +01:00
{
2005-10-14 19:03:16 +02:00
$GLOBALS [ 'egw' ] -> js =& CreateObject ( 'phpgwapi.javascript' );
2004-02-26 10:01:42 +01:00
}
2005-10-14 19:03:16 +02:00
$GLOBALS [ 'egw' ] -> js -> validate_file ( 'jscode' , 'openwindow' , 'admin' );
$GLOBALS [ 'egw' ] -> common -> egw_header ();
2002-01-10 19:18:44 +01:00
2005-10-14 19:03:16 +02:00
$t =& CreateObject ( 'phpgwapi.Template' , EGW_APP_TPL );
2002-01-10 19:18:44 +01:00
$t -> set_unknowns ( 'remove' );
$t -> set_file (
Array (
2003-12-20 19:51:51 +01:00
'manager' => 'group_manager.tpl'
2002-01-10 19:18:44 +01:00
)
);
$t -> set_block ( 'manager' , 'form' , 'form' );
$t -> set_block ( 'manager' , 'link_row' , 'link_row' );
2005-10-14 19:03:16 +02:00
$var [ 'th_bg' ] = $GLOBALS [ 'egw_info' ][ 'user' ][ 'theme' ][ 'th_bg' ];
2002-01-10 19:18:44 +01:00
$var [ 'lang_group' ] = lang ( 'Group' );
$var [ 'group_name' ] = $group_info [ 'account_name' ];
2005-10-14 19:03:16 +02:00
$var [ 'tr_color1' ] = $GLOBALS [ 'egw_info' ][ 'user' ][ 'theme' ][ 'row_on' ];
$var [ 'form_action' ] = $GLOBALS [ 'egw' ] -> link ( '/index.php' , 'menuaction=admin.boaccounts.set_group_managers' );
2002-01-10 19:18:44 +01:00
$var [ 'hidden' ] = '<input type="hidden" name="account_id" value="' . $group_info [ 'account_id' ] . '">' ;
$var [ 'lang_select_managers' ] = lang ( 'Select Group Managers' );
$var [ 'group_members' ] = '<select name="managers[]" size="' . ( count ( $account_list ) < 5 ? count ( $account_list ) : 5 ) . '" multiple>' . $user_list . '</select>' ;
$var [ 'form_buttons' ] = '<tr align="center"><td colspan="2"><input type="submit" name="submit" value="' . lang ( 'Submit' ) . '"> '
. '<input type="submit" name="cancel" value="' . lang ( 'Cancel' ) . '"><td></tr>' ;
$t -> set_var ( $var );
// create the menu on the left, if needed
$t -> set_var ( 'rows' , ExecMethod ( 'admin.uimenuclass.createHTMLCode' , 'edit_group' ));
$t -> pfp ( 'out' , 'form' );
}
2001-09-02 01:32:40 +02:00
}
?>