<?php
/**
* @file
* 当登录Drupal7站点时,检查是否在drupal6站点存在这个帐户,
* 如果存在,将其保存到新的站点.
*/
/**
* 实现钩子hook_form_FORMID_alter().
*/
function d6user_form_alter(&$form, &$form_state, $form_id){
//这里我们对于表单user_login,user_login_block同时添加了一个验证器
if($form_id == 'user_login' || $form_id == 'user_login_block'){
$form['#validate'] = d6user_login_default_validators();
}
}
/**
* 我们自己的登录验证函数集合,.
*/
function d6user_login_default_validators(){
//注意这里面保留了Drupal自带的验证器,只是在中间加上了一个自定义的验证器。这些验证器的执行存在先后顺序的
return array('user_login_name_validate', 'd6user_user_form_validate', 'user_login_authenticate_validate', 'user_login_final_validate');
}
/**
* 我们自己定义的登录验证函数,它在user_login_authenticate_validate前面执行.
*/
function d6user_user_form_validate($form, &$form_state){
//form_set_error('name',t('用户名,密码不匹配.')); 这里保留了调试信息
$name = $form_state['values']['name'];
$pass = $form_state['values']['pass'];
if (!empty($name) && !empty($pass)) {
//drupal_set_message('123'); 这里保留了调试信息,用户调试代码,方便大家测试
$account = db_query("SELECT * FROM {users} WHERE name = :name ", array(':name' => $name))->fetchObject();
//如果用户名存在,则返回.
if ($account) {
return;
}else{
// $sql = "SELECT * FROM {users} WHERE name = :name AND pass = :pass";
//drupal_set_message('123456');
//我们向Drupal6站点的用户表进行查询,检查该用户是否存在。
db_set_active('d6user');
$account = db_query("SELECT * FROM users WHERE name = :name AND pass = :pass", array(':name' => $name, ':pass' => md5($pass)))->fetchObject();
db_set_active('default');
if($account){
// drupal_set_message('1234567');
//此时,用户帐号在Drupal6中存在,并且用户名密码正确
$userinfo = array(
'name' => $name,
'pass' => $pass,
'mail' => $account->mail,
'init' => $name,
'status' => 1,
'access' => REQUEST_TIME
);
//我们将查询到的信息保存到Drupal7的用户表中
$account = user_save(drupal_anonymous_user(), $userinfo);
}
}
}
}