浅谈ucenter二次开发

内容纲要

最近公司的几个网站需要将三个系统的用户信息共享.即在一个系统中注册账号,在其它两个系统中均可以使用.如果都是全新的系统,没有历史用户信息倒是很好弄,直接联通就可以了.但有历史用户信息相对就比较麻烦了.需要将历史用户信息导入到联通后的ucenter中.我们的系统是如下三个:discuz   jishiguo(php)   CMS(Python) ,最终的解决方案是以discuz为ucenter服务端,其他两个系统做为客户端连接到discuz.当然这其中涉及到记事狗二次开发和dz二次开发.
下面是我在uc_client中添加函数的方法:
1.netbigbbs_ucenter_member表中添加一个字段isvalidate enum(‘1′,’0’) NOT NULL DEFAULT ‘1’ COMMENT ‘账号是否已审核通过(默认1,0=>未审核,1=>已审核)’

2.注册时增加一个isvalidate字段的赋值,修改代码如下:
1)需要修改文件:\source\class\class_member.php
需要修改的代码:(552行)uc_user_register前面
//用户是否已审核通过

if($invite && $this->setting[‘inviteconfig’][‘invitegroupid’]) {
$groupinfo[‘groupid’] = $this->setting[‘inviteconfig’][‘invitegroupid’];
}
$isvalidate=$groupinfo[‘groupid’]==8 ? 0 : 1;

<2)需要修改文件:\uc_client\client.php   需要修改的代码:(300行)函数uc_user_register添加一个参数isvalidate,修改后的代码:

function uc_user_register($username, $password, $email, $questionid = ”, $answer = ”, $regip = ”,$isvalidate=’0′) {
return call_user_func(UC_API_FUNC, ‘user’, ‘register’, array(‘username’=>$username, ‘password’=>$password, ’email’=>$email, ‘questionid’=>$questionid, ‘answer’=>$answer, ‘regip’ => $regip, ‘isvalidate’=>$isvalidate));
}

3)需要修改文件:\uc_client\control\user.php
需要修改的代码:(64行)函数onregister添加isvalidate,修改后的代码:

function onregister() {
$this->init_input();
$username = $this->input(‘username’);
$password =  $this->input(‘password’);
$email = $this->input(’email’);
$questionid = $this->input(‘questionid’);
$answer = $this->input(‘answer’);
$regip = $this->input(‘regip’);
$isvalidate= $this->input(‘isvalidate’);if(($status = $this->_check_username($username)) < 0) {
return $status;
}
if(($status = $this->_check_email($email)) < 0) {
return $status;
}
$uid = $_ENV[‘user’]->add_user($username, $password, $email, 0, $questionid, $answer, $regip, $isvalidate);
return $uid;
}

4)需要修改文件:\uc_client\model\user.php
需要修改的代码:(129行)函数add_user添加一个参数isvalidate,修改后的代码如下:

function add_user($username, $password, $email, $uid = 0, $questionid = ”, $answer = ”, $regip = ”,$isvalidate=’0′) {
$regip = empty($regip) ? $this->base->onlineip : $regip;
$salt = substr(uniqid(rand()), -6);
$password = md5(md5($password).$salt);
$sqladd = $uid ? “uid='”.intval($uid).”‘,” : ”;
$sqladd .= $questionid > 0 ? ” secques='”.$this->quescrypt($questionid, $answer).”‘,” : ” secques=”,”;
$this->db->query(“INSERT INTO “.UC_DBTABLEPRE.”members SET $sqladd username=’$username’, password=’$password’, email=’$email’, regip=’$regip’, regdate='”.$this->base->time.”‘, salt=’$salt’, isvalidate=’$isvalidate'”);
$uid = $this->db->insert_id();
$this->db->query(“INSERT INTO “.UC_DBTABLEPRE.”memberfields SET uid=’$uid'”);
return $uid;
}

3.后台审核用户时需要修改用户在ucenter_member表中的isvalidate为:1=>已审核
1)需要修改文件:\source\admincp\moderate\moderate_member.php
需要修改的代码:(209行后)添加修改ucenter_member中的isvalidate代码:

loaducenter();
uc_user_edit_validate($uids);//此函数为自定义函数,添加自定义函数方法请参照2)3)4)步操作

2)需要修改文件:\uc_client\client.php
需要添加的代码:在文件最后添加函数uc_user_edit_validate(),代码如下:

function uc_user_edit_validate($uid) {
return call_user_func(UC_API_FUNC, ‘user’, ‘editvalidate’, array(‘uid’=>$uid));
}

3)需要修改文件:\uc_client\control\user.php
需要添加的代码:在文件最后添加函数oneditvalidate(),代码如下:

function oneditvalidate(){
$this->init_input();
$uid = $this->input(‘uid’);
return $_ENV[‘user’]->edit_user_validate($uid);
}

4)需要修改文件:\uc_client\model\user.php
需要添加的代码:在文件最后添加函数edit_user_validate(),代码如下:

function edit_user_validate($uid){
if(!$uid){
return false;
}
$this->db->query(“UPDATE “.UC_DBTABLEPRE.”members SET isvalidate=1 WHERE uid IN (“.$uid.”)”);return $this->db->affected_rows();
}

注:uc_client的结构其实是经典的mvc结构,即\uc_client\model\ (M)    \uc_client\control\ (C)  view层在uc_server中,还需要注意uc_client中有一个总入口文件\uc_client\client.php

发表评论

邮箱地址不会被公开。 必填项已用*标注

8 × 1 =