'dedupe_default_limit' => CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME,
'remote_profile_submissions' => CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME,
'allow_alert_autodismissal' => CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME,
+ 'prevNextBackend' => CRM_Core_BAO_Setting::SEARCH_PREFERENCES_NAME,
);
public $_uploadMaxSize;
'recentItemsMaxCount',
'recentItemsProviders',
'dedupe_default_limit',
+ 'prevNextBackend',
));
}
}
}
+ /**
+ * Get a list of available backend services.
+ *
+ * @return array
+ * Array(string $id => string $label).
+ */
+ public static function getPrevNextBackends() {
+ return [
+ 'default' => ts('Default (Auto-detect)'),
+ 'sql' => ts('SQL'),
+ 'redis' => ts('Redis'),
+ ];
+ }
+
}
* @return \CRM_Core_PrevNextCache_Interface
*/
public static function createPrevNextCache($container) {
- $cacheDriver = \CRM_Utils_Cache::getCacheDriver();
- $service = 'prevnext.driver.' . strtolower($cacheDriver);
- return $container->has($service)
- ? $container->get($service)
- : $container->get('prevnext.driver.sql');
+ $setting = \Civi::settings()->get('prevNextBackend');
+ if ($setting === 'default') {
+ $cacheDriver = \CRM_Utils_Cache::getCacheDriver();
+ $service = 'prevnext.driver.' . strtolower($cacheDriver);
+ return $container->has($service)
+ ? $container->get($service)
+ : $container->get('prevnext.driver.sql');
+ }
+ else {
+ return $container->get('prevnext.driver.' . $setting);
+ }
}
public static function createCacheConfig() {
'description' => 'If set, this will be the default profile used for contact search.',
'help_text' => NULL,
),
+ 'prevNextBackend' => array(
+ 'group_name' => 'Search Preferences',
+ 'group' => 'Search Preferences',
+ 'name' => 'prevNextBackend',
+ 'type' => 'String',
+ 'quick_form_type' => 'Select',
+ 'html_type' => 'Select',
+ 'html_attributes' => array(
+ //'class' => 'crm-select2',
+ ),
+ 'default' => 'default',
+ 'add' => '5.6',
+ 'title' => 'PrevNext Cache',
+ 'is_domain' => 1,
+ 'is_contact' => 0,
+ 'pseudoconstant' => array(
+ 'callback' => 'CRM_Core_BAO_PrevNextCache::getPrevNextBackends',
+ ),
+ 'description' => 'When performing a search, how should the search-results be cached?',
+ 'help_text' => '',
+ ),
'searchPrimaryDetailsOnly' => array(
'group_name' => 'Search Preferences',
'group' => 'Search Preferences',