📄 usersmodel.php
字号:
<?php
/*
用户模块
*/
class UsersModel extends DBModel {
public function Init(){
$this->config = $GLOBALS['config'];
}
/*
@param $POST array
return int;
*/
public function Add($POST){
if ($this->valiUser($POST)){
$POST['username'] = strtolower($POST['username']);
$POST['lifetime'] = strtotime($POST['lifetime']);
$POST['regdate'] = time();
unset($POST['passwd']);
$row = $this->getRow($POST['username']);
if ($row['uid']){
$this->error = _('用户名已经被占用!请更换');
return false;
}
$row = $this->getRow(array('username' => $POST['username']));
if ($row['uid']){
$this->error = _('用户名已经存在!');
return false;
}
if ($this->config['ucenter'] == 1){ //ucenter整合插入
$ucenter = new ucenter();
if ($ucenter->add($POST['username'], $POST['password'], $POST['email'])===false){
$this->error = $ucenter->ErrorInfo;
return false;
}
}
$POST['password'] = md5(strtolower($POST['password']));
systemlog::set(_('添加了登录名为'.$POST['username'].'的用户'));
$this->_DB->insert(VODCMS_MEMBERS, $POST);
return $this->_DB->lastInsertId();
}else{
return false;
}
}
public function valiUser($data, $rule=null){
if (is_null($rule)) {
$rule['username'] = array('/(.+?)/is', _('请输入5-30个字符或数字组合的用户名!'), true, 5, 30);
$rule['password'] = array('/(.+?)/is', _('请输入5-30个字符或数字组合的密码!'), true, 5, 30);
if ($data['password'] != $data['passwd']){
$this->error = _('确认密码与登录密码不一致!');
return false;
}
$rule['email'] = array('email', _('邮件地址格式不正确!'), true);
$rule['point'] = array('int', _('帐户影币必须为数字类型!'), true,1, 9);
}
if (Easy_Validate_Default::validate($data, $rule)===false){
$this->error = Easy_Validate_Default::$error;
return false;
}else{
return true;
}
}
public function getAll($where=null){
$select = $this->_DB->select();
$sql = $select->from(VODCMS_MEMBERS.' AS a', 'a.*')->join(VODCMS_USERGROUP.' AS b' , 'a.usergroup=b.id', 'b.title as usergroup')->where($where)->order('a.uid DESC')->toString();
$total = $this->_DB->getCount($sql);
$this->_Page->set($total);
$this->printpage = $this->_Page->PrintPage();
$sql = $sql.$this->_Page->limit();
//cho $sql;
return $this->_DB->FetAll($sql);
}
/*
获取一行用户记录
*/
public function getRow($where){
if (is_numeric($where)){
$where = 'uid='.(int)$where;
}elseif(is_array($where)===false){
$where = array('username' => $where);
}
$select = $this->_DB->select();
$sql = $select->from(VODCMS_MEMBERS)->where($where)->limit(1)->toString();
//echo $sql;
return $this->_DB->fetRow($sql);
}
/*
*/
public function groupOption($usergroup=0){
$select = $this->_DB->select();
$sql = $select->from(VODCMS_USERGROUP)->order('flag asc')->toString();
foreach ($this->_DB->fetAll($sql) as $row){
if (intval($row['id']) == intval($usergroup)){
$data.= '<option value="'.$row['id'].'" selected="selected" >'.$row['title'].'</option>';
}else{
$data.= '<option value="'.$row['id'].'" >'.$row['title'].'</option>';
}
}
return $data;
}
/*
@param array $POST 用户资料的数组
return int
*/
public function modify($POST){
$POST['lifetime'] = strtotime($POST['lifetime']);
if ($POST['password']){
if (strlen($POST['password'])<6){
$this->error = _('请填写大于5位小于30位的密码!');
return false;
}
$POST['password'] = md5($POST['password']);
}else{
unset($POST['password']);
}
if ($this->config['ucenter'] == 1){ //开启ucenter时
$ucenter = new Ucenter();
if ($this->config['credit'] == 1){
$row = $this->getRow(array('uid'=>$POST['uid']));
$oldpoint = $ucenter->uc_user_getcredit($POST['uid']);
$point = $POST['point'] - $oldpoint;
$succeed = $ucenter->setMoney($POST['uid'], $row['point'], $POST['point'], $point);
if ($succeed == -1){
systemlog::set('整合用户'.$uid.'发送积分同步失败');
}
}
if ($ucenter->modify($POST['username'], $POST['oldpass'], $POST['password'], $POST['email'])===false){
$this->error = $ucenter->ErrorInfo;
return false;
}
}//结束ucenter用户整合
if ( $POST['lockip'] ){
if (!ip2long($POST['lockip']) || ip2long($POST['lockip']) == -1 ){
$this->error = _('绑定IP地址不正确!');
return false;
}
}
systemlog::set('修改了用户编号为'.$POST['uid'].'用户资料');
return $this->_DB->update(VODCMS_MEMBERS, $POST, array('uid'=>$POST['uid']));
}
/*
改变用户状态
*/
public function locked($uid){
$sql = 'UPDATE '.VODCMS_MEMBERS.' SET locked = NOT(locked) WHERE uid='. (INT)$uid;
return $this->_DB->Exec($sql);
}
/*
搜索用户
*/
public function search($POST){
$where = ' 1=1';
if ($POST['usergroup'] != 'all'){
$where .= ' AND a.usergroup = '. intval($POST['usergroup']);
}
if ($POST['usertype'] != 'all') {
$where .= ' AND a.usertype = '. intval($POST['usertype']);
}
if ($POST['point'] != 'all'){
if ($POST['point'] == 0){
$where .= ' AND a.point = 0';
}else{
$where .= ' AND a.point >'.(int)$POST['point'];
}
}
if ($POST['lifetime'] != 'all' && $POST['lifetime']){
$where .= ' AND TO_DAYS(FROM_UNIXTIME(a.lifetime)) - TO_DAYS(NOW()) <='.(int)$POST['lifetime'];
}
if ($POST['locked'] != 'all'){
$where .= ' AND a.locked='.intval($POST['locked']);
}
if ($POST['startime'] && $POST['endtime']){
$where .= ' AND Ta.regdate<'.strtotime($POST['startime']).' AND a.regdate<='.strtotime($POST['endtime']);
}
if ($POST['keyword']){
if (!$POST['checkbox']){
$where .= ' AND a.'.$POST['type'].' LIKE \'%'.$POST['keyword'].'%\'';
}else{
$where .= ' AND a.'.$POST['type'].' = \''.$POST['keyword'].'\'';
}
}
//echo $where;
return $this->getAll($where);
}
public function delete($uid){
if ($this->config['ucenter'] == 1){
$user = $this->getRow(array('uid'=>$uid)); //获取用户基本信息
$ucenter = new Ucenter();
$ucenter->delete($user['username']);
}
systemlog::set('删除了编号为'.$user['username'].'的用户');
return $this->_DB->delete(VODCMS_MEMBERS, array('uid'=> $uid));
}
/*
@param $POST array
void
*/
public function Post($POST){
switch ($POST['post']){
case 'locked':
$this->_DB->update(VODCMS_MEMBERS, array('locked'=> $POST['locked']),
"username in ('".implode("','", $POST['username'])."')");
break;
case 'delete':
$this->_DB->delete(VODCMS_MEMBERS, "username in ('".implode("','", $POST['username'])."')");
break;
case 'usergroup':
if ($POST['usergroup'] == 'all'){
$this->error = _('请选择新用户组');
return false;
}
$this->_DB->update(VODCMS_MEMBERS, array('usergroup'=> (int)$POST['usergroup']),
"username in ('".implode("','", $POST['username'])."')");
break;
case 'point':
$this->_DB->update(VODCMS_MEMBERS, "point=point+".(int)$POST['point'],
"username in ('".implode("','", $POST['username'])."')");
break;
case 'lifetime':
foreach($this->getAll("username in ('".implode("','", $POST['username'])."')") as $row){
if ($row['lifetime'] <= time()){
$lifetime = time() + ((int)$POST['lifetime']*86400);
}else{
$lifetime = $row['lifetime'] + ((int)$POST['lifetime']*86400);
}
$row['usertype'] = 1;
$this->_DB->update(VODCMS_MEMBERS, array('lifetime'=>$lifetime, 'usertype'=>$row['usertype']),array('uid'=>$row['uid']));
}
break;
case 'usertype':
$this->_DB->update(VODCMS_MEMBERS, 'usertype='.(int)$POST['usertype'],
"username in ('".implode("','", $POST['username'])."')");
break;
}
return $this->_DB->affected_rows();
}
public function userOnline(){
$select = $this->_DB->select();
$sql = $select->from(VODCMS_SESSION)->order('lastime DESC')->toString();
$total = $this->_DB->getcount($sql);
$this->_Page->set($total);
$this->printpage = $this->_Page->PrintPage();
$sql = $sql.$this->_Page->limit();
//cho $sql;
return $this->_DB->FetAll($sql);
}
public function getActive($where=null){
$select = $this->_DB->select();
$select->from(VODCMS_ACTIVES.' AS a','a.*');
$select->join(VODCMS_URL.' as b', 'a.urlid=b.urlid', 'b.movid');
$select->join(VODCMS_MOVIE.' as c', 'b.movid=c.movid', 'concat(c.title,b.title) as movie');
$select->where($where);
$sql = $select->order('a.id DESC')->toString();
$total = $this->_DB->getcount($sql);
$this->_Page->set($total);
$this->printpage = $this->_Page->PrintPage();
$sql = $sql.$this->_Page->limit();
return $this->_DB->FetAll($sql);
}
public function delActive($id){
return $this->_DB->delete(VODCMS_ACTIVES, array('id'=>(int)$id));
}
public function getPlaylog($POST=null){
$where = '1';
if ($POST['username']){
$where .= ' AND a.username like \''.$POST['username'].'\'';
}
if (strtotime($POST['stime'])){
$where .= ' AND a.addtime < \''.strtotime($POST['stime']).'\'';
}
if (strtotime($POST['etime'])){
$where .= ' AND a.addtime > \''.strtotime($POST['etime']).'\'';
}
$select = $this->_DB->select();
$select->from(VODCMS_PLAYLOG.' AS a','a.*');
$select->join(VODCMS_URL.' as b', 'a.urlid=b.urlid', 'b.movid');
$select->join(VODCMS_MOVIE.' as c', 'b.movid=c.movid', 'concat(c.title,b.title) as movie');
$select->where($where);
$sql = $select->order('a.id DESC')->toString();
$total = $this->_DB->getcount($sql);
$this->_Page->set($total);
$this->printpage = $this->_Page->PrintPage();
$sql = $sql.$this->_Page->limit();
//echo $sql;
return $this->_DB->FetAll($sql);
}
/*
删除点播日志
*/
public function delPlaylog($id){
if (is_array($id)){
$id = implode(',', array_map('intval',$id) );
}
return $this->_DB->delete(VODCMS_PLAYLOG, 'id in ('.$id.')');
}
/*删除在线用户*/
public function delOnline($id){
if (is_array($id)){
$where = implode('\',\'', $id );
}else{
$where = $id;
}
return $this->_DB->delete(VODCMS_SESSION, 'username in (\''.$where.'\')');
}
/*
验证用户名或者邮箱是否已经被占用
*/
public function exists($where){
$select = $this->_DB->select();
$sql = $select->from(VODCMS_MEMBERS)->where($where)->limit(1)->toString();
$row = $this->_DB->fetRow($sql);
if ($row['uid']){
return false;
}else{
return true;
}
}
/*
检查用户是否登陆成功!
表与用户组关联,传入参数时必须表明那个表
*/
function login($where, $uc=1){
if ($this->config['ucenter'] == 1 && $uc==1){
$ucenter = new Ucenter();
if ( empty($where['uid'])){//如果用户传入的是ID
list($uid, $username, $password, $email) = $ucenter->login($where['username'], $where['password']);
if ($uid > 0){
echo $ucenter->synclogin($uid);
}
$row = $this->getRow($where['username']);
if ($row['uid'] <1 && $uid>0){
$this->_DB->insert(VODCMS_MEMBERS, array('uid'=> $uid, 'username'=> $username,
'password'=>md5($password), 'email'=>$email, 'regdate' => time(), 'usergroup'=> 1));
}
}else{
$uid = $where['uid'];
}
/*获取积分*/
$credit = $ucenter->uc_user_getcredit($uid);
if($ucenter->uc_user_getcredit($uid) != -1){
$this->_DB->update(VODCMS_MEMBERS, array('point'=>$credit), array('uid'=>$uid));
}
//$ucenter->setMoney($uid, 1, 1,1);
}
$select = $this->_DB->select();
$select->from(VODCMS_MEMBERS.' as a', 'a.*');
$select->join(VODCMS_USERGROUP.' as b' , 'a.usergroup=b.id', 'b.title as groupname');
if (isset($where['password'])){
$where['password'] = md5($where['password']);
}
$select->where($where);
$sql = $select->limit(1)->toString();
$user = $this->_DB->fetRow($sql);
if ($user['usertype'] == 0){
if ($user['lifetime'] > time()){
$this->_DB->update(VODCMS_MEMBERS, array('usertype'=>1), array('uid'=>$user['uid']));
$user['usertype'] = 1;
}
}else{
if ($user['lifetime'] <= time() && $user['point']>0){
$this->_DB->update(VODCMS_MEMBERS, array('usertype'=>0), array('uid'=>$user['uid']));
$user['usertype'] = 0;
}
}
return $user;
}
/*
更新用户登录时间以及最后一次登录时间
@param $uid int 用户的编号
return int
*/
public function setLoginTime($uid){
return $this->_DB->update(VODCMS_MEMBERS, '`lastime` = `logintime`, `logintime` = '.time(), array('uid'=>intval($uid)));
}
}?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -