CRM-16373 - CRM_Core_Config - Simplify initialization, esp `templateCompileDir`
authorTim Otten <totten@civicrm.org>
Sun, 23 Aug 2015 08:38:35 +0000 (01:38 -0700)
committerTim Otten <totten@civicrm.org>
Thu, 17 Sep 2015 22:45:01 +0000 (15:45 -0700)
Generally, this commit removes some silly 1-line functions, misplaed
functions, duplicated steps, obvious comments, and expired comments.

There is a change in `templateCompileDir`.

The `templateCompileDir` had two different intialization blocks (in
different places), which likely arose from variations in the code-paths used
for memcache systems.  Both routines append a locale and create the dir.

This is redundant, and it unnecessarily forces us to resolve the locale
early during initialization.  But honestly we don't need to append the
locale until much later (when/if Smarty is first used).

There are a few oddballs who use `$config->templateCompileDir` and they may
see a slight change (working with the real templateCompileDir rather than
the locale subdir):

 * The cleanup. If this code causes a change, it will be an improvement:
   instead of cleaning the Smarty cache for one locale, it'll clean the
   entire Smarty cache for all locales.
 * Random temp files. The temp files seem to be transactional in nature
   (tied to the specific invocatoin) and not to the locale.

CRM/Core/Config.php
CRM/Core/Config/Defaults.php
CRM/Core/DAO.php
CRM/Core/Smarty.php
CRM/Upgrade/Form.php
CRM/Utils/File.php
CRM/Utils/Geocode.php [new file with mode: 0644]
CRM/Utils/System.php

index c9d54c33fddeda16fa9e323a97a011cdc93a59d4..2f3a49b0b152106b076df821491e403df0a22f7e 100644 (file)
@@ -94,7 +94,7 @@ class CRM_Core_Config extends CRM_Core_Config_Variables {
    *
    * @var string
    */
-  public $templateCompileDir = './templates_c/en_US/';
+  public $templateCompileDir;
 
   /**
    * @var string
@@ -119,13 +119,6 @@ class CRM_Core_Config extends CRM_Core_Config_Variables {
    */
   public $customPHPPathDir;
 
-  /**
-   * The factory class used to instantiate our DB objects
-   *
-   * @var string
-   */
-  private $DAOFactoryClass = 'CRM_Contact_DAO_Factory';
-
   /**
    * The handle to the log that we are using
    * @var object
@@ -183,128 +176,32 @@ class CRM_Core_Config extends CRM_Core_Config_Variables {
    */
   public static function &singleton($loadFromDB = TRUE, $force = FALSE) {
     if (self::$_singleton === NULL || $force) {
-      // goto a simple error handler
       $GLOBALS['civicrm_default_error_scope'] = CRM_Core_TemporaryErrorScope::create(array('CRM_Core_Error', 'handle'));
       $errorScope = CRM_Core_TemporaryErrorScope::create(array('CRM_Core_Error', 'simpleHandler'));
 
-      // lets ensure we set E_DEPRECATED to minimize errors
-      // CRM-6327
       if (defined('E_DEPRECATED')) {
         error_reporting(error_reporting() & ~E_DEPRECATED);
       }
 
-      // first, attempt to get configuration object from cache
       $cache = CRM_Utils_Cache::singleton();
       self::$_singleton = $cache->get('CRM_Core_Config' . CRM_Core_Config::domainID());
-      // if not in cache, fire off config construction
       if (!self::$_singleton) {
         self::$_singleton = new CRM_Core_Config();
         self::$_singleton->_initialize($loadFromDB);
-
-        //initialize variables. for gencode we cannot load from the
-        //db since the db might not be initialized
-        if ($loadFromDB) {
-          // initialize stuff from the settings file
-          self::$_singleton->setCoreVariables();
-
-          self::$_singleton->_initVariables();
-
-          // I don't think we need to do this twice
-          // however just keeping this commented for now in 4.4
-          // in case we hit any issues - CRM-13064
-          // We can safely delete this once we release 4.4.4
-          // self::$_singleton->setCoreVariables();
-        }
         $cache->set('CRM_Core_Config' . CRM_Core_Config::domainID(), self::$_singleton);
       }
       else {
-        // we retrieve the object from memcache, so we now initialize the objects
-        self::$_singleton->_initialize($loadFromDB);
-
-        // CRM-9803, NYSS-4822
-        // this causes various settings to be reset and hence we should
-        // only use the config object that we retrieved from memcache
-      }
-
-      self::$_singleton->initialized = 1;
-
-      if (isset(self::$_singleton->customPHPPathDir) &&
-        self::$_singleton->customPHPPathDir
-      ) {
-        $include_path = self::$_singleton->customPHPPathDir . PATH_SEPARATOR . get_include_path();
-        set_include_path($include_path);
+        self::$_singleton->_initialize(FALSE);
       }
 
-      // set the callback at the very very end, to avoid an infinite loop
-      // set the error callback
       unset($errorScope);
 
-      // call the hook so other modules can add to the config
-      // again doing this at the very very end
       CRM_Utils_Hook::config(self::$_singleton);
-
-      // make sure session is always initialised
-      $session = CRM_Core_Session::singleton();
-
-      // for logging purposes, pass the userID to the db
-      $userID = $session->get('userID');
-      if ($userID) {
-        CRM_Core_DAO::executeQuery('SET @civicrm_user_id = %1',
-          array(1 => array($userID, 'Integer'))
-        );
-      }
-
-      // initialize authentication source
-      self::$_singleton->initAuthSrc();
+      self::$_singleton->authenticate();
     }
     return self::$_singleton;
   }
 
-  /**
-   * @param string $userFramework
-   *   One of 'Drupal', 'Joomla', etc.
-   */
-  private function _setUserFrameworkConfig($userFramework) {
-
-    $this->userFrameworkClass = 'CRM_Utils_System_' . $userFramework;
-    $this->userHookClass = 'CRM_Utils_Hook_' . $userFramework;
-    $userPermissionClass = 'CRM_Core_Permission_' . $userFramework;
-    $this->userPermissionClass = new $userPermissionClass();
-
-    $class = $this->userFrameworkClass;
-    // redundant with _initVariables
-    $this->userSystem = new $class();
-
-    if ($userFramework == 'Joomla') {
-      $this->userFrameworkURLVar = 'task';
-    }
-
-    if (defined('CIVICRM_UF_BASEURL')) {
-      $this->userFrameworkBaseURL = CRM_Utils_File::addTrailingSlash(CIVICRM_UF_BASEURL, '/');
-
-      //format url for language negotiation, CRM-7803
-      $this->userFrameworkBaseURL = CRM_Utils_System::languageNegotiationURL($this->userFrameworkBaseURL);
-
-      if (CRM_Utils_System::isSSL()) {
-        $this->userFrameworkBaseURL = str_replace('http://', 'https://',
-          $this->userFrameworkBaseURL
-        );
-      }
-    }
-
-    if (defined('CIVICRM_UF_DSN')) {
-      $this->userFrameworkDSN = CIVICRM_UF_DSN;
-    }
-
-    // this is dynamically figured out in the civicrm.settings.php file
-    if (defined('CIVICRM_CLEANURL')) {
-      $this->cleanURL = CIVICRM_CLEANURL;
-    }
-    else {
-      $this->cleanURL = 0;
-    }
-  }
-
   /**
    * Initializes the entire application.
    * Reads constants defined in civicrm.settings.php and
@@ -313,74 +210,41 @@ class CRM_Core_Config extends CRM_Core_Config_Variables {
    * @param bool $loadFromDB
    */
   private function _initialize($loadFromDB = TRUE) {
-
-    // following variables should be set in CiviCRM settings and
-    // as crucial ones, are defined upon initialisation
-    // instead of in CRM_Core_Config_Defaults
-    if (defined('CIVICRM_DSN')) {
-      $this->dsn = CIVICRM_DSN;
+    if (!defined('CIVICRM_DSN') && $loadFromDB) {
+      $this->fatal('You need to define CIVICRM_DSN in civicrm.settings.php');
     }
-    elseif ($loadFromDB) {
-      // bypass when calling from gencode
-      echo 'You need to define CIVICRM_DSN in civicrm.settings.php';
-      exit();
+    $this->dsn = defined('CIVICRM_DSN') ? CIVICRM_DSN : NULL;
+
+    if (!defined('CIVICRM_TEMPLATE_COMPILEDIR') && $loadFromDB) {
+      $this->fatal('You need to define CIVICRM_TEMPLATE_COMPILEDIR in civicrm.settings.php');
     }
 
     if (defined('CIVICRM_TEMPLATE_COMPILEDIR')) {
-      $this->templateCompileDir = CRM_Utils_File::addTrailingSlash(CIVICRM_TEMPLATE_COMPILEDIR);
-
-      // also make sure we create the config directory within this directory
-      // the below statement will create both the templates directory and the config and log directory
-      $this->configAndLogDir
-        = CRM_Utils_File::baseFilePath($this->templateCompileDir) .
-        'ConfigAndLog' . DIRECTORY_SEPARATOR;
+      $this->configAndLogDir = CRM_Utils_File::baseFilePath() . 'ConfigAndLog' . DIRECTORY_SEPARATOR;
       CRM_Utils_File::createDir($this->configAndLogDir);
       CRM_Utils_File::restrictAccess($this->configAndLogDir);
 
-      // we're automatically prefixing compiled templates directories with country/language code
-      global $tsLocale;
-      if (!empty($tsLocale)) {
-        $this->templateCompileDir .= CRM_Utils_File::addTrailingSlash($tsLocale);
-      }
-      elseif (!empty($this->lcMessages)) {
-        $this->templateCompileDir .= CRM_Utils_File::addTrailingSlash($this->lcMessages);
-      }
-
+      $this->templateCompileDir = defined('CIVICRM_TEMPLATE_COMPILEDIR') ? CRM_Utils_File::addTrailingSlash(CIVICRM_TEMPLATE_COMPILEDIR) : NULL;
       CRM_Utils_File::createDir($this->templateCompileDir);
       CRM_Utils_File::restrictAccess($this->templateCompileDir);
     }
-    elseif ($loadFromDB) {
-      echo 'You need to define CIVICRM_TEMPLATE_COMPILEDIR in civicrm.settings.php';
-      exit();
-    }
 
-    $this->_initDAO();
+    CRM_Core_DAO::init($this->dsn);
 
-    if (defined('CIVICRM_UF')) {
-      $this->userFramework = CIVICRM_UF;
-      $this->_setUserFrameworkConfig($this->userFramework);
-    }
-    else {
-      echo 'You need to define CIVICRM_UF in civicrm.settings.php';
-      exit();
+    if (!defined('CIVICRM_UF')) {
+      $this->fatal('You need to define CIVICRM_UF in civicrm.settings.php');
     }
+    $this->setUserFramework(CIVICRM_UF);
 
-    // also initialize the logger
-    self::$_log = Log::singleton('display');
-  }
-
-  /**
-   * Initialize the DataObject framework.
-   */
-  private function _initDAO() {
-    CRM_Core_DAO::init($this->dsn);
+    if ($loadFromDB) {
+      $this->_initVariables();
+    }
 
-    $factoryClass = $this->DAOFactoryClass;
-    require_once str_replace('_', DIRECTORY_SEPARATOR, $factoryClass) . '.php';
-    CRM_Core_DAO::setFactory(new $factoryClass());
-    if (CRM_Utils_Constant::value('CIVICRM_MYSQL_STRICT', CRM_Utils_System::isDevelopment())) {
-      CRM_Core_DAO::executeQuery('SET SESSION sql_mode = STRICT_TRANS_TABLES');
+    if (isset($this->customPHPPathDir) && $this->customPHPPathDir) {
+      set_include_path($this->customPHPPathDir . PATH_SEPARATOR . get_include_path());
     }
+
+    $this->initialized = 1;
   }
 
   /**
@@ -400,6 +264,8 @@ class CRM_Core_Config extends CRM_Core_Config_Variables {
    * Initialize the config variables.
    */
   private function _initVariables() {
+    $this->templateDir = array(dirname(dirname(__DIR__)) . DIRECTORY_SEPARATOR . 'templates' . DIRECTORY_SEPARATOR);
+
     // retrieve serialised settings
     $variables = array();
     CRM_Core_BAO_ConfigSetting::retrieve($variables);
@@ -446,30 +312,25 @@ class CRM_Core_Config extends CRM_Core_Config_Variables {
           )), ts('Check Settings'), 'alert');
         }
       }
-      elseif ($key == 'lcMessages') {
-        // reset the templateCompileDir to locale-specific and make sure it exists
-        if (substr($this->templateCompileDir, -1 * strlen($value) - 1, -1) != $value) {
-          $this->templateCompileDir .= CRM_Utils_File::addTrailingSlash($value);
-          CRM_Utils_File::createDir($this->templateCompileDir);
-          CRM_Utils_File::restrictAccess($this->templateCompileDir);
-        }
-      }
 
       $this->$key = $value;
     }
 
     if ($this->userFrameworkResourceURL) {
-      // we need to do this here so all blocks also load from an ssl server
       if (CRM_Utils_System::isSSL()) {
-        CRM_Utils_System::mapConfigToSSL();
+        $this->userFrameworkResourceURL = str_replace('http://', 'https://', $this->userFrameworkResourceURL);
+        $this->resourceBase = $this->userFrameworkResourceURL;
+
+        if (!empty($this->extensionsURL)) {
+          $this->extensionsURL = str_replace('http://', 'https://', $this->extensionsURL);
+        }
+
+        $this->userSystem->mapConfigToSSL();
       }
+
       $rrb = parse_url($this->userFrameworkResourceURL);
-      // don't use absolute path if resources are stored on a different server
-      // CRM-4642
       $this->resourceBase = $this->userFrameworkResourceURL;
-      if (isset($_SERVER['HTTP_HOST']) &&
-        isset($rrb['host'])
-      ) {
+      if (isset($_SERVER['HTTP_HOST']) && isset($rrb['host'])) {
         $this->resourceBase = ($rrb['host'] == $_SERVER['HTTP_HOST']) ? $rrb['path'] : $this->userFrameworkResourceURL;
       }
     }
@@ -478,17 +339,7 @@ class CRM_Core_Config extends CRM_Core_Config_Variables {
       $this->customFileUploadDir = $this->uploadDir;
     }
 
-    if ($this->geoProvider) {
-      $this->geocodeMethod = 'CRM_Utils_Geocode_' . $this->geoProvider;
-    }
-    elseif ($this->mapProvider) {
-      $this->geocodeMethod = 'CRM_Utils_Geocode_' . $this->mapProvider;
-    }
-
-    require_once str_replace('_', DIRECTORY_SEPARATOR, $this->userFrameworkClass) . '.php';
-    $class = $this->userFrameworkClass;
-    // redundant with _setUserFrameworkConfig
-    $this->userSystem = new $class();
+    $this->geocodeMethod = CRM_Utils_Geocode::getProviderClass();
   }
 
   /**
@@ -565,8 +416,18 @@ class CRM_Core_Config extends CRM_Core_Config_Variables {
   /**
    * This method should initialize auth sources.
    */
-  public function initAuthSrc() {
+  public function authenticate() {
+    // make sure session is always initialised
     $session = CRM_Core_Session::singleton();
+
+    // for logging purposes, pass the userID to the db
+    $userID = $session->get('userID');
+    if ($userID) {
+      CRM_Core_DAO::executeQuery('SET @civicrm_user_id = %1',
+        array(1 => array($userID, 'Integer'))
+      );
+    }
+
     if ($session->get('userID') && !$session->get('authSrc')) {
       $session->set('authSrc', CRM_Core_Permission::AUTH_SRC_LOGIN);
     }
@@ -743,10 +604,48 @@ class CRM_Core_Config extends CRM_Core_Config_Variables {
 
   /**
    * Wrapper function to allow unit tests to switch user framework on the fly.
+   *
+   * @param string $userFramework
+   *   One of 'Drupal', 'Joomla', etc.
    */
-  public function setUserFramework($userFramework = NULL) {
+  public function setUserFramework($userFramework) {
     $this->userFramework = $userFramework;
-    $this->_setUserFrameworkConfig($userFramework);
+    $this->userFrameworkClass = 'CRM_Utils_System_' . $userFramework;
+    $this->userHookClass = 'CRM_Utils_Hook_' . $userFramework;
+    $userPermissionClass = 'CRM_Core_Permission_' . $userFramework;
+    $this->userPermissionClass = new $userPermissionClass();
+
+    $class = $this->userFrameworkClass;
+    $this->userSystem = new $class();
+
+    if ($userFramework == 'Joomla') {
+      $this->userFrameworkURLVar = 'task';
+    }
+
+    if (defined('CIVICRM_UF_BASEURL')) {
+      $this->userFrameworkBaseURL = CRM_Utils_File::addTrailingSlash(CIVICRM_UF_BASEURL, '/');
+
+      //format url for language negotiation, CRM-7803
+      $this->userFrameworkBaseURL = CRM_Utils_System::languageNegotiationURL($this->userFrameworkBaseURL);
+
+      if (CRM_Utils_System::isSSL()) {
+        $this->userFrameworkBaseURL = str_replace('http://', 'https://',
+          $this->userFrameworkBaseURL
+        );
+      }
+    }
+
+    if (defined('CIVICRM_UF_DSN')) {
+      $this->userFrameworkDSN = CIVICRM_UF_DSN;
+    }
+
+    // this is dynamically figured out in the civicrm.settings.php file
+    if (defined('CIVICRM_CLEANURL')) {
+      $this->cleanURL = CIVICRM_CLEANURL;
+    }
+    else {
+      $this->cleanURL = 0;
+    }
   }
 
   /**
@@ -773,4 +672,9 @@ class CRM_Core_Config extends CRM_Core_Config_Variables {
     self::$_singleton = NULL;
   }
 
+  private function fatal($message) {
+    echo $message;
+    exit();
+  }
+
 }
index f0f954430c647f3c165b4fad246a5f0ce7d66520..f4dd44f70efcb75d488f4d3fa0fb28fd181d53e1 100644 (file)
  */
 class CRM_Core_Config_Defaults {
 
-  public function setCoreVariables() {
-    global $civicrm_root;
-
-    $this->templateDir = array(
-      $civicrm_root . DIRECTORY_SEPARATOR .
-      'templates' . DIRECTORY_SEPARATOR,
-    );
-  }
-
   /**
    * Set the default values.
    * in an empty db, also called when setting component using GUI
@@ -79,9 +70,7 @@ class CRM_Core_Config_Defaults {
     }
 
     $baseCMSURL = CRM_Utils_System::baseCMSURL();
-    if ($config->templateCompileDir) {
-      $path = CRM_Utils_File::baseFilePath($config->templateCompileDir);
-    }
+    $path = CRM_Utils_File::baseFilePath();
     if (!isset($defaults['enableSSL'])) {
       $defaults['enableSSL'] = 0;
     }
@@ -106,9 +95,7 @@ class CRM_Core_Config_Defaults {
           );
 
         if (strpos($civicrm_root,
-            DIRECTORY_SEPARATOR . 'sites' .
-            DIRECTORY_SEPARATOR . 'all' .
-            DIRECTORY_SEPARATOR . 'modules'
+            DIRECTORY_SEPARATOR . 'sites' . DIRECTORY_SEPARATOR . 'all' . DIRECTORY_SEPARATOR . 'modules'
           ) === FALSE
         ) {
           $startPos = strpos($civicrm_root,
@@ -150,14 +137,14 @@ class CRM_Core_Config_Defaults {
       }
     }
 
-    if (!isset($defaults['imageUploadDir']) && is_dir($config->templateCompileDir)) {
+    if (!isset($defaults['imageUploadDir']) && is_dir($path)) {
       $imgDir = $path . "persist/contribute/";
 
       CRM_Utils_File::createDir($imgDir);
       $defaults['imageUploadDir'] = $imgDir;
     }
 
-    if (!isset($defaults['uploadDir']) && is_dir($config->templateCompileDir)) {
+    if (!isset($defaults['uploadDir']) && is_dir($path)) {
       $uploadDir = $path . "upload/";
 
       CRM_Utils_File::createDir($uploadDir);
@@ -165,7 +152,7 @@ class CRM_Core_Config_Defaults {
       $defaults['uploadDir'] = $uploadDir;
     }
 
-    if (!isset($defaults['customFileUploadDir']) && is_dir($config->templateCompileDir)) {
+    if (!isset($defaults['customFileUploadDir']) && is_dir($path)) {
       $customDir = $path . "custom/";
 
       CRM_Utils_File::createDir($customDir);
index 180cfba1845e58268d4f02eafdcf0edb20e12a34..e139a3d9fa1d9b0eac9847b45cf13f7624e8ab37 100644 (file)
@@ -104,6 +104,10 @@ class CRM_Core_DAO extends DB_DataObject {
     if (defined('CIVICRM_DAO_DEBUG')) {
       self::DebugLevel(CIVICRM_DAO_DEBUG);
     }
+    CRM_Core_DAO::setFactory(new CRM_Contact_DAO_Factory());
+    if (CRM_Utils_Constant::value('CIVICRM_MYSQL_STRICT', CRM_Utils_System::isDevelopment())) {
+      CRM_Core_DAO::executeQuery('SET SESSION sql_mode = STRICT_TRANS_TABLES');
+    }
   }
 
   /**
index fb84a6c1a9d6f216366b350199e39a0e3a4b12a8..edc321d6d2ca0b537100e743b6c253cc4f965215 100644 (file)
@@ -97,7 +97,9 @@ class CRM_Core_Smarty extends Smarty {
     else {
       $this->template_dir = $config->templateDir;
     }
-    $this->compile_dir = $config->templateCompileDir;
+    $this->compile_dir = CRM_Utils_File::addTrailingSlash(CRM_Utils_File::addTrailingSlash($config->templateCompileDir) . $this->getLocale());
+    CRM_Utils_File::createDir($this->compile_dir);
+    CRM_Utils_File::restrictAccess($this->compile_dir);
 
     // check and ensure it is writable
     // else we sometime suppress errors quietly and this results
@@ -315,4 +317,18 @@ class CRM_Core_Smarty extends Smarty {
     return $this;
   }
 
+  private function getLocale() {
+    global $tsLocale;
+    if (!empty($tsLocale)) {
+      return $tsLocale;
+    }
+
+    $config = CRM_Core_Config::singleton();
+    if (!empty($config->lcMessages)) {
+      return $config->lcMessages;
+    }
+
+    return 'en_US';
+  }
+
 }
index c46f121e83c8e8a8b7b7725f7ccb284dcd16ea92..099431f6da112022107191193d3edfe71e088d83 100644 (file)
@@ -123,7 +123,7 @@ class CRM_Upgrade_Form extends CRM_Core_Form {
     $this->locales = explode(CRM_Core_DAO::VALUE_SEPARATOR, $domain->locales);
 
     $smarty = CRM_Core_Smarty::singleton();
-    $smarty->compile_dir = $this->_config->templateCompileDir;
+    //$smarty->compile_dir = $this->_config->templateCompileDir;
     $smarty->assign('multilingual', $this->multilingual);
     $smarty->assign('locales', $this->locales);
 
index eecc40712ff509bdb642c76682a9a3c442d4f3e7..7da2868bbcb5b82e1fbac3f1a38d7d448bdd037a 100644 (file)
@@ -496,13 +496,14 @@ HTACCESS;
    * Create the base file path from which all our internal directories are
    * offset. This is derived from the template compile directory set
    */
-  public static function baseFilePath($templateCompileDir = NULL) {
+  public static function baseFilePath() {
     static $_path = NULL;
     if (!$_path) {
-      if ($templateCompileDir == NULL) {
-        $config = CRM_Core_Config::singleton();
-        $templateCompileDir = $config->templateCompileDir;
+      // Note: Don't rely on $config; that creates a dependency loop.
+      if (!defined('CIVICRM_TEMPLATE_COMPILEDIR')) {
+        throw new RuntimeException("Undefined constant: CIVICRM_TEMPLATE_COMPILEDIR");
       }
+      $templateCompileDir = CIVICRM_TEMPLATE_COMPILEDIR;
 
       $path = dirname($templateCompileDir);
 
diff --git a/CRM/Utils/Geocode.php b/CRM/Utils/Geocode.php
new file mode 100644 (file)
index 0000000..789a98d
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 4.7                                                |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2015                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ * Class CRM_Utils_Geocode
+ */
+class CRM_Utils_Geocode {
+
+  /**
+   * @return string|''
+   *   Class name, or empty.
+   */
+  public static function getProviderClass() {
+    $config = CRM_Core_Config::singleton();
+    if ($config->geoProvider) {
+      return 'CRM_Utils_Geocode_' . $config->geoProvider;
+    }
+    elseif ($config->mapProvider) {
+      return 'CRM_Utils_Geocode_' . $config->mapProvider;
+    }
+    else {
+      return '';
+    }
+  }
+
+}
index 8505ba808f7f5ac6abae0c658a937dbc1cc37493..c9bcbab49aa1c9e05fe504851edf773f57908b3b 100644 (file)
@@ -499,21 +499,6 @@ class CRM_Utils_System {
     return $config->userSystem->postURL($action);
   }
 
-  /**
-   * Rewrite various system URLs to https.
-   */
-  public static function mapConfigToSSL() {
-    $config = CRM_Core_Config::singleton();
-    $config->userFrameworkResourceURL = str_replace('http://', 'https://', $config->userFrameworkResourceURL);
-    $config->resourceBase = $config->userFrameworkResourceURL;
-
-    if (!empty($config->extensionsURL)) {
-      $config->extensionsURL = str_replace('http://', 'https://', $config->extensionsURL);
-    }
-
-    return $config->userSystem->mapConfigToSSL();
-  }
-
   /**
    * Get the base URL of the system.
    *