2001-09-04 03:17:40 +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$ */
class uiaclmanager
{
var $template ;
var $nextmatchs ;
var $public_functions = array (
'list_apps' => True ,
'access_form' => True ,
'account_list' => True
);
function uiaclmanager ()
{
2003-08-28 16:16:30 +02:00
$this -> account_id = intval ( $_GET [ 'account_id' ]);
if ( ! $this -> account_id || $GLOBALS [ 'phpgw' ] -> acl -> check ( 'account_access' , 64 , 'admin' ))
{
$GLOBALS [ 'phpgw' ] -> redirect_link ( '/index.php' );
}
2001-09-04 03:17:40 +02:00
$this -> template = createobject ( 'phpgwapi.Template' , PHPGW_APP_TPL );
}
function common_header ()
{
2003-08-28 16:16:30 +02:00
$GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'app_header' ] = lang ( 'Admin' ) . ' - ' . lang ( 'ACL Manager' ) .
': ' . $GLOBALS [ 'phpgw' ] -> common -> grab_owner_name ( $this -> account_id );
2001-09-04 03:17:40 +02:00
$GLOBALS [ 'phpgw' ] -> common -> phpgw_header ();
2003-08-28 16:16:30 +02:00
echo parse_navbar ();
2001-09-04 03:17:40 +02:00
}
function list_apps ()
{
$this -> common_header ();
2002-01-02 15:33:05 +01:00
$GLOBALS [ 'phpgw' ] -> hooks -> process ( 'acl_manager' , array ( 'preferences' ));
2001-09-04 03:17:40 +02:00
$this -> template -> set_file ( array (
'app_list' => 'acl_applist.tpl'
));
$this -> template -> set_block ( 'app_list' , 'list' );
$this -> template -> set_block ( 'app_list' , 'app_row' );
$this -> template -> set_block ( 'app_list' , 'app_row_noicon' );
$this -> template -> set_block ( 'app_list' , 'link_row' );
$this -> template -> set_block ( 'app_list' , 'spacer_row' );
while ( is_array ( $GLOBALS [ 'acl_manager' ]) && list ( $app , $locations ) = each ( $GLOBALS [ 'acl_manager' ]))
{
$icon = $GLOBALS [ 'phpgw' ] -> common -> image ( $app , array ( 'navbar.gif' , $app . '.gif' ));
$this -> template -> set_var ( 'icon_backcolor' , $GLOBALS [ 'phpgw_info' ][ 'theme' ][ 'row_off' ]);
$this -> template -> set_var ( 'link_backcolor' , $GLOBALS [ 'phpgw_info' ][ 'theme' ][ 'row_off' ]);
2003-08-28 16:16:30 +02:00
$this -> template -> set_var ( 'app_name' , $GLOBALS [ 'phpgw_info' ][ 'apps' ][ $app ][ 'title' ]);
2001-09-04 03:17:40 +02:00
$this -> template -> set_var ( 'a_name' , $appname );
$this -> template -> set_var ( 'app_icon' , $icon );
if ( $icon )
{
$this -> template -> fp ( 'rows' , 'app_row' , True );
}
else
{
$this -> template -> fp ( 'rows' , 'app_row_noicon' , True );
}
while ( is_array ( $locations ) && list ( $loc , $value ) = each ( $locations ))
{
2003-08-28 16:16:30 +02:00
$link_values = array (
'menuaction' => 'admin.uiaclmanager.access_form' ,
'location' => urlencode ( $loc ),
'acl_app' => $app ,
'account_id' => $this -> account_id
);
$this -> template -> set_var ( 'link_location' , $GLOBALS [ 'phpgw' ] -> link ( '/index.php' , $link_values ));
$this -> template -> set_var ( 'lang_location' , lang ( $value [ 'name' ]));
$this -> template -> fp ( 'rows' , 'link_row' , True );
2001-09-04 03:17:40 +02:00
}
$this -> template -> parse ( 'rows' , 'spacer_row' , True );
}
2003-08-28 16:16:30 +02:00
$this -> template -> set_var ( array (
'cancel_action' => $GLOBALS [ 'phpgw' ] -> link ( '/index.php' , 'menuaction=admin.uiaccounts.list_users' ),
'lang_cancel' => lang ( 'Cancel' )
));
2001-09-04 03:17:40 +02:00
$this -> template -> pfp ( 'out' , 'list' );
}
function access_form ()
{
2003-08-28 16:16:30 +02:00
$location = $_GET [ 'location' ];
2001-09-04 03:17:40 +02:00
2003-08-28 16:16:30 +02:00
if ( $_POST [ 'submit' ] || $_POST [ 'cancel' ])
{
if ( $_POST [ 'submit' ])
{
$total_rights = 0 ;
while ( is_array ( $_POST [ 'acl_rights' ]) && list (, $rights ) = each ( $_POST [ 'acl_rights' ]))
{
$total_rights += $rights ;
}
if ( $total_rights )
{
$GLOBALS [ 'phpgw' ] -> acl -> add_repository ( $_GET [ 'acl_app' ], $location , $this -> account_id , $total_rights );
}
else // we dont need to save 0 rights (= no restrictions)
{
$GLOBALS [ 'phpgw' ] -> acl -> delete_repository ( $_GET [ 'acl_app' ], $location , $this -> account_id );
}
}
$this -> list_apps ();
return ;
}
$GLOBALS [ 'phpgw' ] -> hooks -> single ( 'acl_manager' , $_GET [ 'acl_app' ]);
$acl_manager = $GLOBALS [ 'acl_manager' ][ $_GET [ 'acl_app' ]][ $location ];
2001-09-04 03:17:40 +02:00
$this -> common_header ();
$this -> template -> set_file ( 'form' , 'acl_manager_form.tpl' );
2003-08-28 16:16:30 +02:00
$acc = createobject ( 'phpgwapi.accounts' , $this -> account_id );
2001-09-04 03:17:40 +02:00
$acc -> read_repository ();
$afn = $GLOBALS [ 'phpgw' ] -> common -> display_fullname ( $acc -> data [ 'account_lid' ], $acc -> data [ 'firstname' ], $acc -> data [ 'lastname' ]);
2003-08-28 16:16:30 +02:00
$this -> template -> set_var ( 'lang_message' , lang ( 'Check items to <b>%1</b> to %2 for %3' , lang ( $acl_manager [ 'name' ]), $GLOBALS [ 'phpgw_info' ][ 'apps' ][ $_GET [ 'acl_app' ]][ 'title' ], $afn ));
2001-09-04 03:17:40 +02:00
$link_values = array (
2003-08-28 16:16:30 +02:00
'menuaction' => 'admin.uiaclmanager.access_form' ,
'acl_app' => $_GET [ 'acl_app' ],
'location' => urlencode ( $_GET [ 'location' ]),
'account_id' => $this -> account_id
2001-09-04 03:17:40 +02:00
);
2003-08-28 16:16:30 +02:00
$acl = createobject ( 'phpgwapi.acl' , $this -> account_id );
2001-09-04 06:26:51 +02:00
$acl -> read_repository ();
2003-08-28 16:16:30 +02:00
$grants = $acl -> get_rights ( $location , $_GET [ 'acl_app' ]);
2001-09-04 03:17:40 +02:00
$this -> template -> set_var ( 'form_action' , $GLOBALS [ 'phpgw' ] -> link ( '/index.php' , $link_values ));
2001-09-04 06:26:51 +02:00
$total = 0 ;
2001-09-04 03:17:40 +02:00
while ( list ( $name , $value ) = each ( $acl_manager [ 'rights' ]))
{
2003-08-28 16:16:30 +02:00
$cb .= '<input type="checkbox" name="acl_rights[]" value="' . $value . '"' . ( $grants & $value ? ' checked' : '' ) . '> ' . lang ( $name ) . " <br> \n " ;
2001-09-04 03:17:40 +02:00
}
2003-08-28 16:16:30 +02:00
$this -> template -> set_var ( 'select_values' , $cb );
$this -> template -> set_var ( 'lang_submit' , lang ( 'Save' ));
2001-09-04 03:17:40 +02:00
$this -> template -> set_var ( 'lang_cancel' , lang ( 'Cancel' ));
$this -> template -> pfp ( 'out' , 'form' );
}
}