<?php
/*
+--------------------------------------------------------------------+
- | CiviCRM version 4.3 |
+ | CiviCRM version 4.4 |
+--------------------------------------------------------------------+
| Copyright CiviCRM LLC (c) 2004-2013 |
+--------------------------------------------------------------------+
/**
* Drupal specific stuff goes here
*/
-class CRM_Utils_System_Drupal6 extends CRM_Utils_System_Base {
- function __construct() {
- $this->is_drupal = TRUE;
- $this->supports_form_extensions = TRUE;
- }
+class CRM_Utils_System_Drupal6 extends CRM_Utils_System_DrupalBase {
/**
* if we are using a theming system, invoke theme, else just print the
}
$sql = "
-SELECT name, mail
- FROM {$config->userFrameworkUsersTableName}
- WHERE (LOWER(name) = LOWER('$name')) OR (LOWER(mail) = LOWER('$email'))";
+ SELECT name, mail
+ FROM {users}
+ WHERE (LOWER(name) = LOWER('$name')) OR (LOWER(mail) = LOWER('$email'))
+ ";
- $db_cms = DB::connect($config->userFrameworkDSN);
- if (DB::isError($db_cms)) {
- die("Cannot connect to UF db via $dsn, " . $db_cms->getMessage());
+ $result = db_query($sql);
+ $row = db_fetch_array($result);
+ if (!$row) {
+ return;
}
- $query = $db_cms->query($sql);
- $row = $query->fetchRow();
+
+ $user = NULL;
+
if (!empty($row)) {
- $dbName = CRM_Utils_Array::value(0, $row);
- $dbEmail = CRM_Utils_Array::value(1, $row);
+ $dbName = CRM_Utils_Array::value('name', $row);
+ $dbEmail = CRM_Utils_Array::value('mail', $row);
if (strtolower($dbName) == strtolower($name)) {
$errors['cms_name'] = ts('The username %1 is already taken. Please select another username.',
array(1 => $name)
);
}
if (strtolower($dbEmail) == strtolower($email)) {
- $resetUrl = $config->userFrameworkBaseURL . 'user/password';
- $errors[$emailName] = ts('The email address %1 is already registered. <a href="%2">Have you forgotten your password?</a>',
- array(1 => $email, 2 => $resetUrl)
- );
+ if(empty($email)) {
+ $errors[$emailName] = ts('You cannot create an email account for a contact with no email',
+ array(1 => $email)
+ );
+ }
+ else{
+ $errors[$emailName] = ts('This email %1 is already registered. Please select another email.',
+ array(1 => $email)
+ );
+ }
}
}
}
return FALSE;
}
// If the path is within the drupal directory we can add in the normal way
- if (CRM_Utils_System_Drupal::formatResourceUrl($url)) {
+ if ($this->formatResourceUrl($url)) {
drupal_add_js($url, 'module', $scope);
return TRUE;
}
* @access public
*/
public function addStyleUrl($url, $region) {
- if ($region != 'html-header' || !CRM_Utils_System_Drupal::formatResourceUrl($url)) {
+ if ($region != 'html-header' || !$this->formatResourceUrl($url)) {
return FALSE;
}
drupal_add_css($url);
return $this->url($_GET['q']);
}
- /**
- * 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:).
- * 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
- *
- * @return string an HTML string containing a link to the given path.
- * @access public
- *
- */
- function url($path = NULL, $query = NULL, $absolute = FALSE,
- $fragment = NULL, $htmlize = TRUE,
- $frontend = FALSE
- ) {
- $config = CRM_Core_Config::singleton();
- $script = 'index.php';
-
- $path = CRM_Utils_String::stripPathChars($path);
-
- if (isset($fragment)) {
- $fragment = '#' . $fragment;
- }
-
- if (!isset($config->useFrameworkRelativeBase)) {
- $base = parse_url($config->userFrameworkBaseURL);
- $config->useFrameworkRelativeBase = $base['path'];
- }
- $base = $absolute ? $config->userFrameworkBaseURL : $config->useFrameworkRelativeBase;
-
- $separator = $htmlize ? '&' : '&';
-
- if (!$config->cleanURL) {
- if (isset($path)) {
- if (isset($query)) {
- return $base . $script . '?q=' . $path . $separator . $query . $fragment;
- }
- else {
- return $base . $script . '?q=' . $path . $fragment;
- }
- }
- else {
- if (isset($query)) {
- return $base . $script . '?' . $query . $fragment;
- }
- else {
- return $base . $fragment;
- }
- }
- }
- else {
- if (isset($path)) {
- if (isset($query)) {
- return $base . $path . '?' . $query . $fragment;
- }
- else {
- return $base . $path . $fragment;
- }
- }
- else {
- if (isset($query)) {
- return $base . $script . '?' . $query . $fragment;
- }
- else {
- return $base . $fragment;
- }
- }
- }
- }
-
/**
* Authenticate the user against the drupal db
*
* @access public
*/
function authenticate($name, $password, $loadCMSBootstrap = FALSE, $realPath = NULL) {
+ //@todo this 'PEAR-y' stuff is only required when bookstrap is not being loaded which is rare
+ // if ever now.
+ // probably if bootstrap is loaded this call
+ // CRM_Utils_System::loadBootStrap($bootStrapParams, TRUE, TRUE, $realPath); would be
+ // sufficient to do what this fn does. It does exist as opposed to return which might need some hanky-panky to make
+ // safe in the unknown situation where authenticate might be called & it is important that
+ // false is returned
require_once 'DB.php';
$config = CRM_Core_Config::singleton();
user_authenticate_finalize($params);
}
+ /**
+ * Determine the native ID of the CMS user
+ *
+ * @param $username
+ * @return int|NULL
+ */
+ function getUfId($username) {
+ $user = user_load(array('name' => $username));
+ if (empty($user->uid)) {
+ return NULL;
+ }
+ return $user->uid;
+ }
+
/**
* Set a message in the UF to display to a user
*
if (!$loadUser) {
return TRUE;
}
-
+ global $user;
// If $uid is passed in, authentication has been done already.
$uid = CRM_Utils_Array::value('uid', $params);
if (!$uid) {
$pass = CRM_Utils_Array::value('pass', $params, FALSE) ? $params['pass'] : trim(CRM_Utils_Array::value('pass', $_REQUEST));
if ($name) {
- $uid = user_authenticate(array('name' => $name, 'pass' => $pass));
- if (!$uid) {
+ $user = user_authenticate(array('name' => $name, 'pass' => $pass));
+ if (!$user->uid) {
if ($throwError) {
echo '<br />Sorry, unrecognized username or password.';
exit();
}
return FALSE;
}
+ else {
+ return TRUE;
+ }
}
}
if ($uid) {
$account = user_load($uid);
if ($account && $account->uid) {
- global $user;
$user = $account;
return TRUE;
}
og_delete_subscription( $ogID, $drupalID );
}
+ /**
+ * Get timezone from Drupal
+ * @return boolean|string
+ */
+ function getTimeZoneOffset(){
+ global $user;
+ if (variable_get('configurable_timezones', 1) && $user->uid && strlen($user->timezone)) {
+ $timezone = $user->timezone;
+ } else {
+ $timezone = variable_get('date_default_timezone', null);
+ }
+ if(empty($timezone)){
+ return false;
+ }
+ $hour = $user->timezone / 3600;
+ $timeZoneOffset = sprintf("%02d:%02d", $timezone / 3600, abs(($timeZoneOffset/60)%60));
+ if($timeZoneOffset > 0){
+ $timeZoneOffset = '+' . $timeZoneOffset;
+ }
+ return $timeZoneOffset;
+ }
+
+
/**
* Reset any system caches that may be required for proper CiviCRM
* integration.