CRM-15629 Fix for IPN issue on 4.6 branch. Call wp-load via CRM_Utils_System::loadB...
authorKevin Cristiano <kcristiano@tadpole.cc>
Sat, 2 May 2015 12:59:48 +0000 (08:59 -0400)
committerkurund <kurund@civicrm.org>
Thu, 14 May 2015 06:35:41 +0000 (12:05 +0530)
----------------------------------------
* CRM-15629: Paypal IPN not working on Wordpress the first time
  https://issues.civicrm.org/jira/browse/CRM-15629

Conflicts:
CRM/Core/Permission/WordPress.php

CRM/Core/Permission/WordPress.php
CRM/Utils/System/WordPress.php

index 3f881137a3a82223cad0e6896c3edd5d29304d69..0e392ae8f739bcd166e83b182887fda13fccb3e2 100644 (file)
@@ -58,6 +58,7 @@ class CRM_Core_Permission_WordPress extends CRM_Core_Permission_Base {
       return TRUE;
     }
 
+    // CRM-15629
     // During some extern/* calls we don't bootstrap CMS hence
     // below constants are not set. In such cases, we don't need to
     // check permission, hence directly return TRUE
@@ -65,6 +66,11 @@ class CRM_Core_Permission_WordPress extends CRM_Core_Permission_Base {
       return TRUE;
     }
 
+    if (!defined( ABSPATH ) || !defined( WPINC ) ) {
+      require_once 'CRM/Utils/System.php';
+      CRM_Utils_System::loadBootStrap();
+    }
+
     require_once ABSPATH . WPINC . '/pluggable.php';
 
     // for administrators give them all permissions
index 75df85b09fdb9db54493b9ca8b04c134743611e5..ba161e69d2eab88d9633a706051bb4babf74a77c 100644 (file)
@@ -342,8 +342,14 @@ class CRM_Utils_System_WordPress extends CRM_Utils_System_Base {
     if (!$cmsRootPath) {
       CRM_Core_Error::fatal("Could not find the install directory for WordPress");
     }
-
-    require_once $cmsRootPath . DIRECTORY_SEPARATOR . 'wp-load.php';
+    $path = CRM_Core_BAO_Setting::getItem( 'CiviCRM Preferences', 'wpLoadPhp' );
+    if ( ! empty( $path ) ) {
+      require_once $path;
+    } elseif ( file_exists( $cmsRootPath . DIRECTORY_SEPARATOR . 'wp-load.php' ) ) {
+      require_once $cmsRootPath . DIRECTORY_SEPARATOR . 'wp-load.php';
+    } else {
+      CRM_Core_Error::fatal( "Could not find the bootstrap file for WordPress" );
+    }
     $wpUserTimezone = get_option('timezone_string');
     if ($wpUserTimezone) {
       date_default_timezone_set($wpUserTimezone);