Merge pull request #2137 from pradpnayak/CRM-13310
[civicrm-core.git] / CRM / Utils / System / WordPress.php
index 6f08bfe92ecabd994e1f3500c461b78c6ff4933d..389c2c06927d8f84687b5367bc196fddf1ec3e9f 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /*
  +--------------------------------------------------------------------+
- | CiviCRM version 4.3                                                |
+ | CiviCRM version 4.4                                                |
  +--------------------------------------------------------------------+
  | Copyright CiviCRM LLC (c) 2004-2013                                |
  +--------------------------------------------------------------------+
@@ -308,22 +308,25 @@ class CRM_Utils_System_WordPress extends CRM_Utils_System_Base {
     elseif (defined('CIVICRM_UF_WP_BASEPAGE')) {
       $base .= CIVICRM_UF_WP_BASEPAGE;
     }
+    elseif (isset($config->wpBasePage)) {
+      $base .= $config->wpBasePage;
+    }
 
     if (isset($path)) {
       if (isset($query)) {
         if ($permlinkStructure != '' && ($pageID || $script != '')) {
-          return $script . '?page=CiviCRM&q=' . $path . $pageID . $separator . $query . $fragment;
+          return $script . '?page=CiviCRM'. $separator . 'q=' . $path . $pageID . $separator . $query . $fragment;
         }
         else {
-          return $base . '?page=CiviCRM&q=' . $path . $pageID . $separator . $query . $fragment;
+          return $base . '?page=CiviCRM' . $separator . 'q=' . $path . $pageID . $separator . $query . $fragment;
         }
       }
       else {
         if ($permlinkStructure != '' && ($pageID || $script != '')) {
-          return $script . '?page=CiviCRM&q=' . $path . $pageID . $fragment;
+          return $script . '?page=CiviCRM' . $separator . 'q=' . $path . $pageID . $fragment;
         }
         else {
-          return $base .'?page=CiviCRM&q=' . $path . $pageID . $fragment;
+          return $base . '?page=CiviCRM' . $separator . 'q=' . $path . $pageID . $fragment;
         }
       }
     }
@@ -358,7 +361,7 @@ class CRM_Utils_System_WordPress extends CRM_Utils_System_Base {
     $config = CRM_Core_Config::singleton();
 
     if ($loadCMSBootstrap) {
-      self::loadBootstrap($name, $password);
+      $config->userSystem->loadBootStrap($name, $password);
     }
 
     $user = wp_authenticate($name, $password);
@@ -430,6 +433,11 @@ class CRM_Utils_System_WordPress extends CRM_Utils_System_Base {
     }
 
     require_once ($cmsRootPath . DIRECTORY_SEPARATOR . 'wp-load.php');
+    $wpUserTimezone = get_option('timezone_string');
+    if ($wpUserTimezone) {
+      date_default_timezone_set($wpUserTimezone);
+      CRM_Core_Config::singleton()->userSystem->setMySQLTimeZone();
+    }
     return true;
   }
 
@@ -619,5 +627,13 @@ class CRM_Utils_System_WordPress extends CRM_Utils_System_Base {
       return 'Unknown';
     }
   }
+
+  /**
+   * get timezone as a string
+   * @return string Timezone e.g. 'America/Los_Angeles'
+   */
+  function getTimeZoneString() {
+    return get_option('timezone_string');
+  }
 }