<?php
/*
+--------------------------------------------------------------------+
- | CiviCRM version 4.5 |
+ | CiviCRM version 4.6 |
+--------------------------------------------------------------------+
| Copyright CiviCRM LLC (c) 2004-2014 |
+--------------------------------------------------------------------+
*/
class CRM_Utils_System_WordPress extends CRM_Utils_System_Base {
/**
- *
*/
- function __construct() {
+ public function __construct() {
/**
* deprecated property to check if this is a drupal install. The correct method is to have functions on the UF classes for all UF specific
* functions and leave the codebase oblivious to the type of CMS
* @var bool
*/
$this->is_drupal = FALSE;
+ $this->is_wordpress = TRUE;
}
/**
- * sets the title of the page
+ * Sets the title of the page
*
* @param string $title
* @param null $pageTitle
*
- * @paqram string $pageTitle
- *
* @return void
- * @access public
*/
- function setTitle($title, $pageTitle = NULL) {
+ public function setTitle($title, $pageTitle = NULL) {
if (!$pageTitle) {
$pageTitle = $title;
}
- if (civicrm_wp_in_civicrm()) {
+
+ // get civi-wordpress instance
+ $civi = civi_wp();
+
+ // do we have functionality provided by plugin version 4.6+ present?
+ if (method_exists($civi, 'civicrm_context_get')) {
+
+ global $civicrm_wp_title;
+ $civicrm_wp_title = $pageTitle;
+
+ // yes, set page title, depending on context
+ $context = civi_wp()->civicrm_context_get();
+ switch ($context) {
+ case 'admin':
+ case 'shortcode':
+ $template = CRM_Core_Smarty::singleton();
+ $template->assign('pageTitle', $pageTitle);
+ }
+
+ }
+ elseif (civicrm_wp_in_civicrm()) {
+
+ // legacy pre-4.6 behaviour
global $civicrm_wp_title;
$civicrm_wp_title = $pageTitle;
$template = CRM_Core_Smarty::singleton();
$template->assign('pageTitle', $pageTitle);
+
}
}
* @internal param string $url
*
* @return void
- * @access public
- * @static
*/
- function appendBreadCrumb($breadCrumbs) {
+ public function appendBreadCrumb($breadCrumbs) {
$breadCrumb = wp_get_breadcrumb();
if (is_array($breadCrumbs)) {
* Reset an additional breadcrumb tag to the existing breadcrumb
*
* @return void
- * @access public
- * @static
*/
- function resetBreadCrumb() {
+ public function resetBreadCrumb() {
$bc = array();
wp_set_breadcrumb($bc);
}
/**
* Append a string to the head of the html file
*
- * @param string $head the new string to be appended
+ * @param string $head
+ * The new string to be appended.
*
* @return void
- * @access public
- * @static
*/
- function addHTMLHead($head) {
+ public function addHTMLHead($head) {
static $registered = FALSE;
if (!$registered) {
// front-end view
));
}
- static function _showHTMLHead() {
+ public static function _showHTMLHead() {
$region = CRM_Core_Region::instance('wp_head', FALSE);
if ($region) {
echo $region->render('');
/**
* Add a script file
*
- * @param $url: string, absolute path to file
- * @param $region string, location within the document: 'html-header', 'page-header', 'page-footer'
+ * @param $url : string, absolute path to file
+ * @param string $region
+ * location within the document: 'html-header', 'page-header', 'page-footer'.
*
* Note: This function is not to be called directly
* @see CRM_Core_Region::render()
*
- * @return bool TRUE if we support this operation in this CMS, FALSE otherwise
- * @access public
+ * @return bool
+ * TRUE if we support this operation in this CMS, FALSE otherwise
*/
public function addScriptUrl($url, $region) {
return FALSE;
/**
* Add an inline script
*
- * @param $code: string, javascript code
- * @param $region string, location within the document: 'html-header', 'page-header', 'page-footer'
+ * @param $code : string, javascript code
+ * @param string $region
+ * location within the document: 'html-header', 'page-header', 'page-footer'.
*
* Note: This function is not to be called directly
* @see CRM_Core_Region::render()
*
- * @return bool TRUE if we support this operation in this CMS, FALSE otherwise
- * @access public
+ * @return bool
+ * TRUE if we support this operation in this CMS, FALSE otherwise
*/
public function addScript($code, $region) {
return FALSE;
/**
* Add a css file
*
- * @param $url: string, absolute path to file
- * @param $region string, location within the document: 'html-header', 'page-header', 'page-footer'
+ * @param $url : string, absolute path to file
+ * @param string $region
+ * location within the document: 'html-header', 'page-header', 'page-footer'.
*
* Note: This function is not to be called directly
* @see CRM_Core_Region::render()
*
- * @return bool TRUE if we support this operation in this CMS, FALSE otherwise
- * @access public
+ * @return bool
+ * TRUE if we support this operation in this CMS, FALSE otherwise
*/
public function addStyleUrl($url, $region) {
return FALSE;
/**
* Add an inline style
*
- * @param $code: string, css code
- * @param $region string, location within the document: 'html-header', 'page-header', 'page-footer'
+ * @param $code : string, css code
+ * @param string $region
+ * location within the document: 'html-header', 'page-header', 'page-footer'.
*
* Note: This function is not to be called directly
* @see CRM_Core_Region::render()
*
- * @return bool TRUE if we support this operation in this CMS, FALSE otherwise
- * @access public
+ * @return bool
+ * TRUE if we support this operation in this CMS, FALSE otherwise
*/
public function addStyle($code, $region) {
return FALSE;
}
/**
- * rewrite various system urls to https
- *
- * @param null
+ * Rewrite various system urls to https
*
* @return void
- * @access public
- * @static
*/
- function mapConfigToSSL() {
+ public function mapConfigToSSL() {
global $base_url;
$base_url = str_replace('http://', 'https://', $base_url);
}
/**
- * figure out the post url for the form
+ * Figure out the post url for the form
*
- * @param mix $action the default action if one is pre-specified
+ * @param mix $action
+ * The default action if one is pre-specified.
*
- * @return string the url to post the form
- * @access public
- * @static
+ * @return string
+ * the url to post the form
*/
- function postURL($action) {
+ public function postURL($action) {
if (!empty($action)) {
return $action;
}
/**
* Generate an internal CiviCRM URL (copied from DRUPAL/includes/common.inc#url)
*
- * @param $path string The path being linked to, such as "civicrm/add"
- * @param $query string A query string to append to the link.
- * @param $absolute boolean Whether to force the output to be an absolute link (beginning with http:).
+ * @param string $path
+ * The path being linked to, such as "civicrm/add".
+ * @param string $query
+ * A query string to append to the link.
+ * @param bool $absolute
+ * Whether to force the output to be an absolute link (beginning with http:).
* Useful for links that will be displayed outside the site, such as in an
* RSS feed.
- * @param $fragment string A fragment identifier (named anchor) to append to the link.
- * @param $htmlize boolean whether to convert to html eqivalant
- * @param $frontend boolean a gross joomla hack
+ * @param string $fragment
+ * A fragment identifier (named anchor) to append to the link.
+ * @param bool $htmlize
+ * whether to convert to html eqivalant.
+ * @param bool $frontend
+ * a gross joomla hack.
*
* @param bool $forceBackend
*
- * @return string an HTML string containing a link to the given path.
- * @access public
+ * @return string
+ * an HTML string containing a link to the given path.
*/
- function url(
+ public function url(
$path = NULL,
$query = NULL,
$absolute = FALSE,
$frontend = FALSE,
$forceBackend = FALSE
) {
- $config = CRM_Core_Config::singleton();
- $script = '';
+ $config = CRM_Core_Config::singleton();
+ $script = '';
$separator = $htmlize ? '&' : '&';
- $wpPageParam = '';
+ $wpPageParam = '';
$fragment = isset($fragment) ? ('#' . $fragment) : '';
$path = CRM_Utils_String::stripPathChars($path);
// when shortcode is included in page
// also make sure we have valid query object
global $wp_query;
- if ( method_exists( $wp_query, 'get' ) ) {
+ if (method_exists($wp_query, 'get')) {
if (get_query_var('page_id')) {
$wpPageParam = "page_id=" . get_query_var('page_id');
}
* @return mixed|null|string
*/
private function getBaseUrl($absolute, $frontend, $forceBackend) {
- $config = CRM_Core_Config::singleton();
+ $config = CRM_Core_Config::singleton();
if (!isset($config->useFrameworkRelativeBase)) {
$base = parse_url($config->userFrameworkBaseURL);
/**
* Authenticate the user against the wordpress db
*
- * @param string $name the user name
- * @param string $password the password for the above user name
+ * @param string $name
+ * The user name.
+ * @param string $password
+ * The password for the above user name.
*
* @param bool $loadCMSBootstrap
* @param null $realPath
*
- * @return mixed false if no auth
- * array(
- * contactID, ufID, unique string ) if success
- * @access public
- * @static
+ * @return array|bool
+ * [contactID, ufID, uniqueString] if success else false if no auth
*/
- function authenticate($name, $password, $loadCMSBootstrap = FALSE, $realPath = NULL) {
+ public function authenticate($name, $password, $loadCMSBootstrap = FALSE, $realPath = NULL) {
$config = CRM_Core_Config::singleton();
if ($loadCMSBootstrap) {
/**
* Set a message in the UF to display to a user
*
- * @param string $message the message to set
+ * @param string $message
+ * The message to set.
*
- * @access public
- * @static
*/
- function setMessage($message) {
+ public function setMessage($message) {
}
/**
*
* @return bool
*/
- function loadUser( $user ) {
- return true;
+ public function loadUser($user) {
+ return TRUE;
}
- function permissionDenied() {
- CRM_Core_Error::fatal(ts('You do not have permission to access this page'));
+ public function permissionDenied() {
+ CRM_Core_Error::fatal(ts('You do not have permission to access this page.'));
}
- function logout() {
+ public function logout() {
// destroy session
if (session_id()) {
session_destroy();
wp_redirect(wp_login_url());
}
- function updateCategories() {}
+ public function updateCategories() {
+ }
/**
* Get the locale set in the hosting CMS
*
- * @return string with the locale or null for none
+ * @return string
+ * with the locale or null for none
*/
- function getUFLocale() {
+ public function getUFLocale() {
// WPML plugin
if (defined('ICL_LANGUAGE_CODE')) {
$language = ICL_LANGUAGE_CODE;
if (isset($language)) {
return CRM_Core_I18n_PseudoConstant::longForShort(substr($language, 0, 2));
- } else {
+ }
+ else {
return NULL;
}
}
/**
- * load wordpress bootstrap
+ * Load wordpress bootstrap
*
- * @param $name string optional username for login
- * @param $pass string optional password for login
+ * @param string $name
+ * optional username for login.
+ * @param string $pass
+ * optional password for login.
*
* @return bool
*/
- function loadBootStrap($name = NULL, $pass = NULL) {
+ public function loadBootStrap($name = NULL, $pass = NULL) {
global $wp, $wp_rewrite, $wp_the_query, $wp_query, $wpdb;
$cmsRootPath = $this->cmsRootPath();
CRM_Core_Error::fatal("Could not find the install directory for WordPress");
}
- require_once ($cmsRootPath . DIRECTORY_SEPARATOR . 'wp-load.php');
+ 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;
+ require_once $cmsRootPath . DIRECTORY_SEPARATOR . 'wp-includes/pluggable.php';
+ $uid = CRM_Utils_Array::value('uid', $name);
+ if ($uid) {
+ $account = wp_set_current_user($uid);
+ if ($account && $account->data->ID) {
+ global $user;
+ $user = $account;
+ return TRUE;
+ }
+ }
+ return TRUE;
}
/**
*
* @return bool
*/
- function validInstallDir($dir) {
+ public function validInstallDir($dir) {
$includePath = "$dir/wp-includes";
- if (
- @opendir($includePath) &&
- file_exists("$includePath/version.php")
- ) {
+ if (file_exists("$includePath/version.php")) {
return TRUE;
}
return FALSE;
/**
* Determine the location of the CMS root.
*
- * @return string|NULL local file system path to CMS root, or NULL if it cannot be determined
- */
- /**
- * @return NULL|string
+ * @return string|NULL
+ * local file system path to CMS root, or NULL if it cannot be determined
*/
- function cmsRootPath() {
+ public function cmsRootPath() {
$cmsRoot = $valid = NULL;
if (defined('CIVICRM_CMSDIR')) {
if ($this->validInstallDir(CIVICRM_CMSDIR)) {
}
/**
- * @param $params
+ * @param array $params
* @param $mail
*
* @return mixed
*/
- function createUser(&$params, $mail) {
+ public function createUser(&$params, $mail) {
$user_data = array(
'ID' => '',
'user_pass' => $params['cms_pass'],
/**
* Change user name in host CMS
*
- * @param integer $ufID User ID in CMS
- * @param string $ufName User name
+ * @param int $ufID
+ * User ID in CMS.
+ * @param string $ufName
+ * User name.
*/
- function updateCMSName($ufID, $ufName) {
+ public function updateCMSName($ufID, $ufName) {
// CRM-10620
if (function_exists('wp_update_user')) {
- $ufID = CRM_Utils_Type::escape($ufID, 'Integer');
+ $ufID = CRM_Utils_Type::escape($ufID, 'Integer');
$ufName = CRM_Utils_Type::escape($ufName, 'String');
- $values = array ('ID' => $ufID, 'user_email' => $ufName);
- if( $ufID ) {
- wp_update_user( $values ) ;
+ $values = array('ID' => $ufID, 'user_email' => $ufName);
+ if ($ufID) {
+ wp_update_user($values);
}
}
}
/**
- * @param $params
+ * @param array $params
* @param $errors
* @param string $emailName
*/
- function checkUserNameEmailExists(&$params, &$errors, $emailName = 'email') {
+ public function checkUserNameEmailExists(&$params, &$errors, $emailName = 'email') {
$config = CRM_Core_Config::singleton();
- $dao = new CRM_Core_DAO();
- $name = $dao->escape(CRM_Utils_Array::value('name', $params));
+ $dao = new CRM_Core_DAO();
+ $name = $dao->escape(CRM_Utils_Array::value('name', $params));
$email = $dao->escape(CRM_Utils_Array::value('mail', $params));
if (!empty($params['name'])) {
}
/**
- * check is user logged in.
+ * Check is user logged in.
*
- * @return boolean true/false.
+ * @return bool
*/
public function isUserLoggedIn() {
$isloggedIn = FALSE;
/**
* @return mixed
*/
- function getLoggedInUserObject() {
+ public function getLoggedInUserObject() {
if (function_exists('is_user_logged_in') &&
- is_user_logged_in()) {
+ is_user_logged_in()
+ ) {
global $current_user;
}
return $current_user;
}
+
/**
* Get currently logged in user uf id.
*
- * @return int $userID logged in user uf id.
+ * @return int
+ * $userID logged in user uf id.
*/
public function getLoggedInUfID() {
$ufID = NULL;
/**
* Get currently logged in user unique identifier - this tends to be the email address or user name.
*
- * @return string $userID logged in user unique identifier
+ * @return string
+ * logged in user unique identifier
*/
- function getLoggedInUniqueIdentifier() {
+ public function getLoggedInUniqueIdentifier() {
$user = $this->getLoggedInUserObject();
return $this->getUniqueIdentifierFromUserObject($user);
}
/**
* Get User ID from UserFramework system (Joomla)
- * @param object $user object as described by the CMS
- * @return mixed <NULL, number>
+ * @param object $user
+ * Object as described by the CMS.
+ *
+ * @return int|null
*/
- function getUserIDFromUserObject($user) {
+ public function getUserIDFromUserObject($user) {
return !empty($user->ID) ? $user->ID : NULL;
}
/**
* Get Unique Identifier from UserFramework system (CMS)
- * @param object $user object as described by the User Framework
- * @return mixed $uniqueIdentifer Unique identifier from the user Framework system
- *
+ * @param object $user
+ * Object as described by the User Framework.
+ * @return int|null
+ * Unique identifier from the user Framework system
*/
- function getUniqueIdentifierFromUserObject($user) {
+ public function getUniqueIdentifierFromUserObject($user) {
return empty($user->user_email) ? NULL : $user->user_email;
}
/**
* Get user login URL for hosting CMS (method declared in each CMS system class)
*
- * @param string $destination - if present, add destination to querystring (works for Drupal only)
- *
- * @return string - loginURL for the current CMS
+ * @param string $destination
+ * If present, add destination to querystring (works for Drupal only).
*
+ * @return string
+ * loginURL for the current CMS
*/
public function getLoginURL($destination = '') {
$config = CRM_Core_Config::singleton();
}
/**
- * @param $form
+ * @param CRM_Core_Form $form
*/
public function getLoginDestination(&$form) {
- return;
+ return NULL;
}
/**
* Return the current WordPress version if relevant function exists
*
- * @return string - version number
- *
+ * @return string
+ * version number
*/
- function getVersion() {
+ public function getVersion() {
if (function_exists('get_bloginfo')) {
return get_bloginfo('version', 'display');
}
}
/**
- * get timezone as a string
- * @return string Timezone e.g. 'America/Los_Angeles'
+ * Get timezone as a string
+ * @return string
+ * Timezone e.g. 'America/Los_Angeles'
*/
- function getTimeZoneString() {
+ public function getTimeZoneString() {
return get_option('timezone_string');
}
/**
* Get Url to view user record
- * @param integer $contactID Contact ID
+ * @param int $contactID
+ * Contact ID.
*
* @return string
*/
- function getUserRecordUrl($contactID) {
+ public function getUserRecordUrl($contactID) {
$uid = CRM_Core_BAO_UFMatch::getUFId($contactID);
- if (CRM_Core_Session::singleton()->get('userID') == $contactID || CRM_Core_Permission::checkAnyPerm(array('cms:administer users'))) {
+ if (CRM_Core_Session::singleton()
+ ->get('userID') == $contactID || CRM_Core_Permission::checkAnyPerm(array('cms:administer users'))
+ ) {
return CRM_Core_Config::singleton()->userFrameworkBaseURL . "wp-admin/user-edit.php?user_id=" . $uid;
}
}
}
-