/** * Get field access level * @param string $field Field name * @param array $context * @return int Access level */ public function ACLFieldGet($field, $context = array()) { if (empty($context['bean'])) { $context['bean'] = $this; } return SugarACL::getFieldAccess($this->getACLCategory(), $field, $context); }
/** * Filter fields list by ACLs * NOTE: works with global ACLs * @internal * @param array $list Field list. Will be modified. * @param string $category Module for ACL * @param string $user_id * @param bool $is_owner Should owner-only ACLs be counted? * @param bool $by_key use list keys * @param int $min_access Minimal access level to require * @param bool $blank_value Put blank string in place of removed fields? * @param bool $addACLParam Add 'acl' key with acl access value? * @param string $suffix Field suffix to strip from the list. */ function listFilter(&$list, $category, $user_id, $is_owner, $by_key = true, $min_access = 1, $blank_value = false, $addACLParam = false, $suffix = '') { foreach ($list as $key => $value) { if ($by_key) { $field = $key; if (is_array($value) && !empty($value['group'])) { $field = $value['group']; } } else { if (is_array($value)) { if (!empty($value['group'])) { $value = $value['group']; } else { if (!empty($value['name'])) { $value = $value['name']; } else { $value = ''; } } } $field = $value; } if (isset(self::$field_cache['lower'][$field])) { $field = self::$field_cache['lower'][$field]; } else { $oField = $field; $field = strtolower($field); if (!empty($suffix)) { $field = str_replace($suffix, '', $field); } self::$field_cache['lower'][$oField] = $field; } if (!isset(self::$field_cache[$is_owner][$field])) { $context = array("user_id" => $user_id); if ($is_owner) { $context['owner_override'] = true; } $access = SugarACL::getFieldAccess($category, $field, $context); self::$field_cache[$is_owner][$field] = $access; } else { $access = self::$field_cache[$is_owner][$field]; } if ($addACLParam) { $list[$key]['acl'] = $access; } else { if ($access < $min_access) { if ($blank_value) { $list[$key] = ''; } else { unset($list[$key]); } } } } }