From 1b32fe33fd3ed08af469c9cd13172b912d6d92f3 Mon Sep 17 00:00:00 2001 From: Ralf Becker Date: Wed, 25 Aug 2004 11:20:04 +0000 Subject: [PATCH] replaced all while-list-each with foreach, as requested in patch [ 1015863 ] Admin does not save ACL rights and Site Configuration --- admin/inc/class.uiaclmanager.inc.php | 167 +++++++++++++++++++++++++++ admin/inc/class.uiconfig.inc.php | 12 +- 2 files changed, 170 insertions(+), 9 deletions(-) create mode 100644 admin/inc/class.uiaclmanager.inc.php diff --git a/admin/inc/class.uiaclmanager.inc.php b/admin/inc/class.uiaclmanager.inc.php new file mode 100644 index 0000000000..73a3711d3e --- /dev/null +++ b/admin/inc/class.uiaclmanager.inc.php @@ -0,0 +1,167 @@ + True, + 'access_form' => True, + 'account_list' => True + ); + + function uiaclmanager() + { + $this->account_id = (int)$_GET['account_id']; + if (!$this->account_id || $GLOBALS['phpgw']->acl->check('account_access',64,'admin')) + { + $GLOBALS['phpgw']->redirect_link('/index.php'); + } + $this->template = createobject('phpgwapi.Template',PHPGW_APP_TPL); + } + + function common_header() + { + $GLOBALS['phpgw_info']['flags']['app_header'] = lang('Admin') . ' - ' . lang('ACL Manager') . + ': ' . $GLOBALS['phpgw']->common->grab_owner_name($this->account_id); + $GLOBALS['phpgw']->common->phpgw_header(); + echo parse_navbar(); + } + + function list_apps() + { + $this->common_header(); + + $GLOBALS['phpgw']->hooks->process('acl_manager',array('preferences')); + + $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'); + + if (is_array($GLOBALS['acl_manager'])) + { + foreach($GLOBALS['acl_manager'] as $app => $locations) + { + $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']); + $this->template->set_var('app_name',$GLOBALS['phpgw_info']['apps'][$app]['title']); + $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); + } + + if (is_array($locations)) + { + foreach($locations as $loc => $value) + { + $link_values = array( + 'menuaction' => 'admin.uiaclmanager.access_form', + 'location' => $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); + } + } + + $this->template->parse('rows','spacer_row',True); + } + } + $this->template->set_var(array( + 'cancel_action' => $GLOBALS['phpgw']->link('/index.php','menuaction=admin.uiaccounts.list_users'), + 'lang_cancel' => lang('Cancel') + )); + $this->template->pfp('out','list'); + } + + function access_form() + { + $location = $_GET['location']; + + if ($_POST['submit'] || $_POST['cancel']) + { + if ($_POST['submit']) + { + $total_rights = 0; + if (is_array($_POST['acl_rights'])) + { + foreach($_POST['acl_rights'] as $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]; + + $this->common_header(); + $this->template->set_file('form','acl_manager_form.tpl'); + + $acc = createobject('phpgwapi.accounts',$this->account_id); + $acc->read_repository(); + $afn = $GLOBALS['phpgw']->common->display_fullname($acc->data['account_lid'],$acc->data['firstname'],$acc->data['lastname']); + + $this->template->set_var('lang_message',lang('Check items to %1 to %2 for %3',lang($acl_manager['name']),$GLOBALS['phpgw_info']['apps'][$_GET['acl_app']]['title'],$afn)); + $link_values = array( + 'menuaction' => 'admin.uiaclmanager.access_form', + 'acl_app' => $_GET['acl_app'], + 'location' => urlencode($_GET['location']), + 'account_id' => $this->account_id + ); + + $acl = createobject('phpgwapi.acl',$this->account_id); + $acl->read_repository(); + $grants = $acl->get_rights($location,$_GET['acl_app']); + + $this->template->set_var('form_action',$GLOBALS['phpgw']->link('/index.php',$link_values)); + + $total = 0; + foreach($acl_manager['rights'] as $name => $value) + { + $cb .= ' '.lang($name)."
\n"; + } + $this->template->set_var('select_values',$cb); + $this->template->set_var('lang_submit',lang('Save')); + $this->template->set_var('lang_cancel',lang('Cancel')); + + $this->template->pfp('out','form'); + } + } diff --git a/admin/inc/class.uiconfig.inc.php b/admin/inc/class.uiconfig.inc.php index f1165dcb28..e983af549a 100644 --- a/admin/inc/class.uiconfig.inc.php +++ b/admin/inc/class.uiconfig.inc.php @@ -162,17 +162,11 @@ $GLOBALS['phpgw']->hooks->single('config',$appname); - while (list($null,$value) = each($vars)) + foreach($vars as $value) { $valarray = explode('_',$value); - $type = $valarray[0]; - $new = $newval = ''; - - while($chunk = next($valarray)) - { - $new[] = $chunk; - } - $newval = implode(' ',$new); + $type = array_shift($valarray); + $newval = implode(' ',$valarray); switch ($type) {