Merge pull request #13855 from eileenmcnaughton/activity_date_picker
[civicrm-core.git] / Civi / Core / Container.php
index cdaabecc91e36380016b2f31e53e91d3f0e66e07..92290febc70db9e441eafdf3c77a169ccb7b0aad 100644 (file)
@@ -201,7 +201,6 @@ class Container {
 
     // Expose legacy singletons as services in the container.
     $singletons = array(
-      'resources' => 'CRM_Core_Resources',
       'httpClient' => 'CRM_Utils_HttpClient',
       'cache.default' => 'CRM_Utils_Cache',
       'i18n' => 'CRM_Core_I18n',
@@ -216,6 +215,11 @@ class Container {
     }
     $container->setAlias('cache.short', 'cache.default');
 
+    $container->setDefinition('resources', new Definition(
+      'CRM_Core_Resources',
+      [new Reference('service_container')]
+    ))->setFactory(array(new Reference(self::SELF), 'createResources'));
+
     $container->setDefinition('prevnext', new Definition(
       'CRM_Core_PrevNextCache_Interface',
       [new Reference('service_container')]
@@ -226,6 +230,14 @@ class Container {
       []
     ));
 
+    $container->setDefinition('prevnext.driver.redis', new Definition(
+      'CRM_Core_PrevNextCache_Redis',
+      [new Reference('cache_config')]
+    ));
+
+    $container->setDefinition('cache_config', new Definition('ArrayObject'))
+      ->setFactory(array(new Reference(self::SELF), 'createCacheConfig'));
+
     $container->setDefinition('civi.mailing.triggers', new Definition(
       'Civi\Core\SqlTrigger\TimestampTriggers',
       array('civicrm_mailing', 'Mailing')
@@ -411,16 +423,44 @@ class Container {
     return $kernel;
   }
 
+  /**
+   * @param ContainerInterface $container
+   * @return \CRM_Core_Resources
+   */
+  public static function createResources($container) {
+    $sys = \CRM_Extension_System::singleton();
+    return new \CRM_Core_Resources(
+      $sys->getMapper(),
+      $container->get('cache.js_strings'),
+      \CRM_Core_Config::isUpgradeMode() ? NULL : 'resCacheCode'
+    );
+  }
+
   /**
    * @param ContainerInterface $container
    * @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') {
+      // For initial release (5.8.x), continue defaulting to SQL.
+      $isTransitional = version_compare(\CRM_Utils_System::version(), '5.9.alpha1', '<');
+      $cacheDriver = \CRM_Utils_Cache::getCacheDriver();
+      $service = 'prevnext.driver.' . strtolower($cacheDriver);
+      return $container->has($service) && !$isTransitional
+        ? $container->get($service)
+        : $container->get('prevnext.driver.sql');
+    }
+    else {
+      return $container->get('prevnext.driver.' . $setting);
+    }
+  }
+
+  public static function createCacheConfig() {
+    $driver = \CRM_Utils_Cache::getCacheDriver();
+    $settings = \CRM_Utils_Cache::getCacheSettings($driver);
+    $settings['driver'] = $driver;
+    return new \ArrayObject($settings);
   }
 
   /**