X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FCore%2FOptionGroup.php;h=66ab0bade0aecbd8178ffcfca254dad13dc7d01b;hb=f0985b2635377b0e02d204d5adf872fce4997758;hp=64131a314b3c9927f34acb7e3002d60bc778193b;hpb=3f3a3ba09a3ea7bbc34511c5d8039d48aa2dd0e7;p=civicrm-core.git diff --git a/CRM/Core/OptionGroup.php b/CRM/Core/OptionGroup.php index 64131a314b..66ab0bade0 100644 --- a/CRM/Core/OptionGroup.php +++ b/CRM/Core/OptionGroup.php @@ -103,6 +103,7 @@ class CRM_Core_OptionGroup { $localize = FALSE, $condition = NULL, $labelColumnName = 'label', $onlyActive = TRUE, $fresh = FALSE, $keyColumnName = 'value' ) { + $cache = CRM_Utils_Cache::singleton(); $cacheKey = self::createCacheKey($name, $flip, $grouping, $localize, $condition, $labelColumnName, $onlyActive, $keyColumnName); if (!$fresh) { @@ -111,7 +112,6 @@ class CRM_Core_OptionGroup { return self::$_cache[$cacheKey]; } // Fetch from main cache - $cache = CRM_Utils_Cache::singleton(); $var = $cache->get($cacheKey); if ($var) { return $var; @@ -193,13 +193,15 @@ WHERE v.option_group_id = g.id * @static * @void */ - static function &valuesByID($id, $flip = FALSE, $grouping = FALSE, $localize = FALSE, $labelColumnName = 'label') { - $cacheKey = "CRM_OG_ID_{$id}_{$flip}_{$grouping}_{$localize}_{$labelColumnName}"; + static function &valuesByID($id, $flip = FALSE, $grouping = FALSE, $localize = FALSE, $labelColumnName = 'label', $onlyActive = TRUE, $fresh = FALSE) { + $cacheKey = self::createCacheKey($id, $flip, $grouping, $localize, $labelColumnName, $onlyActive); $cache = CRM_Utils_Cache::singleton(); - $var = $cache->get($cacheKey); - if ($var) { - return $var; + if (!$fresh) { + $var = $cache->get($cacheKey); + if ($var) { + return $var; + } } $query = " SELECT v.{$labelColumnName} as {$labelColumnName} ,v.value as value, v.grouping as grouping @@ -207,10 +209,13 @@ FROM civicrm_option_value v, civicrm_option_group g WHERE v.option_group_id = g.id AND g.id = %1 - AND v.is_active = 1 AND g.is_active = 1 - ORDER BY v.weight, v.label; "; + if ($onlyActive) { + $query .= " AND v.is_active = 1 "; + } + $query .= " ORDER BY v.weight, v.label"; + $p = array(1 => array($id, 'Integer')); $dao = CRM_Core_DAO::executeQuery($query, $p); @@ -367,7 +372,7 @@ WHERE v.option_group_id = g.id * @static * * @return string the value from the row where is_default = true - */ + */ static function getDefaultValue($groupName) { if (empty($groupName)) { return NULL; @@ -389,7 +394,7 @@ WHERE v.option_group_id = g.id $p = array(1 => array($groupName, 'String')); return CRM_Core_DAO::singleValueQuery($query, $p); } - + /** * Creates a new option group with the passed in values * @TODO: Should update the group if it already exists intelligently, so multi-lingual is @@ -591,6 +596,7 @@ WHERE v.option_group_id = g.id static function flushAll() { self::$_values = array(); self::$_cache = array(); + CRM_Utils_Cache::singleton()->flush(); } }