CRM-12674 wordpress fix broke update settings for drupal
authoreileen <eileen@fuzion.co.nz>
Wed, 29 May 2013 09:02:25 +0000 (21:02 +1200)
committereileen <eileen@fuzion.co.nz>
Wed, 29 May 2013 19:48:34 +0000 (07:48 +1200)
CRM/Core/BAO/ConfigSetting.php
CRM/Utils/System/Base.php
CRM/Utils/System/Drupal.php
CRM/Utils/System/Drupal6.php
CRM/Utils/System/DrupalBase.php [new file with mode: 0644]
CRM/Utils/System/Joomla.php

index 7882796e2c10524bb60fb6443f2f74ae972c2fd3..c53d24c4a9cfdc3dd40a257a441d93273485d5ce 100644 (file)
@@ -438,48 +438,22 @@ 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() {
     $config = CRM_Core_Config::singleton();
-
-    $url = $config->userFrameworkBaseURL;
-    $siteName = $siteRoot = NULL;
-    if ($config->userFramework == 'Joomla') {
-      $url = preg_replace(
-        '|/administrator|',
-        '',
-        $config->userFrameworkBaseURL
-      );
-      $siteRoot = preg_replace(
-        '|/media/civicrm/.*$|',
-        '',
-        $config->imageUploadDir
-      );
-    }
-
     $dir = preg_replace(
       '|civicrm/templates_c/.*$|',
       '',
       $config->templateCompileDir
     );
-
-    if ($config->userFramework->is_drupal) {
-      $matches = array();
-      if (preg_match(
-          '|/sites/([\w\.\-\_]+)/|',
-          $config->templateCompileDir,
-          $matches
-        )) {
-        $siteName = $matches[1];
-        if ($siteName) {
-          $siteName = "/sites/$siteName/";
-          $siteNamePos = strpos($dir, $siteName);
-          if ($siteNamePos !== FALSE) {
-            $siteRoot = substr($dir, 0, $siteNamePos);
-          }
-        }
-      }
-    }
-
+    list($url, $siteName, $siteRoot) = $config->userSystem->getDefaultSiteSettings($dir);
     return array($url, $dir, $siteName, $siteRoot);
   }
 
index cc084af6675aa6349ef7f7bc3cbd8dc4ec2d515c..4d951a12e180464c789978974bdfd105ab7840ce 100644 (file)
@@ -127,5 +127,17 @@ abstract class CRM_Utils_System_Base {
   function flush() {
     // nullop by default
   }
+    /**
+   * Return default Site Settings
+   * @return array array
+   * - $url, (Joomla - non admin url)
+   * - $siteName,
+   * - $siteRoot
+   */
+  function getDefaultSiteSettings($dir){
+    $config = CRM_Core_Config::singleton();
+    $url = $config->userFrameworkBaseURL;
+    return array($url, NULL, NULL);
+  }
 }
 
index c1652527aa2f562b0191cb36a5cf0a00e1070695..849024ae5480f362d9d8737e729de277bc98083a 100644 (file)
 /**
  * Drupal specific stuff goes here
  */
-class CRM_Utils_System_Drupal extends CRM_Utils_System_Base {
-  function __construct() {
-    $this->is_drupal = TRUE;
-    $this->supports_form_extensions = TRUE;
-  }
+class CRM_Utils_System_Drupal extends CRM_Utils_System_DrupalBase {
 
   /**
    * Function to create a user in Drupal.
index e7a3dfe5e71d1ca2e8c058a9b85e9c4e46dd4b39..1f38223a5cb79ce4a067c6e0a631b499bc28c121 100644 (file)
 /**
  * Drupal specific stuff goes here
  */
-class CRM_Utils_System_Drupal6 extends CRM_Utils_System_Base {
-  function __construct() {
-    $this->is_drupal = TRUE;
-    $this->supports_form_extensions = TRUE;
-  }
+class CRM_Utils_System_Drupal6 extends CRM_Utils_System_DrupalBase {
 
   /**
    * if we are using a theming system, invoke theme, else just print the
diff --git a/CRM/Utils/System/DrupalBase.php b/CRM/Utils/System/DrupalBase.php
new file mode 100644 (file)
index 0000000..5550afc
--- /dev/null
@@ -0,0 +1,74 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 4.3                                                |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2013                                |
+ +--------------------------------------------------------------------+
+ | 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        |
+ +--------------------------------------------------------------------+
+*/
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2013
+ * $Id$
+ *
+ */
+
+/**
+ * Drupal specific stuff goes here
+ */
+abstract class CRM_Utils_System_DrupalBase extends CRM_Utils_System_Base {
+  function __construct() {
+    $this->is_drupal = TRUE;
+    $this->supports_form_extensions = TRUE;
+  }
+
+  /**
+   * @param string dir base civicrm directory
+   * Return default Site Settings
+   * @return array array
+   * - $url, (Joomla - non admin url)
+   * - $siteName,
+   * - $siteRoot
+   */
+  function getDefaultSiteSettings($dir){
+    $config = CRM_Core_Config::singleton();
+    $siteName = $siteRoot = NULL;
+    $matches = array();
+    if (preg_match(
+      '|/sites/([\w\.\-\_]+)/|',
+      $config->templateCompileDir,
+      $matches
+    )) {
+      $siteName = $matches[1];
+      if ($siteName) {
+        $siteName = "/sites/$siteName/";
+        $siteNamePos = strpos($dir, $siteName);
+        if ($siteNamePos !== FALSE) {
+          $siteRoot = substr($dir, 0, $siteNamePos);
+        }
+      }
+    }
+    $url = $config->userFrameworkBaseURL;
+    return array($url, $siteName, $siteRoot);
+  }
+}
\ No newline at end of file
index 163adf29413d5027d1993aecdf8a13404d2a8d91..43952ba4ee1db6bff38d58b0ffa55006ce995f61 100644 (file)
@@ -688,5 +688,27 @@ class CRM_Utils_System_Joomla extends CRM_Utils_System_Base {
   public function getLoginDestination(&$form) {
     return;
   }
+
+  /**
+   * Return default Site Settings
+   * @return array array
+   * - $url, (Joomla - non admin url)
+   * - $siteName,
+   * - $siteRoot
+   */
+  function getDefaultSiteSettings($dir){
+    $config = CRM_Core_Config::singleton();
+    $url = preg_replace(
+      '|/administrator|',
+      '',
+      $config->userFrameworkBaseURL
+    );
+    $siteRoot = preg_replace(
+      '|/media/civicrm/.*$|',
+      '',
+      $config->imageUploadDir
+    );
+    return array($url, NULL, $siteRoot);
+  }
 }