usercontrol($base);
}
function usercontrol(&$base) {
$this->base = $base;
$this->db = $base->db;
$this->user = $base->load('user');
}
function register($username, $pwd, $email) {
if (($status = $this->checkName($username)) < 0) {
return $status;
}
if(!empty($email)){
if (($status = $this->checkEmail($email)) < 0) {
return $status;
}
}
$uid = $this->user->add($username, $pwd, $email);
/*注册接口不发送邮件
$this->base->init_cache();
if ($this->base->cache['rg_mailcheck']) {
$mmail = $this->base->load('mail');
$mmail->send($email, $this->base->cache['rg_mail_subject'], $this->base->cache['rg_mail_content']);
}*/
return $uid;
//return $this->user->add($username, $pwd, $email);
}
function login($username, $password, $logintype) {
$num = 1;
switch ($logintype) {
case 1:
$user = $this->user->get_by_uid($username);break;
case 2:
list($user, $num) = $this->user->get_by_email($username);break;
default:
$user = $this->user->get_by_username($username);
}
$synlogin = '';
if (empty($user)) {
$status = -1;
} elseif ($logintype == 2 && $num > 1) {
$status = -3;
} elseif ($password != $user['password'] && substr($password, 8, 16) != $user['password']) {
$status = -2;
} else {
$status = 1;
$this->base->appid && $synlogin = $this->synlogin($user['uid'], $user['username'], $password);
}
unset($user['password']);//返回除password外的所有用户信息,以便应用端注册
$user['synlogin'] = $synlogin;
$user['status'] = $status;
return $user;
}
function synlogin($uid, $username, $password) {
$synlogin = '';
$mapp = $this->base->load('app');
$list = $mapp->applist();
foreach ($list as $appid => $app) {
if ($appid != $this->base->appid) {
$url = $mapp->urlformat($app['siteurl'], $app['interface'], $app['secretkey'], 'User', 'synlogin', array('user' => $this->base->strcode($uid . "\t" . $username . "\t" . $password . "\t" . $this->base->time, $app['secretkey'])));
$synlogin .= "";
}
}
return $synlogin;
}
function synlogout() {
$synlogout = '';
$mapp = $this->base->load('app');
$list = $mapp->applist();
foreach ($list as $appid => $app) {
if ($appid != $this->base->appid) {
$url = $mapp->urlformat($app['siteurl'], $app['interface'], $app['secretkey'], 'User', 'synlogout');
$synlogout .= "";
}
}
return $synlogout;
}
function get($username,$bytype) {
switch ($bytype) {
case 1:
$user = $this->user->get_by_uid($username);break;
case 2:
list($user) = $this->user->get_by_email($username);break;
default:
$user = $this->user->get_by_username($username);
}
if ($user) {
return array('uid' => $user['uid'], 'username' => $user['username'],'avatar' => $user['icon'], 'email' => $user['email']);
}
return array();
}
function edit($uid, $oldname, $pwd, $email) {
if ($email && ($status = $this->checkEmail($email, $oldname)) < 0) {
return $status;
}
if (($status = $this->user->edit($uid, $newname, $pwd, $email)) == 2) {
$notify = $this->base->load('notify');
$nid = $notify->add('altername', array('uid' => $uid, 'newname' => $newname), true);
//$notify->send_by_id($nid);
}
return $status;
}
function delete($uids) {
$this->user->delete($uids);
$notify = $this->base->load('notify');
$nid = $notify->add('deluser', array('uids' => $uids), true);
}
function checkName($username) {
$S_key = array("\\",'&',' ',"'",'"','/','*',',','<','>',"\r","\t","\n",'#','%','?');
if (str_replace($S_key, '', $username) != $username) {
return UC_USER_REG_ILLEGAL_USERNAME;
}
if ($this->user->get_by_username($username)) {
return UC_USER_REG_USERNAME_SAME;
}
return 1;
}
function checkEmail($email, $username = '') {
if (empty($email) || !preg_match("/^[-a-zA-Z0-9_\.]+\@([0-9A-Za-z][0-9A-Za-z-]+\.)+[A-Za-z]{2,5}$/", $email)) {
return UC_USER_REG_ILLEGAL_EMAIL;
}
if ($this->user->check_email($email, $username)) {
return UC_USER_REG_EMAIL_SAME;
}
return 1;
}
function check($uid,$checkstr){
$user = $this->user->get_by_uid($uid);
if ($user) {
$app = $this->base->load('app');
$myapp = $app->applist($this->base->appid);
if (md5($myapp['secretkey'] . $user['password']) != $checkstr) {
$user['uid'] = UC_USER_CHECK_ERROR;
}
} else {
$user['uid'] = UC_USER_NOT_EXISTS;
}
return $user;
}
function CheckMaxUid(){
return $this->user->get_by_maxuid();
}
}
?>