2001-01-23 14:40:42 +01:00
< ? php
/************************************************************************** \
2001-02-10 14:59:13 +01:00
* phpGroupWare - Calendar *
2001-01-23 14:40:42 +01:00
* 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$ */
2001-01-24 04:45:00 +01:00
$phpgw_info [ " flags " ] = array ( " currentapp " => " addressbook " , " enable_nextmatchs_class " => True , " noappheader " => True , " noappfooter " => True );
2001-01-23 14:40:42 +01:00
include ( " ../header.inc.php " );
function display_row ( $bg_color , $label , $id , $name ) {
global $p ;
2001-01-24 04:45:00 +01:00
global $phpgw ;
global $phpgw_info ;
2001-02-10 14:59:13 +01:00
global $acl ;
2001-01-23 14:40:42 +01:00
$p -> set_var ( 'row_color' , $bg_color );
$p -> set_var ( 'user' , $name );
2001-02-10 14:59:13 +01:00
$rights = $acl -> get_rights ( $label . $id , $phpgw_info [ " flags " ][ " currentapp " ]);
2001-01-24 04:45:00 +01:00
$p -> set_var ( 'read' , $label . $phpgw_info [ " flags " ][ " currentapp " ] . '[' . $id . '][' . PHPGW_ACL_READ . ']' );
if ( $rights & PHPGW_ACL_READ ) {
$p -> set_var ( 'read_selected' , ' checked' );
} else {
$p -> set_var ( 'read_selected' , '' );
}
$p -> set_var ( 'add' , $label . $phpgw_info [ " flags " ][ " currentapp " ] . '[' . $id . '][' . PHPGW_ACL_ADD . ']' );
if ( $rights & PHPGW_ACL_ADD ) {
$p -> set_var ( 'add_selected' , ' checked' );
} else {
$p -> set_var ( 'add_selected' , '' );
}
$p -> set_var ( 'edit' , $label . $phpgw_info [ " flags " ][ " currentapp " ] . '[' . $id . '][' . PHPGW_ACL_EDIT . ']' );
if ( $rights & PHPGW_ACL_EDIT ) {
$p -> set_var ( 'edit_selected' , ' checked' );
} else {
$p -> set_var ( 'edit_selected' , '' );
}
$p -> set_var ( 'delete' , $label . $phpgw_info [ " flags " ][ " currentapp " ] . '[' . $id . '][' . PHPGW_ACL_DELETE . ']' );
if ( $rights & PHPGW_ACL_DELETE ) {
$p -> set_var ( 'delete_selected' , ' checked' );
} else {
$p -> set_var ( 'delete_selected' , '' );
}
2001-01-23 14:40:42 +01:00
$p -> parse ( 'row' , 'acl_row' , True );
}
2001-02-10 14:59:13 +01:00
if ( ! isset ( $owner ) || ! $phpgw_info [ " user " ][ " apps " ][ " admin " ]) {
$owner = $phpgw_info [ " user " ][ " account_id " ];
}
$groups = $phpgw -> accounts -> memberships ( $owner );
$acl = CreateObject ( 'phpgwapi.acl' , intval ( $owner ));
$acl -> read_repository ();
2001-01-23 14:40:42 +01:00
if ( $submit ) {
2001-02-01 05:20:27 +01:00
$to_remove = unserialize ( urldecode ( $processed ));
for ( $i = 0 ; $i < count ( $to_remove ); $i ++ ) {
2001-02-10 14:59:13 +01:00
$acl -> delete ( $phpgw_info [ " flags " ][ " currentapp " ], $to_remove [ $i ]);
2001-02-01 05:20:27 +01:00
}
2001-01-24 04:45:00 +01:00
// Group records
$group_variable = 'g_' . $phpgw_info [ " flags " ][ " currentapp " ];
2001-02-01 05:20:27 +01:00
@ reset ( $$group_variable );
2001-01-24 04:45:00 +01:00
while ( list ( $group_id , $acllist ) = each ( $$group_variable )) {
$totalacl = 0 ;
2001-02-10 14:59:13 +01:00
while ( list ( $right , $permission ) = each ( $acllist )) {
$totalacl += $right ;
2001-01-24 04:45:00 +01:00
}
2001-02-10 14:59:13 +01:00
$acl -> add ( $phpgw_info [ " flags " ][ " currentapp " ], 'g_' . $group_id , $totalacl );
2001-01-24 04:45:00 +01:00
}
// User records
$user_variable = 'u_' . $phpgw_info [ " flags " ][ " currentapp " ];
2001-02-01 05:20:27 +01:00
@ reset ( $$user_variable );
2001-01-24 04:45:00 +01:00
while ( list ( $user_id , $acllist ) = each ( $$user_variable )) {
$totalacl = 0 ;
2001-02-10 14:59:13 +01:00
while ( list ( $right , $permission ) = each ( $acllist )) {
$totalacl += $right ;
2001-01-24 04:45:00 +01:00
}
2001-02-10 14:59:13 +01:00
$acl -> add ( $phpgw_info [ " flags " ][ " currentapp " ], 'u_' . $user_id , $totalacl );
2001-01-24 04:45:00 +01:00
}
2001-02-11 04:23:58 +01:00
$acl -> save_repository ();
2001-02-01 05:20:27 +01:00
}
$processed = Array ();
$total = 0 ;
2001-02-10 14:59:13 +01:00
2001-02-01 05:20:27 +01:00
if ( ! isset ( $start )) {
$start = 0 ;
}
if ( ! $start ) {
$s_groups = 0 ;
$s_users = 0 ;
}
if ( ! isset ( $s_groups )) {
$s_groups = 0 ;
}
if ( ! isset ( $s_users )) {
$s_users = 0 ;
}
if ( ! isset ( $query )) {
$query = " " ;
}
if ( ! isset ( $maxm )) {
$maxm = $phpgw_info [ " user " ][ " preferences " ][ " common " ][ " maxmatchs " ];
}
if ( ! isset ( $totalentries )) {
$totalentries = count ( $groups );
$db = $phpgw -> db ;
2001-02-10 14:59:13 +01:00
$db -> query ( " SELECT count(*) FROM phpgw_accounts WHERE account_type='u' " );
2001-02-01 05:20:27 +01:00
$db -> next_record ();
2001-02-10 14:59:13 +01:00
$totalentries += intval ( $db -> f ( 0 ));
2001-01-23 14:40:42 +01:00
}
$p = CreateObject ( 'phpgwapi.Template' , $phpgw_info [ " server " ][ " app_tpl " ]);
$p -> set_file ( array ( 'preferences' => 'preference_acl.tpl' ,
'row_colspan' => 'preference_colspan.tpl' ,
'acl_row' => 'preference_acl_row.tpl' ));
2001-02-10 14:59:13 +01:00
// $p->set_var('errors','<p><center><b>This does nothing at this time!<br>Strictly as a template for use!</b></center>');
$p -> set_var ( 'errors' , '' );
2001-01-24 04:45:00 +01:00
$p -> set_var ( 'title' , '<p><b>' . lang ( $phpgw_info [ " flags " ][ " currentapp " ] . " preferences " ) . ' - ' . lang ( " acl " ) . ':</b><hr><p>' );
2001-01-23 14:40:42 +01:00
$p -> set_var ( 'action_url' , $phpgw -> link ( '' ));
$p -> set_var ( 'bg_color' , $phpgw_info [ " theme " ][ " th_bg " ]);
$p -> set_var ( 'submit_lang' , lang ( 'submit' ));
2001-02-01 05:20:27 +01:00
$common_hidden_vars = ' <input type="hidden" name="s_groups" value="' . $s_groups . '">' . " \n "
. ' <input type="hidden" name="s_users" value="' . $s_users . '">' . " \n "
. ' <input type="hidden" name="maxm" value="' . $maxm . '">' . " \n "
. ' <input type="hidden" name="totalentries" value="' . $totalentries . '">' . " \n "
. ' <input type="hidden" name="start" value="' . $start . '">' . " \n "
2001-02-10 14:59:13 +01:00
. ' <input type="hidden" name="query" value="' . $query . '">' . " \n "
. ' <input type="hidden" name="owner" value="' . $owner . '">' . " \n " ;
2001-02-01 05:20:27 +01:00
$p -> set_var ( 'common_hidden_vars_form' , $common_hidden_vars );
if ( isset ( $query_result ) && $query_result )
$common_hidden_vars .= " <input type= \" hidden \" name= \" query_result \" value= \" " . $query_result . " \" > \n " ;
2001-01-23 14:40:42 +01:00
2001-02-01 05:20:27 +01:00
$p -> set_var ( 'common_hidden_vars' , $common_hidden_vars );
$p -> set_var ( array ( 'read_lang' => lang ( 'Read' ),
'add_lang' => lang ( 'Add' ),
'edit_lang' => lang ( 'Edit' ),
'delete_lang' => lang ( 'Delete' )));
2001-01-23 14:40:42 +01:00
2001-02-01 05:20:27 +01:00
if ( intval ( $s_groups ) <> count ( $groups )) {
$p -> set_var ( 'string' , lang ( 'Groups' ));
2001-01-23 14:40:42 +01:00
$p -> parse ( 'row' , 'row_colspan' , True );
2001-02-01 05:20:27 +01:00
2001-02-10 14:59:13 +01:00
reset ( $groups );
for ( $k = 0 ; $k < count ( $groups ); $k ++ ) {
$group = $groups [ $k ];
2001-02-01 05:20:27 +01:00
$go = True ;
if ( $query ) {
2001-02-10 14:59:13 +01:00
if ( ! strpos ( ' ' . $group [ " account_id " ] . ' ' , $query )) {
2001-02-01 05:20:27 +01:00
$go = False ;
}
}
if ( $go ) {
$tr_color = $phpgw -> nextmatchs -> alternate_row_color ( $tr_color );
2001-02-10 14:59:13 +01:00
display_row ( $tr_color , 'g_' , $group [ " account_id " ], $group [ " account_name " ]);
2001-02-01 05:20:27 +01:00
$s_groups ++ ;
2001-02-10 14:59:13 +01:00
$processed [] = 'g_' . $group [ " account_id " ];
2001-02-01 05:20:27 +01:00
$total ++ ;
if ( $total == $maxm ) break ;
}
2001-01-23 14:40:42 +01:00
}
}
2001-02-01 05:20:27 +01:00
if ( $total <> $maxm ) {
if ( ! is_object ( $db )) {
$db = $phpgw -> db ;
}
2001-02-10 14:59:13 +01:00
$db -> query ( " select account_id, account_firstname, account_lastname, account_lid FROM phpgw_accounts WHERE account_type='u' ORDER BY account_lastname, account_firstname, account_lid " . $db -> limit ( intval ( $s_users ), $maxm ), __LINE__ , __FILE__ );
2001-02-01 05:20:27 +01:00
$users = $db -> num_rows ();
if ( $total <> $maxm ) {
if ( $users ) {
$p -> set_var ( 'string' , ucfirst ( lang ( 'Users' )));
$p -> parse ( 'row' , 'row_colspan' , True );
$tr_color = $phpgw -> nextmatchs -> alternate_row_color ( $tr_color );
while ( $db -> next_record ()) {
$go = True ;
if ( $query ) {
$name = ' ' . $db -> f ( " account_firstname " ) . ' ' . $db -> f ( " account_lastname " ) . ' ' . $db -> f ( " account_lid " ) . ' ' ;
if ( ! strpos ( $name , $query )) {
$go = False ;
}
}
if ( $go ) {
$tr_color = $phpgw -> nextmatchs -> alternate_row_color ( $tr_color );
$id = $db -> f ( " account_id " );
display_row ( $tr_color , 'u_' , $id , $phpgw -> common -> grab_owner_name ( $id ));
$s_users ++ ;
$processed [] = 'u_' . $id ;
$total ++ ;
if ( $total == $maxm ) break ;
}
}
}
}
}
2001-02-10 14:59:13 +01:00
$extra_parms = " &s_users= " . $s_users . " &s_groups= " . $s_groups . " &maxm= " . $maxm . " &totalentries= " . $totalentries . " &total= " . ( $start + $total ) . " &owner= " . $owner ;
2001-02-01 05:20:27 +01:00
$p -> set_var ( " nml " , $phpgw -> nextmatchs -> left ( " " , $start , $totalentries , $extra_parms ));
$p -> set_var ( " nmr " , $phpgw -> nextmatchs -> right ( " " , $start , $totalentries , $extra_parms ));
$p -> set_var ( " search_value " ,( isset ( $query ) && $query ? $query : " " ));
$p -> set_var ( " search " , lang ( " search " ));
$p -> set_var ( 'processed' , urlencode ( serialize ( $processed )));
2001-01-23 14:40:42 +01:00
$p -> pparse ( 'out' , 'preferences' );
$phpgw -> common -> phpgw_footer ();
?>