Give WP more flexibility in layout of WP code vs CiviCRM location
authorDonald A. Lobo <lobo@civicrm.org>
Sun, 14 Apr 2013 23:27:35 +0000 (16:27 -0700)
committerDonald A. Lobo <lobo@civicrm.org>
Mon, 15 Apr 2013 15:39:22 +0000 (08:39 -0700)
CRM/Utils/System/WordPress.php

index 65d00d942828c701e546d00397d2d6a0c04b6f4b..6f08bfe92ecabd994e1f3500c461b78c6ff4933d 100644 (file)
@@ -433,26 +433,42 @@ class CRM_Utils_System_WordPress extends CRM_Utils_System_Base {
     return true;
   }
 
+  function validInstallDir($dir) {
+    $includePath = "$dir/wp-includes";
+    if (
+      @opendir($includePath) &&
+      file_exists("$includePath/version.php")
+    ) {
+      return TRUE;
+    }
+    return FALSE;
+  }
+
   function cmsRootPath() {
     $cmsRoot = $valid = NULL;
-    $pathVars = explode('/', str_replace('\\', '/', $_SERVER['SCRIPT_FILENAME']));
-
-    //might be windows installation.
-    $firstVar = array_shift($pathVars);
-    if ($firstVar) {
-      $cmsRoot = $firstVar;
+    if (defined('CIVICRM_CMSDIR')) {
+      if ($this->validInstallDir(CIVICRM_CMSDIR)) {
+        $cmsRoot = CIVICRM_CMSDIR;
+        $valid = TRUE;
+      }
     }
+    else {
+      $pathVars = explode('/', str_replace('\\', '/', $_SERVER['SCRIPT_FILENAME']));
 
-    //start w/ csm dir search.
-    foreach ($pathVars as $var) {
-      $cmsRoot .= "/$var";
-      $cmsIncludePath = "$cmsRoot/wp-includes";
-      //stop as we found bootstrap.
-      if (@opendir($cmsIncludePath) &&
-        file_exists("$cmsIncludePath/version.php")
-      ) {
-        $valid = TRUE;
-        break;
+      //might be windows installation.
+      $firstVar = array_shift($pathVars);
+      if ($firstVar) {
+        $cmsRoot = $firstVar;
+      }
+
+      //start w/ csm dir search.
+      foreach ($pathVars as $var) {
+        $cmsRoot .= "/$var";
+        if ($this->validInstallDir($cmsRoot)) {
+          //stop as we found bootstrap.
+          $valid = TRUE;
+          break;
+        }
       }
     }