X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FUtils%2FSystem%2FDrupal.php;h=5b7c1842be4af45c82b5297a47b0eb33b86f1bc5;hb=66e421424421075eb4e96676cd5414a3c2bb4a8e;hp=26e29320f55d45f5208aeb21623521441d494b73;hpb=db551313046d894dd1e7669f664ca7caac35f6fe;p=civicrm-core.git diff --git a/CRM/Utils/System/Drupal.php b/CRM/Utils/System/Drupal.php index 26e29320f5..5b7c1842be 100644 --- a/CRM/Utils/System/Drupal.php +++ b/CRM/Utils/System/Drupal.php @@ -1,7 +1,7 @@ $params['cms_pass'],'pass2'=>$params['cms_pass']); + $form_state['input']['pass'] = array('pass1' => $params['cms_pass'], 'pass2' => $params['cms_pass']); } - if(!empty($params['notify'])){ + if (!empty($params['notify'])) { $form_state['input']['notify'] = $params['notify']; } @@ -73,10 +65,10 @@ class CRM_Utils_System_Drupal extends CRM_Utils_System_DrupalBase { $form_state['method'] = 'post'; $form_state['build_info']['args'] = array(); /* - * if we want to submit this form more than once in a process (e.g. create more than one user) - * we must force it to validate each time for this form. Otherwise it will not validate - * subsequent submissions and the manner in which the password is passed in will be invalid - */ + * if we want to submit this form more than once in a process (e.g. create more than one user) + * we must force it to validate each time for this form. Otherwise it will not validate + * subsequent submissions and the manner in which the password is passed in will be invalid + */ $form_state['must_validate'] = TRUE; $config = CRM_Core_Config::singleton(); @@ -98,17 +90,10 @@ class CRM_Utils_System_Drupal extends CRM_Utils_System_DrupalBase { return $form_state['user']->uid; } - /* - * Change user name in host CMS - * - * @param integer $ufID User ID in CMS - * @param string $ufName User name - */ /** - * @param int $ufID - * @param string $ufName + * @inheritDoc */ - function updateCMSName($ufID, $ufName) { + public function updateCMSName($ufID, $ufName) { // CRM-5555 if (function_exists('user_load')) { $user = user_load($ufID); @@ -122,18 +107,21 @@ class CRM_Utils_System_Drupal extends CRM_Utils_System_DrupalBase { /** * Check if username and email exists in the drupal db * - * @param array $params array of name and mail values - * @param array $errors array of errors - * @param string $emailName field label for the 'email' + * @param array $params + * Array of name and mail values. + * @param array $errors + * Array of errors. + * @param string $emailName + * Field label for the 'email'. * * @return void */ - static function checkUserNameEmailExists(&$params, &$errors, $emailName = 'email') { + public static 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)); - $email = $dao->escape(CRM_Utils_Array::value('mail', $params)); + $dao = new CRM_Core_DAO(); + $name = $dao->escape(CRM_Utils_Array::value('name', $params)); + $email = $dao->escape(CRM_Utils_Array::value('mail', $params)); $errors = form_get_errors(); if ($errors) { // unset drupal messages to avoid twice display of errors @@ -174,75 +162,18 @@ class CRM_Utils_System_Drupal extends CRM_Utils_System_DrupalBase { } } - /* - * Get the drupal destination string. When this is passed in the - * URL the user will be directed to it after filling in the drupal form - * - * @param CRM_Core_Form $form Form object representing the 'current' form - to which the user will be returned - * @return string $destination destination value for URL - * - */ /** - * @param CRM_Core_Form $form - * - * @return null|string - */ - function getLoginDestination(&$form) { - $args = NULL; - - $id = $form->get('id'); - if ($id) { - $args .= "&id=$id"; - } - else { - $gid = $form->get('gid'); - if ($gid) { - $args .= "&gid=$gid"; - } - else { - // Setup Personal Campaign Page link uses pageId - $pageId = $form->get('pageId'); - if ($pageId) { - $component = $form->get('component'); - $args .= "&pageId=$pageId&component=$component&action=add"; - } - } - } - - $destination = NULL; - if ($args) { - // append destination so user is returned to form they came from after login - $destination = CRM_Utils_System::currentPath() . '?reset=1' . $args; - } - return $destination; - } - - /** - * 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 - * @static + * @inheritDoc */ public function getLoginURL($destination = '') { $query = $destination ? array('destination' => $destination) : array(); return url('user', array('query' => $query)); } - /** - * Sets the title of the page - * - * @param string $title - * @param null $pageTitle - * - * @paqram string $pageTitle - * - * @return void - * @access public + * @inheritDoc */ - function setTitle($title, $pageTitle = NULL) { + public function setTitle($title, $pageTitle = NULL) { if (arg(0) == 'civicrm') { if (!$pageTitle) { $pageTitle = $title; @@ -253,16 +184,9 @@ class CRM_Utils_System_Drupal extends CRM_Utils_System_DrupalBase { } /** - * Append an additional breadcrumb tag to the existing breadcrumb - * - * @param array $breadCrumbs - * @internal param string $title - * @internal param string $url - * - * @return void - * @access public + * @inheritDoc */ - function appendBreadCrumb($breadCrumbs) { + public function appendBreadCrumb($breadCrumbs) { $breadCrumb = drupal_get_breadcrumb(); if (is_array($breadCrumbs)) { @@ -285,25 +209,17 @@ class CRM_Utils_System_Drupal extends CRM_Utils_System_DrupalBase { } /** - * Reset an additional breadcrumb tag to the existing breadcrumb - * - * @return void - * @access public + * @inheritDoc */ - function resetBreadCrumb() { + public function resetBreadCrumb() { $bc = array(); drupal_set_breadcrumb($bc); } /** - * Append a string to the head of the html file - * - * @param string $header the new string to be appended - * - * @return void - * @access public + * @inheritDoc */ - function addHTMLHead($header) { + public function addHTMLHead($header) { static $count = 0; if (!empty($header)) { $key = 'civi_' . ++$count; @@ -316,16 +232,7 @@ class CRM_Utils_System_Drupal extends CRM_Utils_System_DrupalBase { } /** - * Add a script file - * - * @param $url: string, absolute path to file - * @param $region string, 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 + * @inheritDoc */ public function addScriptUrl($url, $region) { $params = array('group' => JS_LIBRARY, 'weight' => 10); @@ -334,6 +241,7 @@ class CRM_Utils_System_Drupal extends CRM_Utils_System_DrupalBase { case 'page-footer': $params['scope'] = substr($region, 5); break; + default: return FALSE; } @@ -344,16 +252,7 @@ class CRM_Utils_System_Drupal extends CRM_Utils_System_DrupalBase { } /** - * Add an inline script - * - * @param $code: string, javascript code - * @param $region string, 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 + * @inheritDoc */ public function addScript($code, $region) { $params = array('type' => 'inline', 'group' => JS_LIBRARY, 'weight' => 10); @@ -362,6 +261,7 @@ class CRM_Utils_System_Drupal extends CRM_Utils_System_DrupalBase { case 'page-footer': $params['scope'] = substr($region, 5); break; + default: return FALSE; } @@ -370,16 +270,7 @@ class CRM_Utils_System_Drupal extends CRM_Utils_System_DrupalBase { } /** - * Add a css file - * - * @param $url: string, absolute path to file - * @param $region string, 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 + * @inheritDoc */ public function addStyleUrl($url, $region) { if ($region != 'html-header') { @@ -393,16 +284,7 @@ class CRM_Utils_System_Drupal extends CRM_Utils_System_DrupalBase { } /** - * Add an inline style - * - * @param $code: string, css code - * @param $region string, 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 + * @inheritDoc */ public function addStyle($code, $region) { if ($region != 'html-header') { @@ -414,49 +296,17 @@ class CRM_Utils_System_Drupal extends CRM_Utils_System_DrupalBase { } /** - * Rewrite various system urls to https - * - * @param null - * - * @return void - * @access public + * @inheritDoc */ - function mapConfigToSSL() { + public function mapConfigToSSL() { global $base_url; $base_url = str_replace('http://', 'https://', $base_url); } /** - * Figure out the post url for the form - * - * @param mix $action the default action if one is pre-specified - * - * @return string the url to post the form - * @access public + * @inheritDoc */ - function postURL($action) { - if (!empty($action)) { - return $action; - } - - return $this->url($_GET['q']); - } - - - /** - * Authenticate the user against the drupal db - * - * @param string $name the user name - * @param string $password the password for the above user name - * @param boolean $loadCMSBootstrap load cms bootstrap? - * @param NULL|string $realPath filename of script - * - * @return mixed false if no auth - * array( - * contactID, ufID, unique string ) if success - * @access public - */ - static function authenticate($name, $password, $loadCMSBootstrap = FALSE, $realPath = NULL) { + public function authenticate($name, $password, $loadCMSBootstrap = FALSE, $realPath = NULL) { require_once 'DB.php'; $config = CRM_Core_Config::singleton(); @@ -489,12 +339,12 @@ class CRM_Utils_System_Drupal extends CRM_Utils_System_DrupalBase { // Contact CiviSMTP folks if we run into issues with this :) $cmsPath = $config->userSystem->cmsRootPath($realPath); - require_once ("$cmsPath/includes/bootstrap.inc"); - require_once ("$cmsPath/includes/password.inc"); + require_once "$cmsPath/includes/bootstrap.inc"; + require_once "$cmsPath/includes/password.inc"; $strtolower = function_exists('mb_strtolower') ? 'mb_strtolower' : 'strtolower'; - $name = $dbDrupal->escapeSimple($strtolower($name)); - $sql = " + $name = $dbDrupal->escapeSimple($strtolower($name)); + $sql = " SELECT u.* FROM {$config->userFrameworkUsersTableName} u WHERE LOWER(u.name) = '$name' @@ -527,15 +377,10 @@ AND u.status = 1 return FALSE; } - /* - * Load user into session - */ /** - * @param string $username - * - * @return bool + * @inheritDoc */ - function loadUser($username) { + public function loadUser($username) { global $user; $user = user_load_by_name($username); @@ -559,11 +404,11 @@ AND u.status = 1 * e.g. for drupal: records a watchdog message about the new session, saves the login timestamp, * calls hook_user op 'login' and generates a new session. * - * @param array params + * @param array $params * * FIXME: Document values accepted/required by $params */ - function userLoginFinalize($params = array()){ + public function userLoginFinalize($params = array()) { user_login_finalize($params); } @@ -573,7 +418,7 @@ AND u.status = 1 * @param string $username * @return int|NULL */ - function getUfId($username) { + public function getUfId($username) { $user = user_load_by_name($username); if (empty($user->uid)) { return NULL; @@ -582,88 +427,36 @@ AND u.status = 1 } /** - * Set a message in the UF to display to a user - * - * @param string $message the message to set - * - * @access public - */ - function setMessage($message) { - drupal_set_message($message); - } - - /** - * @return mixed + * @inheritDoc */ - function logout() { + public function logout() { module_load_include('inc', 'user', 'user.pages'); return user_logout(); } - function updateCategories() { - // copied this from profile.module. Seems a bit inefficient, but i dont know a better way - // CRM-3600 - cache_clear_all(); - menu_rebuild(); - } - /** * Get the default location for CiviCRM blocks * * @return string */ - function getDefaultBlockLocation() { + public function getDefaultBlockLocation() { return 'sidebar_first'; } - /** - * Get the locale set in the hosting CMS - * - * @return string with the locale or null for none - */ - function getUFLocale() { - // return CiviCRM’s xx_YY locale that either matches Drupal’s Chinese locale - // (for CRM-6281), Drupal’s xx_YY or is retrieved based on Drupal’s xx - // sometimes for CLI based on order called, this might not be set and/or empty - global $language; - - if (empty($language)) { - return NULL; - } - - if ($language->language == 'zh-hans') { - return 'zh_CN'; - } - - if ($language->language == 'zh-hant') { - return 'zh_TW'; - } - - if (preg_match('/^.._..$/', $language->language)) { - return $language->language; - } - - return CRM_Core_I18n_PseudoConstant::longForShort(substr($language->language, 0, 2)); - } - - /** - * @return string - */ - function getVersion() { - return defined('VERSION') ? VERSION : 'Unknown'; - } - /** * Load drupal bootstrap * - * @param array $params Either uid, or name & pass. - * @param boolean $loadUser boolean Require CMS user load. - * @param boolean $throwError If true, print error on failure and exit. - * @param boolean|string $realPath path to script + * @param array $params + * Either uid, or name & pass. + * @param bool $loadUser + * Boolean Require CMS user load. + * @param bool $throwError + * If true, print error on failure and exit. + * @param bool|string $realPath path to script * * @return bool */ - function loadBootStrap($params = array(), $loadUser = TRUE, $throwError = TRUE, $realPath = NULL) { + public function loadBootStrap($params = array(), $loadUser = TRUE, $throwError = TRUE, $realPath = NULL) { //take the cms root path. $cmsPath = $this->cmsRootPath($realPath); @@ -752,7 +545,7 @@ AND u.status = 1 // which means that define(CIVICRM_CLEANURL) was correctly set. // So we correct it $config = CRM_Core_Config::singleton(); - $config->cleanURL = (int)variable_get('clean_url', '0'); + $config->cleanURL = (int) variable_get('clean_url', '0'); // CRM-8655: Drupal wasn't available during bootstrap, so hook_civicrm_config never executes CRM_Utils_Hook::config($config); @@ -761,9 +554,8 @@ AND u.status = 1 } /** - * */ - function cmsRootPath($scriptFilename = NULL) { + public function cmsRootPath($scriptFilename = NULL) { $cmsRoot = $valid = NULL; if (!is_null($scriptFilename)) { @@ -791,15 +583,13 @@ AND u.status = 1 //lets remove sript name to reduce one iteration. array_pop($pathVars); - //CRM-7429 --do check for upper most 'includes' dir, - //which would effectually work for multisite installation. + // CRM-7429 -- do check for uppermost 'includes' dir, which would + // work for multisite installation. do { $cmsRoot = $firstVar . '/' . implode('/', $pathVars); $cmsIncludePath = "$cmsRoot/includes"; - //stop as we found bootstrap. - if (@opendir($cmsIncludePath) && - file_exists("$cmsIncludePath/bootstrap.inc") - ) { + // Stop if we find bootstrap. + if (file_exists("$cmsIncludePath/bootstrap.inc")) { $valid = TRUE; break; } @@ -811,9 +601,7 @@ AND u.status = 1 } /** - * Check is user logged in. - * - * @return boolean true/false. + * @inheritDoc */ public function isUserLoggedIn() { $isloggedIn = FALSE; @@ -825,9 +613,7 @@ AND u.status = 1 } /** - * Get currently logged in user uf id. - * - * @return int $userID logged in user uf id. + * @inheritDoc */ public function getLoggedInUfID() { $ufID = NULL; @@ -842,17 +628,9 @@ AND u.status = 1 } /** - * Format the url as per language Negotiation. - * - * @param string $url - * - * @param bool $addLanguagePart - * @param bool $removeLanguagePart - * - * @return string $url, formatted url. - * @static + * @inheritDoc */ - function languageNegotiationURL($url, $addLanguagePart = TRUE, $removeLanguagePart = FALSE) { + public function languageNegotiationURL($url, $addLanguagePart = TRUE, $removeLanguagePart = FALSE) { if (empty($url)) { return $url; } @@ -899,11 +677,11 @@ AND u.status = 1 //kinda hackish but not sure how to do it right //hope http_build_url() will help at some point. if (is_array($parseUrl) && !empty($parseUrl)) { - $urlParts = explode('/', $url); - $hostKey = array_search($parseUrl['host'], $urlParts); - $ufUrlParts = parse_url(CIVICRM_UF_BASEURL); + $urlParts = explode('/', $url); + $hostKey = array_search($parseUrl['host'], $urlParts); + $ufUrlParts = parse_url(CIVICRM_UF_BASEURL); $urlParts[$hostKey] = $ufUrlParts['host']; - $url = implode('/', $urlParts); + $url = implode('/', $urlParts); } } } @@ -918,12 +696,13 @@ AND u.status = 1 * Find any users/roles/security-principals with the given permission * and replace it with one or more permissions. * - * @param $oldPerm string - * @param $newPerms array, strings + * @param string $oldPerm + * @param array $newPerms + * Array, strings. * * @return void */ - function replacePermission($oldPerm, $newPerms) { + public function replacePermission($oldPerm, $newPerms) { $roles = user_roles(FALSE, $oldPerm); if (!empty($roles)) { foreach (array_keys($roles) as $rid) { @@ -933,27 +712,15 @@ AND u.status = 1 } } - /** - * Get a list of all installed modules, including enabled and disabled ones - * - * @return array CRM_Core_Module - */ - function getModules() { - $result = array(); - $q = db_query('SELECT name, status FROM {system} WHERE type = \'module\' AND schema_version <> -1'); - foreach ($q as $row) { - $result[] = new CRM_Core_Module('drupal.' . $row->name, ($row->status == 1) ? TRUE : FALSE); - } - return $result; - } - /** * Wrapper for og_membership creation * - * @param integer $ogID Organic Group ID - * @param integer $drupalID drupal User ID + * @param int $ogID + * Organic Group ID. + * @param int $drupalID + * Drupal User ID. */ - function og_membership_create($ogID, $drupalID){ + public function og_membership_create($ogID, $drupalID) { if (function_exists('og_entity_query_alter')) { // sort-of-randomly chose a function that only exists in the // 7.x-2.x branch // @@ -971,42 +738,39 @@ AND u.status = 1 /** * Wrapper for og_membership deletion * - * @param integer $ogID Organic Group ID - * @param integer $drupalID drupal User ID + * @param int $ogID + * Organic Group ID. + * @param int $drupalID + * Drupal User ID. */ - function og_membership_delete($ogID, $drupalID) { + public function og_membership_delete($ogID, $drupalID) { if (function_exists('og_entity_query_alter')) { // sort-of-randomly chose a function that only exists in the 7.x-2.x branch // TODO: Find a more solid way to make this test // Also, since we don't know how to get the entity type of the group, we'll assume it's 'node' og_ungroup('node', $ogID, 'user', user_load($drupalID)); - } else { + } + else { // Works for the OG 7.x-1.x branch og_ungroup($ogID, 'user', user_load($drupalID)); } } /** - * Over-ridable function to get timezone as a string eg. - * @return string Timezone e.g. 'America/Los_Angeles' + * @inheritDoc */ - function getTimeZoneString() { + public function getTimeZoneString() { global $user; if (variable_get('configurable_timezones', 1) && $user->uid && strlen($user->timezone)) { $timezone = $user->timezone; - } else { - $timezone = variable_get('date_default_timezone', null); + } + else { + $timezone = variable_get('date_default_timezone', NULL); } if (!$timezone) { $timezone = parent::getTimeZoneString(); } return $timezone; } - /** - * Reset any system caches that may be required for proper CiviCRM - * integration. - */ - function flush() { - drupal_flush_all_caches(); - } + }