X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FCore%2FOptionGroup.php;h=250c93cff309723831aec292d907c1066d97aec0;hb=7c990617d04cdb233309f428d94e4be3bf3b57e3;hp=8fdecdfdb5f91ba4ddeeff7e2d5540b4fd064415;hpb=d0fcf9dfefc3d387ebcc155521c727de22a7a718;p=civicrm-core.git diff --git a/CRM/Core/OptionGroup.php b/CRM/Core/OptionGroup.php index 8fdecdfdb5..250c93cff3 100644 --- a/CRM/Core/OptionGroup.php +++ b/CRM/Core/OptionGroup.php @@ -109,6 +109,7 @@ class CRM_Core_OptionGroup { * @param string $keyColumnName * the column to use for 'key'. * @param string $orderBy + * the column to use for ordering. * * @return array * The values as specified by the params @@ -120,7 +121,7 @@ class CRM_Core_OptionGroup { $orderBy = 'weight' ) { $cache = CRM_Utils_Cache::singleton(); - $cacheKey = self::createCacheKey($name, $flip, $grouping, $localize, $condition, $labelColumnName, $onlyActive, $keyColumnName); + $cacheKey = self::createCacheKey($name, $flip, $grouping, $localize, $condition, $labelColumnName, $onlyActive, $keyColumnName, $orderBy); if (!$fresh) { // Fetch from static var @@ -144,6 +145,14 @@ WHERE v.option_group_id = g.id if ($onlyActive) { $query .= " AND v.is_active = 1 "; + // Only show options for enabled components + $componentClause = ' v.component_id IS NULL '; + $enabledComponents = CRM_Core_Config::singleton()->enableComponents; + if ($enabledComponents) { + $enabledComponents = '"' . implode('","', $enabledComponents) . '"'; + $componentClause .= " OR v.component_id IN (SELECT id FROM civicrm_component WHERE name IN ($enabledComponents)) "; + } + $query .= " AND ($componentClause) "; } if (in_array($name, self::$_domainIDGroups)) { $query .= " AND v.domain_id = " . CRM_Core_Config::domainID(); @@ -253,9 +262,9 @@ WHERE v.option_group_id = g.id } /** - * Lookup titles OR ids for a set of option_value populated fields. The retrieved value - * is assigned a new fieldname by id or id's by title - * (each within a specificied option_group) + * Lookup titles OR ids for a set of option_value populated fields. The + * retrieved value is assigned a new field name by id or id's by title + * (each within a specified option_group). * * @param array $params * Reference array of values submitted by the form. Based on. @@ -265,14 +274,13 @@ WHERE v.option_group_id = g.id * If $flip = true, adds actual field name => id * * @param array $names - * Reference array of fieldnames we want transformed. + * Array of field names we want transformed. * Array key = 'postName' (field name submitted by form in $params). * Array value = array('newName' => $newName, 'groupName' => $groupName). * - * * @param bool $flip */ - public static function lookupValues(&$params, &$names, $flip = FALSE) { + public static function lookupValues(&$params, $names, $flip = FALSE) { foreach ($names as $postName => $value) { // See if $params field is in $names array (i.e. is a value that we need to lookup) if ($postalName = CRM_Utils_Array::value($postName, $params)) { @@ -334,6 +342,7 @@ WHERE v.option_group_id = g.id * @return null */ public static function getLabel($groupName, $value, $onlyActiveValue = TRUE) { + Civi::log()->warning('Deprecated function, use CRM_Core_PseudoConstant::getLabel', array('civi.tag' => 'deprecated')); if (empty($groupName) || empty($value) ) { @@ -387,6 +396,8 @@ WHERE v.option_group_id = g.id return NULL; } + Civi::log()->warning('Deprecated function, use CRM_Core_PseudoConstant::getKey', array('civi.tag' => 'deprecated')); + $query = " SELECT v.label as label ,v.{$valueField} as value FROM civicrm_option_value v, @@ -665,6 +676,12 @@ WHERE v.option_group_id = g.id ); } + /** + * Flush all the places where option values are cached. + * + * Note that this is called from CRM_Core_PseudoConstant::flush() so we should resist + * the intuitive urge to flush that class. + */ public static function flushAll() { self::$_values = array(); self::$_cache = array();