Merge pull request #4863 from totten/master-phpcbf4
[civicrm-core.git] / CRM / Core / BAO / ConfigSetting.php
index 3d728a0d875c6809dd8f05c00322f4a805bcf6b5..48be9c9b49d5fabff31738734880f996cbe1c51f 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /*
  +--------------------------------------------------------------------+
- | CiviCRM version 4.5                                                |
+ | CiviCRM version 4.6                                                |
  +--------------------------------------------------------------------+
  | Copyright CiviCRM LLC (c) 2004-2014                                |
  +--------------------------------------------------------------------+
 class CRM_Core_BAO_ConfigSetting {
 
   /**
-   * Function to create civicrm settings. This is the same as add but it clears the cache and
+   * Create civicrm settings. This is the same as add but it clears the cache and
    * reloads the config object
    *
-   * @params array $params associated array of civicrm variables
-   *
-   * @param $params
+   * @param array $params
+   *   Associated array of civicrm variables.
    *
    * @return null
    * @static
    */
-  static function create($params) {
+  public static function create($params) {
     self::add($params);
     $cache = CRM_Utils_Cache::singleton();
     $cache->delete('CRM_Core_Config');
@@ -60,16 +59,15 @@ class CRM_Core_BAO_ConfigSetting {
   }
 
   /**
-   * Function to add civicrm settings
-   *
-   * @params array $params associated array of civicrm variables
+   * Add civicrm settings
    *
-   * @param $params
+   * @param array $params
+   *   Associated array of civicrm variables.
    *
    * @return null
    * @static
    */
-  static function add(&$params) {
+  public static function add(&$params) {
     self::fixParams($params);
 
     // also set a template url so js files can use this
@@ -79,8 +77,8 @@ class CRM_Core_BAO_ConfigSetting {
       str_replace(
         'CIVI_BASE_TEMPLATE',
         '',
-      $params['civiRelativeURL']
-    );
+        $params['civiRelativeURL']
+      );
 
     // also add the version number for use by template / js etc
     $params['civiVersion'] = CRM_Utils_System::version();
@@ -143,16 +141,15 @@ class CRM_Core_BAO_ConfigSetting {
   }
 
   /**
-   * Function to fix civicrm setting variables
-   *
-   * @params array $params associated array of civicrm variables
+   * Fix civicrm setting variables
    *
-   * @param $params
+   * @param array $params
+   *   Associated array of civicrm variables.
    *
    * @return null
    * @static
    */
-  static function fixParams(&$params) {
+  public static function fixParams(&$params) {
     // in our old civicrm.settings.php we were using ISO code for country and
     // province limit, now we have changed it to use ids
 
@@ -177,15 +174,17 @@ class CRM_Core_BAO_ConfigSetting {
   }
 
   /**
-   * Function to format the array containing before inserting in db
+   * Format the array containing before inserting in db
    *
-   * @param  array $params associated array of civicrm variables(submitted)
-   * @param  array $values associated array of civicrm variables stored in db
+   * @param array $params
+   *   Associated array of civicrm variables(submitted).
+   * @param array $values
+   *   Associated array of civicrm variables stored in db.
    *
    * @return null
    * @static
    */
-  static function formatParams(&$params, &$values) {
+  public static function formatParams(&$params, &$values) {
     if (empty($params) ||
       !is_array($params)
     ) {
@@ -202,14 +201,14 @@ class CRM_Core_BAO_ConfigSetting {
   }
 
   /**
-   * Function to retrieve the settings values from db
+   * Retrieve the settings values from db
    *
    * @param $defaults
    *
    * @return array $defaults
    * @static
    */
-  static function retrieve(&$defaults) {
+  public static function retrieve(&$defaults) {
     $domain = new CRM_Core_DAO_Domain();
 
     //we are initializing config, really can't use, CRM-7863
@@ -317,19 +316,16 @@ class CRM_Core_BAO_ConfigSetting {
         $dbLocale = $multiLang ? "_{$defaults['lcMessages']}" : '';
         $lcMessages = CRM_Utils_System::getUFLocale();
         if ($domain->locales and !in_array($lcMessages, explode(CRM_Core_DAO::VALUE_SEPARATOR,
-              $domain->locales
-            ))) {
+            $domain->locales
+          ))
+        ) {
           $lcMessages = NULL;
         }
       }
 
-      if ($lcMessages) {
-        // update config lcMessages - CRM-5027 fixed.
-        $defaults['lcMessages'] = $lcMessages;
-      }
-      else {
-        // if a single-lang site or the above didn't yield a result, use default
-        $lcMessages = CRM_Utils_Array::value( 'lcMessages', $defaults );
+      if (empty($lcMessages)) {
+        //CRM-11993 - if a single-lang site, use default
+        $lcMessages = CRM_Utils_Array::value('lcMessages', $defaults);
       }
 
       // set suffix for table names - use views if more than one language
@@ -369,7 +365,7 @@ class CRM_Core_BAO_ConfigSetting {
   /**
    * @return array
    */
-  static function getConfigSettings() {
+  public static function getConfigSettings() {
     $config = CRM_Core_Config::singleton();
 
     $url = $dir = $siteName = $siteRoot = NULL;
@@ -383,11 +379,23 @@ class CRM_Core_BAO_ConfigSetting {
       // lets use imageUploadDir since we dont mess around with its values
       // in the config object, lets kep it a bit generic since folks
       // might have different values etc
-      $dir = preg_replace(
-        '|civicrm/templates_c/.*$|',
-        '',
-        $config->templateCompileDir
-      );
+
+      //CRM-15365 - Fix preg_replace to handle backslash for Windows File Paths
+      if (DIRECTORY_SEPARATOR == '\\') {
+        $dir = preg_replace(
+          '|civicrm[/\\\\]templates_c[/\\\\].*$|',
+          '',
+          $config->templateCompileDir
+        );
+      }
+      else {
+        $dir = preg_replace(
+          '|civicrm/templates_c/.*$|',
+          '',
+          $config->templateCompileDir
+        );
+      }
+
       $siteRoot = preg_replace(
         '|/media/civicrm/.*$|',
         '',
@@ -404,11 +412,23 @@ class CRM_Core_BAO_ConfigSetting {
       // lets use imageUploadDir since we dont mess around with its values
       // in the config object, lets kep it a bit generic since folks
       // might have different values etc
-      $dir = preg_replace(
-        '|civicrm/templates_c/.*$|',
-        '',
-        $config->templateCompileDir
-      );
+
+      //CRM-15365 - Fix preg_replace to handle backslash for Windows File Paths
+      if (DIRECTORY_SEPARATOR == '\\') {
+        $dir = preg_replace(
+          '|civicrm[/\\\\]templates_c[/\\\\].*$|',
+          '',
+          $config->templateCompileDir
+        );
+      }
+      else {
+        $dir = preg_replace(
+          '|civicrm/templates_c/.*$|',
+          '',
+          $config->templateCompileDir
+        );
+      }
+
       $siteRoot = preg_replace(
         '|/wp-content/plugins/files/civicrm/.*$|',
         '',
@@ -425,18 +445,29 @@ class CRM_Core_BAO_ConfigSetting {
       // lets use imageUploadDir since we dont mess around with its values
       // in the config object, lets kep it a bit generic since folks
       // might have different values etc
-      $dir = preg_replace(
-        '|/files/civicrm/.*$|',
-        '/files/',
-        $config->imageUploadDir
-      );
+
+      //CRM-15365 - Fix preg_replace to handle backslash for Windows File Paths
+      if (DIRECTORY_SEPARATOR == '\\') {
+        $dir = preg_replace(
+          '|[/\\\\]files[/\\\\]civicrm[/\\\\].*$|',
+          '\\\\files\\\\',
+          $config->imageUploadDir
+        );
+      }
+      else {
+        $dir = preg_replace(
+          '|/files/civicrm/.*$|',
+          '/files/',
+          $config->imageUploadDir
+        );
+      }
 
       $matches = array();
       if (preg_match(
-          '|/sites/([\w\.\-\_]+)/|',
-          $config->imageUploadDir,
-          $matches
-        )) {
+        '|/sites/([\w\.\-\_]+)/|',
+        $config->imageUploadDir,
+        $matches
+      )) {
         $siteName = $matches[1];
         if ($siteName) {
           $siteName = "/sites/$siteName/";
@@ -448,22 +479,30 @@ class CRM_Core_BAO_ConfigSetting {
       }
     }
 
-
     return array($url, $dir, $siteName, $siteRoot);
   }
 
-/**
- * Return likely default settings
- * @return array site settings
- *  -$url,
- * - $dir Base Directory
- * - $siteName
- * - $siteRoot
- */
-  static function getBestGuessSettings() {
+  /**
  * Return likely default settings
  * @return array site settings
  *  -$url,
  * - $dir Base Directory
  * - $siteName
  * - $siteRoot
  */
+  public static function getBestGuessSettings() {
     $config = CRM_Core_Config::singleton();
+
+    //CRM-15365 - Fix preg_replace to handle backslash for Windows File Paths
+    if (DIRECTORY_SEPARATOR == '\\') {
+      $needle = 'civicrm[/\\\\]templates_c[/\\\\].*$';
+    }
+    else {
+      $needle = 'civicrm/templates_c/.*$';
+    }
+
     $dir = preg_replace(
-      '|civicrm/templates_c/.*$|',
+      "|$needle|",
       '',
       $config->templateCompileDir
     );
@@ -478,7 +517,7 @@ class CRM_Core_BAO_ConfigSetting {
    * @return string
    * @throws Exception
    */
-  static function doSiteMove($defaultValues = array() ) {
+  public static function doSiteMove($defaultValues = array()) {
     $moveStatus = ts('Beginning site move process...') . '<br />';
     // get the current and guessed values
     list($oldURL, $oldDir, $oldSiteName, $oldSiteRoot) = self::getConfigSettings();
@@ -568,7 +607,8 @@ WHERE  option_group_id = (
   FROM   civicrm_option_group
   WHERE  name = %3 )
 ';
-          $params = array(1 => array($from, 'String'),
+          $params = array(
+            1 => array($from, 'String'),
             2 => array($to, 'String'),
             3 => array($option, 'String'),
           );
@@ -577,7 +617,9 @@ WHERE  option_group_id = (
       }
     }
 
-    $moveStatus .= ts('Directory and Resource URLs have been updated in the moved database to reflect current site location.') . '<br />';
+    $moveStatus .=
+      ts('Directory and Resource URLs have been updated in the moved database to reflect current site location.') .
+      '<br />';
 
     $config = CRM_Core_Config::singleton();
 
@@ -612,15 +654,16 @@ WHERE  option_group_id = (
   }
 
   /**
-   * takes a componentName and enables it in the config
+   * Takes a componentName and enables it in the config
    * Primarily used during unit testing
    *
-   * @param string $componentName name of the component to be enabled, needs to be valid
+   * @param string $componentName
+   *   Name of the component to be enabled, needs to be valid.
    *
    * @return boolean - true if valid component name and enabling succeeds, else false
    * @static
    */
-  static function enableComponent($componentName) {
+  public static function enableComponent($componentName) {
     $config = CRM_Core_Config::singleton();
     if (in_array($componentName, $config->enableComponents)) {
       // component is already enabled
@@ -642,9 +685,11 @@ WHERE  option_group_id = (
     return TRUE;
   }
 
-  static function disableComponent($componentName) {
+  public static function disableComponent($componentName) {
     $config = CRM_Core_Config::singleton();
-    if (!in_array($componentName, $config->enableComponents) || !array_key_exists($componentName, CRM_Core_Component::getComponents())) {
+    if (!in_array($componentName, $config->enableComponents) ||
+      !array_key_exists($componentName, CRM_Core_Component::getComponents())
+    ) {
       // post-condition satisified
       return TRUE;
     }
@@ -683,20 +728,30 @@ WHERE  option_group_id = (
   /**
    * @return array
    */
-  static function skipVars() {
+  public static function skipVars() {
     return array(
-      'dsn', 'templateCompileDir',
+      'dsn',
+      'templateCompileDir',
       'userFrameworkDSN',
       'userFramework',
-      'userFrameworkBaseURL', 'userFrameworkClass', 'userHookClass',
-      'userPermissionClass', 'userFrameworkURLVar', 'userFrameworkVersion',
-      'newBaseURL', 'newBaseDir', 'newSiteName', 'configAndLogDir',
-      'qfKey', 'gettextResourceDir', 'cleanURL',
-      'locale_custom_strings', 'localeCustomStrings',
+      'userFrameworkBaseURL',
+      'userFrameworkClass',
+      'userHookClass',
+      'userPermissionClass',
+      'userFrameworkURLVar',
+      'userFrameworkVersion',
+      'newBaseURL',
+      'newBaseDir',
+      'newSiteName',
+      'configAndLogDir',
+      'qfKey',
+      'gettextResourceDir',
+      'cleanURL',
+      'locale_custom_strings',
+      'localeCustomStrings',
       'autocompleteContactSearch',
       'autocompleteContactReference',
       'checksumTimeout',
     );
   }
 }
-