Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
C
Core
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Container registry
Model registry
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
justinfreeman (Agileware)
Core
Commits
b36758b8
Commit
b36758b8
authored
11 years ago
by
Kurund Jalmi
Browse files
Options
Downloads
Plain Diff
Merge pull request #1131 from GiantRobot/4.3-CRM-13017
CRM-13017
parents
7f41e1ad
38507482
Branches
Branches containing commit
Tags
Tags containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
CRM/Utils/System/Drupal.php
+25
-21
25 additions, 21 deletions
CRM/Utils/System/Drupal.php
CRM/Utils/System/Drupal6.php
+97
-51
97 additions, 51 deletions
CRM/Utils/System/Drupal6.php
with
122 additions
and
72 deletions
CRM/Utils/System/Drupal.php
+
25
−
21
View file @
b36758b8
...
...
@@ -63,7 +63,7 @@ class CRM_Utils_System_Drupal extends CRM_Utils_System_Base {
$admin
=
user_access
(
'administer users'
);
if
(
!
variable_get
(
'user_email_verification'
,
TRUE
)
||
$admin
)
{
$form_state
[
'input'
][
'pass'
]
=
array
(
'pass1'
=>
$params
[
'cms_pass'
],
'pass2'
=>
$params
[
'cms_pass'
]);
$form_state
[
'input'
][
'pass'
]
=
array
(
'pass1'
=>
$params
[
'cms_pass'
],
'pass2'
=>
$params
[
'cms_pass'
]);
}
if
(
!
empty
(
$params
[
'notify'
])){
...
...
@@ -98,9 +98,7 @@ class CRM_Utils_System_Drupal extends CRM_Utils_System_Base {
if
(
form_get_errors
())
{
return
FALSE
;
}
else
{
return
$form_state
[
'user'
]
->
uid
;
}
return
$form_state
[
'user'
]
->
uid
;
}
/*
...
...
@@ -550,7 +548,8 @@ class CRM_Utils_System_Drupal extends CRM_Utils_System_Base {
*
* @param string $name the user name
* @param string $password the password for the above user name
* @param $loadCMSBootstrap boolean load cms bootstrap?
* @param boolean $loadCMSBootstrap load cms bootstrap?
* @param NULL|string $realPath filename of script
*
* @return mixed false if no auth
* array(
...
...
@@ -567,8 +566,6 @@ class CRM_Utils_System_Drupal extends CRM_Utils_System_Base {
CRM_Core_Error
::
fatal
(
"Cannot connect to drupal db via
$config->userFrameworkDSN
, "
.
$dbDrupal
->
getMessage
());
}
$account
=
$userUid
=
$userMail
=
NULL
;
if
(
$loadCMSBootstrap
)
{
$bootStrapParams
=
array
();
...
...
@@ -738,11 +735,11 @@ AND u.status = 1
/**
* load drupal bootstrap
*
* @param $params array with uid or name and password
* @param $loadUser boolean load cms user?
* @param $throwError throw error on failure?
* @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
*/
function
loadBootStrap
(
$params
=
array
(),
$loadUser
=
TRUE
,
$throwError
=
TRUE
,
$realPath
=
NULL
)
{
//take the cms root path.
$cmsPath
=
$this
->
cmsRootPath
(
$realPath
);
...
...
@@ -766,7 +763,8 @@ AND u.status = 1
}
}
require_once
'includes/bootstrap.inc'
;
drupal_bootstrap
(
DRUPAL_BOOTSTRAP_FULL
);
// @ to suppress notices eg 'DRUPALFOO already defined'.
@
drupal_bootstrap
(
DRUPAL_BOOTSTRAP_FULL
);
// explicitly setting error reporting, since we cannot handle drupal related notices
error_reporting
(
1
);
...
...
@@ -839,8 +837,10 @@ AND u.status = 1
return
FALSE
;
}
/**
*
*/
function
cmsRootPath
(
$scriptFilename
=
NULL
)
{
$cmsRoot
=
$valid
=
NULL
;
if
(
!
is_null
(
$scriptFilename
))
{
...
...
@@ -926,11 +926,7 @@ AND u.status = 1
* @return string $url, formatted url.
* @static
*/
function
languageNegotiationURL
(
$url
,
$addLanguagePart
=
TRUE
,
$removeLanguagePart
=
FALSE
)
{
function
languageNegotiationURL
(
$url
,
$addLanguagePart
=
TRUE
,
$removeLanguagePart
=
FALSE
)
{
if
(
empty
(
$url
))
{
return
$url
;
}
...
...
@@ -1022,12 +1018,17 @@ AND u.status = 1
/**
* Wrapper for og_membership creation
*
* @param integer $ogID Organic Group ID
* @param integer $drupalID drupal User ID
*/
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
// 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'
// sort-of-randomly chose a function that only exists in the // 7.x-2.x branch
//
// @TODO Find more solid way to check - try system_get_info('module', 'og').
//
// Also, since we don't know how to get the entity type of the // group, we'll assume it's 'node'
og_group
(
'node'
,
$ogID
,
array
(
'entity'
=>
user_load
(
$drupalID
)));
}
else
{
...
...
@@ -1038,6 +1039,9 @@ AND u.status = 1
/**
* Wrapper for og_membership deletion
*
* @param integer $ogID Organic Group ID
* @param integer $drupalID drupal User ID
*/
function
og_membership_delete
(
$ogID
,
$drupalID
)
{
if
(
function_exists
(
'og_entity_query_alter'
))
{
...
...
This diff is collapsed.
Click to expand it.
CRM/Utils/System/Drupal6.php
+
97
−
51
View file @
b36758b8
...
...
@@ -119,9 +119,7 @@ class CRM_Utils_System_Drupal6 extends CRM_Utils_System_Base {
if
(
form_get_errors
()
||
!
isset
(
$form_state
[
'user'
]))
{
return
FALSE
;
}
return
$form_state
[
'user'
]
->
uid
;
}
/*
...
...
@@ -158,7 +156,6 @@ class CRM_Utils_System_Drupal6 extends CRM_Utils_System_Base {
$email
=
$dao
->
escape
(
CRM_Utils_Array
::
value
(
'mail'
,
$params
));
_user_edit_validate
(
NULL
,
$params
);
$errors
=
form_get_errors
();
if
(
$errors
)
{
if
(
CRM_Utils_Array
::
value
(
'name'
,
$errors
))
{
$errors
[
'cms_name'
]
=
$errors
[
'name'
];
...
...
@@ -170,7 +167,7 @@ class CRM_Utils_System_Drupal6 extends CRM_Utils_System_Base {
unset
(
$_SESSION
[
'messages'
]);
}
//
drupal api sucks d
o the name check manually
//
D
o the name check manually
.
$nameError
=
user_validate_name
(
$params
[
'name'
]);
if
(
$nameError
)
{
$errors
[
'cms_name'
]
=
$nameError
;
...
...
@@ -181,7 +178,6 @@ SELECT name, mail
FROM
{
$config
->
userFrameworkUsersTableName
}
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
());
...
...
@@ -426,7 +422,6 @@ SELECT name, mail
*
* @return string the url to post the form
* @access public
*/
function
postURL
(
$action
)
{
if
(
!
empty
(
$action
))
{
...
...
@@ -516,6 +511,8 @@ SELECT name, mail
*
* @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(
...
...
@@ -557,8 +554,8 @@ SELECT name, mail
}
CRM_Utils_System
::
loadBootStrap
(
$bootStrapParams
,
TRUE
,
TRUE
,
$realPath
);
}
return
array
(
$contactID
,
$row
[
'uid'
],
mt_rand
());
}
return
array
(
$contactID
,
$row
[
'uid'
],
mt_rand
());
}
}
return
FALSE
;
}
...
...
@@ -631,20 +628,26 @@ SELECT name, mail
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
;
switch
(
TRUE
)
{
case
$language
->
language
==
'zh-hans'
:
return
'zh_CN'
;
case
$language
->
language
==
'zh-hant'
:
return
'zh_TW'
;
if
(
empty
(
$language
))
{
return
NULL
;
}
case
preg_match
(
'/^.._..$/'
,
$language
->
language
)
:
return
$language
->
language
;
if
(
$language
->
language
==
'zh-hans'
)
{
return
'zh_CN'
;
}
default
:
return
CRM_Core_I18n_PseudoConstant
::
longForShort
(
substr
(
$language
->
language
,
0
,
2
))
;
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
));
}
function
getVersion
()
{
...
...
@@ -654,32 +657,50 @@ SELECT name, mail
/**
* load drupal bootstrap
*
* @param $name string optional username for login
* @param $pass string optional password for login
* @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
*/
function
loadBootStrap
(
$params
=
array
(
),
$loadUser
=
TRUE
,
$throwError
=
TRUE
,
$realPath
=
NULL
)
{
$uid
=
CRM_Utils_Array
::
value
(
'uid'
,
$params
);
$name
=
CRM_Utils_Array
::
value
(
'name'
,
$params
,
FALSE
)
?
$params
[
'name'
]
:
trim
(
CRM_Utils_Array
::
value
(
'name'
,
$_REQUEST
));
$pass
=
CRM_Utils_Array
::
value
(
'pass'
,
$params
,
FALSE
)
?
$params
[
'pass'
]
:
trim
(
CRM_Utils_Array
::
value
(
'pass'
,
$_REQUEST
));
function
loadBootStrap
(
$params
=
array
(),
$loadUser
=
TRUE
,
$throwError
=
TRUE
,
$realPath
=
NULL
)
{
//take the cms root path.
$cmsPath
=
$this
->
cmsRootPath
(
$realPath
);
if
(
!
file_exists
(
"
$cmsPath
/includes/bootstrap.inc"
))
{
echo
'<br />Sorry, unable to locate bootstrap.inc.'
;
exit
();
if
(
$throwError
)
{
echo
'<br />Sorry, could not locate bootstrap.inc\n'
;
exit
();
}
return
FALSE
;
}
// load drupal bootstrap
chdir
(
$cmsPath
);
define
(
'DRUPAL_ROOT'
,
$cmsPath
);
// For drupal multi-site CRM-11313
if
(
$realPath
&&
strpos
(
$realPath
,
'sites/all/modules/'
)
===
FALSE
)
{
preg_match
(
'@sites/([^/]*)/modules@s'
,
$realPath
,
$matches
);
if
(
!
empty
(
$matches
[
1
]))
{
$_SERVER
[
'HTTP_HOST'
]
=
$matches
[
1
];
}
}
require_once
'includes/bootstrap.inc'
;
// @ to suppress notices eg 'DRUPALFOO already defined'.
@
drupal_bootstrap
(
DRUPAL_BOOTSTRAP_FULL
);
if
(
!
function_exists
(
'module_exists'
)
||
!
module_exists
(
'civicrm'
)
)
{
echo
'<br />Sorry, could not able to load drupal bootstrap.'
;
exit
();
// explicitly setting error reporting, since we cannot handle drupal related notices
error_reporting
(
1
);
if
(
!
function_exists
(
'module_exists'
)
||
!
module_exists
(
'civicrm'
))
{
if
(
$throwError
)
{
echo
'<br />Sorry, could not load drupal bootstrap.'
;
exit
();
}
return
FALSE
;
}
// seems like we've bootstrapped drupal
$config
=
CRM_Core_Config
::
singleton
();
// lets also fix the clean url setting
// CRM-6948
$config
->
cleanURL
=
(
int
)
variable_get
(
'clean_url'
,
'0'
);
...
...
@@ -693,27 +714,55 @@ SELECT name, mail
if
(
!
$loadUser
)
{
return
TRUE
;
}
//load user, we need to check drupal permissions.
if
(
$name
)
{
$user
=
user_authenticate
(
array
(
'name'
=>
$name
,
'pass'
=>
$pass
));
if
(
empty
(
$user
->
uid
))
{
echo
'<br />Sorry, unrecognized username or password.'
;
exit
();
// If $uid is passed in, authentication has been done already.
$uid
=
CRM_Utils_Array
::
value
(
'uid'
,
$params
);
if
(
!
$uid
)
{
//load user, we need to check drupal permissions.
$name
=
CRM_Utils_Array
::
value
(
'name'
,
$params
,
FALSE
)
?
$params
[
'name'
]
:
trim
(
CRM_Utils_Array
::
value
(
'name'
,
$_REQUEST
));
$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
)
{
if
(
$throwError
)
{
echo
'<br />Sorry, unrecognized username or password.'
;
exit
();
}
return
FALSE
;
}
}
}
elseif
(
$uid
)
{
$account
=
user_load
(
array
(
'uid'
=>
$uid
));
if
(
empty
(
$account
->
uid
))
{
echo
'<br />Sorry, unrecognized user id.'
;
exit
();
}
else
{
if
(
$uid
)
{
$account
=
user_load
(
$uid
);
if
(
$account
&&
$account
->
uid
)
{
global
$user
;
$user
=
$account
;
return
TRUE
;
}
}
if
(
$throwError
)
{
echo
'<br />Sorry, can not load CMS user account.'
;
exit
();
}
// CRM-6948: When using loadBootStrap, it's implicit that CiviCRM has already loaded its settings
// 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'
);
// CRM-8655: Drupal wasn't available during bootstrap, so hook_civicrm_config never executes
CRM_Utils_Hook
::
config
(
$config
);
return
FALSE
;
}
/**
*
*/
function
cmsRootPath
(
$scriptFilename
=
NULL
)
{
$cmsRoot
=
$valid
=
NULL
;
...
...
@@ -723,6 +772,7 @@ SELECT name, mail
else
{
$path
=
$_SERVER
[
'SCRIPT_FILENAME'
];
}
if
(
function_exists
(
'drush_get_context'
))
{
// drush anyway takes care of multisite install etc
return
drush_get_context
(
'DRUSH_DRUPAL_ROOT'
);
...
...
@@ -799,10 +849,7 @@ SELECT name, mail
* @return string $url, formatted url.
* @static
*/
function
languageNegotiationURL
(
$url
,
$addLanguagePart
=
TRUE
,
$removeLanguagePart
=
FALSE
)
{
function
languageNegotiationURL
(
$url
,
$addLanguagePart
=
TRUE
,
$removeLanguagePart
=
FALSE
)
{
if
(
empty
(
$url
))
{
return
$url
;
}
...
...
@@ -949,4 +996,3 @@ SELECT name, mail
drupal_flush_all_caches
();
}
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment