本文整理汇总了PHP中CRM_Core_Permission::customGroupClause方法的典型用法代码示例。如果您正苦于以下问题:PHP CRM_Core_Permission::customGroupClause方法的具体用法?PHP CRM_Core_Permission::customGroupClause怎么用?PHP CRM_Core_Permission::customGroupClause使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CRM_Core_Permission
的用法示例。
在下文中一共展示了CRM_Core_Permission::customGroupClause方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: array
/**
* Store and return an array of all active custom fields.
*
* @param string $customDataType type of Custom Data
* @param boolean $showAll If true returns all fields (includes disabled fields)
* @param boolean $inline If true returns all inline fields (includes disabled fields)
* @param int $customDataSubType Custom Data sub type value
* @param int $customDataSubName Custom Data sub name value
* @param boolean $onlyParent return only top level custom data, for eg, only Participant and ignore subname and subtype
*
* @return array $fields - an array of active custom fields.
*
* @access public
* @static
*/
public static function &getFields($customDataType = 'Individual', $showAll = false, $inline = false, $customDataSubType = null, $customDataSubName = null, $onlyParent = false)
{
$onlySubType = false;
if ($customDataType && !is_array($customDataType)) {
if (in_array($customDataType, CRM_Contact_BAO_ContactType::subTypes())) {
// This is the case when getFieldsForImport() requires fields
// limited strictly to a subtype.
$customDataSubType = $customDataType;
$customDataType = CRM_Contact_BAO_ContactType::getBasicType($customDataType);
$onlySubType = true;
}
if (in_array($customDataType, array_keys(CRM_Core_SelectValues::customGroupExtends()))) {
// this makes the method flexible to support retrieving fields
// for multiple extends value.
$customDataType = array($customDataType);
}
}
if (is_array($customDataType)) {
$cacheKey = implode('_', $customDataType);
} else {
$cacheKey = $customDataType;
}
$cacheKey .= $customDataSubType ? "{$customDataSubType}_" : "_0";
$cacheKey .= $customDataSubName ? "{$customDataSubName}_" : "_0";
$cacheKey .= $showAll ? "_1" : "_0";
$cacheKey .= $inline ? "_1_" : "_0_";
$cacheKey .= $onlyParent ? "_1_" : "_0_";
$cacheKey .= $onlySubType ? "_1_" : "_0_";
$cgTable = CRM_Core_DAO_CustomGroup::getTableName();
// also get the permission stuff here
require_once 'CRM/Core/Permission.php';
$permissionClause = CRM_Core_Permission::customGroupClause(CRM_Core_Permission::VIEW, "{$cgTable}.");
// lets md5 permission clause and take first 8 characters
$cacheKey .= substr(md5($permissionClause), 0, 8);
if (strlen($cacheKey) > 40) {
$cacheKey = md5($cacheKey);
}
if (!self::$_importFields || CRM_Utils_Array::value($cacheKey, self::$_importFields) === null) {
if (!self::$_importFields) {
self::$_importFields = array();
}
// check if we can retrieve from database cache
require_once 'CRM/Core/BAO/Cache.php';
$fields =& CRM_Core_BAO_Cache::getItem('contact fields', "custom importableFields {$cacheKey}");
if ($fields === null) {
$cfTable = self::getTableName();
$extends = '';
if (is_array($customDataType)) {
$value = null;
foreach ($customDataType as $dataType) {
if (in_array($dataType, array_keys(CRM_Core_SelectValues::customGroupExtends()))) {
if (in_array($dataType, array('Individual', 'Household', 'Organization'))) {
$val = "'" . CRM_Utils_Type::escape($dataType, 'String') . "', 'Contact' ";
} else {
$val = "'" . CRM_Utils_Type::escape($dataType, 'String') . "'";
}
$value = $value ? $value . ", {$val}" : $val;
}
}
if ($value) {
$extends = "AND {$cgTable}.extends IN ( {$value} ) ";
}
}
if ($onlyParent) {
$extends .= " AND {$cgTable}.extends_entity_column_value IS NULL AND {$cgTable}.extends_entity_column_id IS NULL ";
}
$query = "SELECT {$cfTable}.id, {$cfTable}.label,\n {$cgTable}.title,\n {$cfTable}.data_type, {$cfTable}.html_type,\n {$cfTable}.options_per_line,\n {$cgTable}.extends, {$cfTable}.is_search_range,\n {$cgTable}.extends_entity_column_value,\n {$cgTable}.extends_entity_column_id,\n {$cfTable}.is_view,\n {$cfTable}.option_group_id,\n {$cfTable}.date_format,\n {$cfTable}.time_format,\n {$cgTable}.is_multiple\n FROM {$cfTable}\n INNER JOIN {$cgTable}\n ON {$cfTable}.custom_group_id = {$cgTable}.id\n WHERE ( 1 ) ";
if (!$showAll) {
$query .= " AND {$cfTable}.is_active = 1 AND {$cgTable}.is_active = 1 ";
}
if ($inline) {
$query .= " AND {$cgTable}.style = 'Inline' ";
}
//get the custom fields for specific type in
//combination with fields those support any type.
if ($customDataSubType) {
$customDataSubType = CRM_Core_DAO::VALUE_SEPARATOR . $customDataSubType . CRM_Core_DAO::VALUE_SEPARATOR;
$query .= " AND ( {$cgTable}.extends_entity_column_value LIKE '%{$customDataSubType}%'";
if (!$onlySubType) {
$query .= " OR {$cgTable}.extends_entity_column_value IS NULL";
}
$query .= " )";
}
if ($customDataSubName) {
$query .= " AND ( {$cgTable}.extends_entity_column_id = {$customDataSubName} ) ";
//.........这里部分代码省略.........
示例2: array
/**
* Store and return an array of all active custom fields.
*
* @param string $customDataType
* Type of Custom Data; empty is a synonym for "all contact data types".
* @param bool $showAll
* If true returns all fields (includes disabled fields).
* @param bool $inline
* If true returns all inline fields (includes disabled fields).
* @param int $customDataSubType
* Custom Data sub type value.
* @param int $customDataSubName
* Custom Data sub name value.
* @param bool $onlyParent
* Return only top level custom data, for eg, only Participant and ignore subname and subtype.
* @param bool $onlySubType
* Return only custom data for subtype.
* @param bool $checkPermission
* If false, do not include permissioning clause.
*
* @return array
* an array of active custom fields.
*
*/
public static function &getFields($customDataType = 'Individual', $showAll = FALSE, $inline = FALSE, $customDataSubType = NULL, $customDataSubName = NULL, $onlyParent = FALSE, $onlySubType = FALSE, $checkPermission = TRUE)
{
if (empty($customDataType)) {
$customDataType = array('Contact', 'Individual', 'Organization', 'Household');
}
if ($customDataType && !is_array($customDataType)) {
if (in_array($customDataType, CRM_Contact_BAO_ContactType::subTypes())) {
// This is the case when getFieldsForImport() requires fields
// limited strictly to a subtype.
$customDataSubType = $customDataType;
$customDataType = CRM_Contact_BAO_ContactType::getBasicType($customDataType);
$onlySubType = TRUE;
}
if (in_array($customDataType, array_keys(CRM_Core_SelectValues::customGroupExtends()))) {
// this makes the method flexible to support retrieving fields
// for multiple extends value.
$customDataType = array($customDataType);
}
}
$customDataSubType = CRM_Utils_Array::explodePadded($customDataSubType);
if (is_array($customDataType)) {
$cacheKey = implode('_', $customDataType);
} else {
$cacheKey = $customDataType;
}
$cacheKey .= !empty($customDataSubType) ? '_' . implode('_', $customDataSubType) : '_0';
$cacheKey .= $customDataSubName ? "{$customDataSubName}_" : '_0';
$cacheKey .= $showAll ? '_1' : '_0';
$cacheKey .= $inline ? '_1_' : '_0_';
$cacheKey .= $onlyParent ? '_1_' : '_0_';
$cacheKey .= $onlySubType ? '_1_' : '_0_';
$cacheKey .= $checkPermission ? '_1_' : '_0_';
$cgTable = CRM_Core_DAO_CustomGroup::getTableName();
// also get the permission stuff here
if ($checkPermission) {
$permissionClause = CRM_Core_Permission::customGroupClause(CRM_Core_Permission::VIEW, "{$cgTable}.");
} else {
$permissionClause = '(1)';
}
// lets md5 permission clause and take first 8 characters
$cacheKey .= substr(md5($permissionClause), 0, 8);
if (strlen($cacheKey) > 40) {
$cacheKey = md5($cacheKey);
}
if (!self::$_importFields || CRM_Utils_Array::value($cacheKey, self::$_importFields) === NULL) {
if (!self::$_importFields) {
self::$_importFields = array();
}
// check if we can retrieve from database cache
$fields = CRM_Core_BAO_Cache::getItem('contact fields', "custom importableFields {$cacheKey}");
if ($fields === NULL) {
$cfTable = self::getTableName();
$extends = '';
if (is_array($customDataType)) {
$value = NULL;
foreach ($customDataType as $dataType) {
if (in_array($dataType, array_keys(CRM_Core_SelectValues::customGroupExtends()))) {
if (in_array($dataType, array('Individual', 'Household', 'Organization'))) {
$val = "'" . CRM_Utils_Type::escape($dataType, 'String') . "', 'Contact' ";
} else {
$val = "'" . CRM_Utils_Type::escape($dataType, 'String') . "'";
}
$value = $value ? $value . ", {$val}" : $val;
}
}
if ($value) {
$extends = "AND {$cgTable}.extends IN ( {$value} ) ";
}
}
if (!empty($customDataType) && empty($extends)) {
// $customDataType specified a filter, but there is no corresponding SQL ($extends)
self::$_importFields[$cacheKey] = array();
return self::$_importFields[$cacheKey];
}
if ($onlyParent) {
$extends .= " AND {$cgTable}.extends_entity_column_value IS NULL AND {$cgTable}.extends_entity_column_id IS NULL ";
//.........这里部分代码省略.........
示例3: CRM_Core_DAO_CustomGroup
/**
* @param $entityType
* @param $path
* @param string $cidToken
*
* @return array
*/
public static function &getActiveGroups($entityType, $path, $cidToken = '%%cid%%')
{
// for Group's
$customGroupDAO = new CRM_Core_DAO_CustomGroup();
// get 'Tab' and 'Tab with table' groups
$customGroupDAO->whereAdd("style IN ('Tab', 'Tab with table')");
$customGroupDAO->whereAdd("is_active = 1");
// add whereAdd for entity type
self::_addWhereAdd($customGroupDAO, $entityType, $cidToken);
$groups = array();
$permissionClause = CRM_Core_Permission::customGroupClause(CRM_Core_Permission::VIEW, NULL, TRUE);
$customGroupDAO->whereAdd($permissionClause);
// order by weight
$customGroupDAO->orderBy('weight');
$customGroupDAO->find();
// process each group with menu tab
while ($customGroupDAO->fetch()) {
$group = array();
$group['id'] = $customGroupDAO->id;
$group['path'] = $path;
$group['title'] = "{$customGroupDAO->title}";
$group['query'] = "reset=1&gid={$customGroupDAO->id}&cid={$cidToken}";
$group['extra'] = array('gid' => $customGroupDAO->id);
$group['table_name'] = $customGroupDAO->table_name;
$group['is_multiple'] = $customGroupDAO->is_multiple;
$groups[] = $group;
}
return $groups;
}
示例4: getActivityTypeCustomSQL
/**
* @param int $activityTypeID
* @param null $dateFormat
*
* @return mixed
*/
public function getActivityTypeCustomSQL($activityTypeID, $dateFormat = NULL)
{
static $cache = array();
if (is_null($activityTypeID)) {
$activityTypeID = 0;
}
if (!isset($cache[$activityTypeID])) {
$query = "\nSELECT cg.title as groupTitle,\n cg.table_name as tableName ,\n cf.column_name as columnName,\n cf.label as label ,\n cg.id as groupID ,\n cf.id as fieldID ,\n cf.data_type as dataType ,\n cf.html_type as htmlType ,\n cf.option_group_id as optionGroupID\nFROM civicrm_custom_group cg,\n civicrm_custom_field cf\nWHERE cf.custom_group_id = cg.id\nAND cg.extends = 'Activity'\nAND " . CRM_Core_Permission::customGroupClause(CRM_Core_Permission::VIEW, 'cg.');
if ($activityTypeID) {
$query .= "AND ( cg.extends_entity_column_value IS NULL OR cg.extends_entity_column_value LIKE '%" . CRM_Core_DAO::VALUE_SEPARATOR . "%1" . CRM_Core_DAO::VALUE_SEPARATOR . "%' )";
} else {
$query .= "AND cg.extends_entity_column_value IS NULL";
}
$query .= "ORDER BY cg.weight, cf.weight";
$params = array(1 => array($activityTypeID, 'Integer'));
$dao = CRM_Core_DAO::executeQuery($query, $params);
$result = $options = $sql = $groupTitle = array();
while ($dao->fetch()) {
if (!array_key_exists($dao->tableName, $result)) {
$result[$dao->tableName] = array();
$sql[$dao->tableName] = array();
}
$result[$dao->tableName][$dao->columnName] = array('label' => $dao->label, 'type' => $dao->dataType, 'fieldID' => $dao->fieldID);
$options[$dao->fieldID] = array();
$options[$dao->fieldID]['attributes'] = array('label' => $dao->label, 'data_type' => $dao->dataType, 'html_type' => $dao->htmlType);
// since we want to add ISO date format.
if ($dateFormat && $dao->htmlType == 'Select Date') {
$options[$dao->fieldID]['attributes']['format'] = $dateFormat;
}
if ($dao->optionGroupID) {
$query = "\nSELECT label, value\n FROM civicrm_option_value\n WHERE option_group_id = {$dao->optionGroupID}\n";
$option = CRM_Core_DAO::executeQuery($query);
while ($option->fetch()) {
$dataType = $dao->dataType;
if ($dataType == 'Int' || $dataType == 'Float') {
$num = round($option->value, 2);
$options[$dao->fieldID]["{$num}"] = $option->label;
} else {
$options[$dao->fieldID][$option->value] = $option->label;
}
}
}
$sql[$dao->tableName][] = $dao->columnName;
$groupTitle[$dao->tableName] = $dao->groupTitle;
}
foreach ($sql as $tableName => $values) {
$columnNames = implode(',', $values);
$sql[$tableName] = "\nSELECT '{$groupTitle[$tableName]}' as groupTitle, {$columnNames}\nFROM {$tableName}\nWHERE entity_id = %1\n";
}
$cache[$activityTypeID] = array($result, $options, $sql);
}
return $cache[$activityTypeID];
}