diff --git a/preferences/inc/class.uiaclprefs.inc.php b/preferences/inc/class.uiaclprefs.inc.php new file mode 100644 index 0000000000..d0988d7d14 --- /dev/null +++ b/preferences/inc/class.uiaclprefs.inc.php @@ -0,0 +1,386 @@ + True); + + function uiaclprefs() + { + $GLOBALS['phpgw']->nextmatchs = CreateObject('phpgwapi.nextmatchs'); + } + + function index() + { + $acl_app = $GLOBALS['HTTP_GET_VARS']['acl_app']; + $owner = $GLOBALS['owner']; + + 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);
+ }
+ }
+?>