True); function uiaclprefs() { $GLOBALS['phpgw']->nextmatchs = CreateObject('phpgwapi.nextmatchs'); } function index() { $acl_app = get_var('acl_app',Array('GET','POST')); $start = get_var('start',Array('GET','POST')); $query = get_var('query',Array('GET','POST')); $s_groups = get_var('s_groups',Array('GET','POST')); $s_users = get_var('s_users',Array('GET','POST')); if(isset(get_var('owner',Array('POST')))) { $owner = get_var('owner',Array('POST')); } else { $owner = get_var('owner',Array('GET')); } if (! $acl_app) { $acl_app = 'preferences'; $acl_app_not_passed = True; } $GLOBALS['phpgw_info']['flags']['currentapp'] = $acl_app; if ($acl_app_not_passed) { if(is_object($GLOBALS['phpgw']->log)) { $GLOBALS['phpgw']->log->message(array( 'text' => 'F-BadmenuactionVariable, failed to pass acl_app.', 'line' => __LINE__, 'file' => __FILE__ )); $GLOBALS['phpgw']->log->commit(); } } if ($GLOBALS['phpgw_info']['server']['deny_user_grants_access']) { echo '
'.lang($GLOBALS['phpgw_info']['flags']['currentapp'].' preferences').' - '.lang('acl').': '.$owner_name.'
',
'action_url' => $GLOBALS['phpgw']->link('/index.php','menuaction=preferences.uiaclprefs.index&acl_app=' . $acl_app),
'bg_color' => $GLOBALS['phpgw_info']['theme']['th_bg'],
'submit_lang' => lang('submit'),
'common_hidden_vars_form' => $common_hidden_vars
);
$this->template->set_var($var);
if(isset($query_result) && $query_result)
{
$common_hidden_vars .= ''."\n";
}
$this->template->set_var('common_hidden_vars',$common_hidden_vars);
$var = Array(
'read_lang' => lang('Read'),
'add_lang' => lang('Add'),
'edit_lang' => lang('Edit'),
'delete_lang' => lang('Delete')
);
$this->template->set_var($var);
$this->template->set_var('private_lang',lang('Private'));
if(intval($s_groups) <> count($groups))
{
$this->template->set_var('string',lang('Groups'));
$this->template->parse('row','row_colspan',True);
reset($groups);
for($k=0;$k
acctid: '.$user['account_id'];
if ($user['account_id'])
{
$go = True;
}
else
{
$go = False;
}
if($query)
{
$name = ' '.$user['account_firstname'].' '.$user['account_lastname'].' '.$user['account_lid'].' ';
if(!strpos($name,$query))
{
$go = False;
}
}
if($go && $user['account_id'] != $owner) // Need to be $owner not $GLOBALS['phpgw_info']['user']['account_id']
{
// or the admin can't get special grants from a group
$tr_color = $GLOBALS['phpgw']->nextmatchs->alternate_row_color($tr_color);
$this->display_row($tr_color,'u_',$user['account_id'],$GLOBALS['phpgw']->common->display_fullname($user['account_lid'],$user['account_firstname'],$user['account_lastname']),$is_group);
$s_users++;
$processed[] = $user['account_id'];
$total++;
if($total == $maxm)
{
break;
}
}
}
}
}
$extra_parms = 'menuaction=preferences.uiaclprefs.index'
. '&acl_app=' . $acl_app
. '&s_users='.$s_users.'&s_groups='.$s_groups
. '&maxm=' . $maxm . '&totalentries=' . $totalentries
. '&total=' . ($start + $total) . '&owner='.$owner;
$var = Array(
'nml' => $GLOBALS['phpgw']->nextmatchs->left('/index.php',$start,$totalentries,$extra_parms),
'nmr' => $GLOBALS['phpgw']->nextmatchs->right('/index.php',$start,$totalentries,$extra_parms),
'search_value' => (isset($query) && $query?$query:''),
'search' => lang('search'),
'processed' => urlencode(serialize($processed))
);
$this->template->set_var($var);
$this->template->pfp('out','preferences');
}
function check_acl($label,$id,$acl,$rights,$right,$is_group=False)
{
$this->template->set_var($acl,$label.$GLOBALS['phpgw_info']['flags']['currentapp'].'['.$id.'_'.$right.']');
$rights_set = (($rights & $right)?' checked':'');
if ($is_group)
{
// This is so you can't select it in the GUI
$rights_set .= ' disabled';
}
$this->template->set_var($acl.'_selected',$rights_set);
}
function display_row($bg_color,$label,$id,$name,$is_group)
{
$this->template->set_var('row_color',$bg_color);
$this->template->set_var('user',$name);
$rights = $this->acl->get_rights($id,$GLOBALS['phpgw_info']['flags']['currentapp']);
// vv This is new
$grantors = $this->acl->get_ids_for_location($id,$rights,$GLOBALS['phpgw_info']['flags']['currentapp']);
$is_group_set = False;
while(@$grantors && list($key,$grantor) = each($grantors))
{
if($GLOBALS['phpgw']->accounts->get_type($grantor) == 'g')
{
$is_group_set = True;
}
}
// ^^ This is new
$this->check_acl($label,$id,'read',$rights,PHPGW_ACL_READ,($is_group_set && ($rights & PHPGW_ACL_READ) && !$is_group?$is_group_set:False));
$this->check_acl($label,$id,'add',$rights,PHPGW_ACL_ADD,($is_group_set && ($rights & PHPGW_ACL_ADD && !$is_group)?$is_group_set:False));
$this->check_acl($label,$id,'edit',$rights,PHPGW_ACL_EDIT,($is_group_set && ($rights & PHPGW_ACL_EDIT && !$is_group)?$is_group_set:False));
$this->check_acl($label,$id,'delete',$rights,PHPGW_ACL_DELETE,($is_group_set && ($rights & PHPGW_ACL_DELETE && !$is_group)?$is_group_set:False));
$this->check_acl($label,$id,'private',$rights,PHPGW_ACL_PRIVATE,$is_group);
$this->template->parse('row','acl_row',True);
}
}
?>