File: /www/wwwroot/bs.kntsleep.com/system/admin/member/member.class.php
<?php
/*
* Copyright (c) Huyin Information Technology Co., Ltd. All Rights Reserved.
* BOSSCMS Content Management System (https://www.bosscms.net/)
*/
defined('IS_OK') or exit('Access Forbidden');
into::basic_class('admin');
class member extends admin
{
public function init()
{
global $G;
$G['cover'] = $this->cover();
mysql::update(array('etime'=>0,'weight'=>setDefault($G['config']['member_grade_default'],0)),'member',"etime>0 AND etime<".TIME);
$where = $this->where($G['get']);
$data = page::member_pages($G['rows']=$this->rows(20), null, null, null, 'pages', '*', $where);
foreach($data['list'] as $k=>$v){
$data['list'][$k]['grade'] = arrExist(page::grade_one($v['weight']),'name');
}
$G['grade'] = arrOption(page::grade_list(),'weight','name');
echo $this->theme('member/member',$data);
}
public function where($data)
{
$where = 1;
if($keyword = $data['keyword']){
$where = "(username='{$keyword}' OR alias='{$keyword}') AND {$where}";
}
if(is_numeric($data['weight'])){
$where = "weight='{$data['weight']}' AND {$where}";
}
if($data['etime'] && is_numeric($data['etime'])){
$where = "etime>0 AND etime<".strtotime('+'.abs($data['etime']).' '.($data['etime']>0?'month':'day'),TIME)." AND {$where}";
}
return $where;
}
public function edit()
{
global $G;
$G['cover'] = $this->cover('member');
$data = array();
if(isset($G['get']['id']) && $data['member']=mysql::select_one('*','member',"id='{$G['get']['id']}'")){
$data['member']['utime'] = $data['member']['utime']?date('Y-m-d H:i:s',$data['member']['utime']):0;
$data['member']['etime'] = $data['member']['etime']?date('Y-m-d H:i:s',$data['member']['etime']):0;
$data['member']['weight'] = arrExist(page::grade_one($data['member']['weight']),'weight');
$data['params'] = arrOption(page::material($data['member']['id']),'parent','value');
}
$G['grade'] = arrOption(page::grade_list(),'weight','name');
$data['form'] = page::form_register();
echo $this->theme('member/edit',$data);
}
public function modify()
{
global $G;
$this->cover('member','M');
if(isset($G['post']['id'])){
$error=array();
foreach($G['post']['id'] as $id){
if(isset($G['post']['open'.$id])){
$data = array(
'open' => $G['post']['open'.$id]
);
if(!is_numeric(mysql::update($data,"member","id='{$id}'"))){
$error[]=$id;
}
}
}
if($error){
alert('ID为'.implode(',',$error).'修改失败');
}else{
alert('修改成功', url::mpf('member','member','init'));
}
}else{
alert('没有提交信息');
}
}
public function add()
{
global $G;
$this->cover('member',arrExist($G,'get|id')?'M':'A');
if(isset($G['post'])){
$data = array(
'weight' => is_numeric($G['post']['weight'])?$G['post']['weight']:0,
'avatar' => $G['post']['avatar'],
'alias' => $G['post']['alias'],
'email' => $G['post']['email'],
'phone' => $G['post']['phone'],
'sex' => $G['post']['sex'],
'golds' => $G['post']['golds'],
'points' => $G['post']['points'],
'balance' => $G['post']['balance'],
'contribute' => $G['post']['contribute'],
'utime' => $G['post']['utime']?strtotime($G['post']['utime']):0,
'etime' => is_array($G['post']['etime'])||!$G['post']['etime']?0:strtotime($G['post']['etime']),
'open' => $G['post']['open']
);
if($password = arrExist($G,'post|password')){
if($password && preg_match('/^(?![a-zA-Z]+$)(?![0-9]+$).{6,}$/',delFilter($password))){
if($password == arrExist($G,'post|passwords')){
$data['password'] = md5(stripslashes($G['post']['password']));
}else{
alert('两次密码输入不同,请重新输入');
}
}else{
alert('密码必须含有英文字母和数字,且长度大于6位字符');
}
}
$form = page::form_register();
if($id = arrExist($G,'get|id')){
if($res = page::member_one($id)){
mysql::update($data,'member',"id='{$id}'");
if($form){
foreach($form as $v){
$value = $G['post']['params'][$v['id']];
$value = is_array($value)?json::enFilter($value):$value;
if(mysql::total('material',$whe="parent='{$v['id']}' AND member='{$res['id']}'")){
mysql::update(array('value'=>$value),'material',$whe);
}else{
mysql::insert(array('parent'=>$v['id'],'member'=>$res['id'],'value'=>$value),'material');
}
}
}
}else{
alert('会员错误');
}
}else{
if(!$password){
alert('密码不能为空');
}
$data['username'] = $G['post']['username'];
if(mb_strlen($data['username'],'utf-8')<2){
alert('账户名称必须大于2个字符');
}
if(mysql::total('member',"username='{$data['username']}'")){
alert('该账号已经存在,请重新输入');
}
$data['ip'] = '';
$data['frequency'] = '0';
$data['ctime'] = TIME;
$data['ltime'] = 0;
if($id = mysql::insert($data,'member')){
if($form){
foreach($form as $v){
$value = $G['post']['params'][$v['id']];
mysql::insert(array(
'parent' => $v['id'],
'value' => is_array($value)?json::enFilter($value):$value,
'member' => $id
),'material');
}
}
}
}
alert('保存成功',url::mpf('member','member','edit',array('id'=>$id,'success'=>'ok')));
}else{
alert('没有提交信息');
}
}
public function delete()
{
global $G;
$this->cover('member','D');
if(isset($G['post']['url']) && isset($G['get']['id'])){
$del = array();
$arr = explode(',',$G['get']['id']);
foreach($arr as $id){
if(is_numeric($id)){
$del[$id] = $id;
}
}
if($del){
$error=array();
foreach($del as $id=>$name){
if(is_numeric(mysql::delete("member","id='{$id}'"))){
}else{
$error[]=$id;
}
}
if($error){
alert('ID为'.implode(',',$error).'删除失败');
}else{
alert('删除成功',url::mpf('member','member','init',array('id'=>null)));
}
}else{
alert('没有删除对象id');
}
}
alert('没有提交信息');
}
public function csv()
{
global $G;
$this->cover('member','R');
if($G['post']){
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="member.csv"');
header('Cache-Control: max-age=0');
$where = $this->where($G['post']);
$rows = 1000;
if($total = mysql::total('member', $where)){
$file = fopen('php://output','a');
$arr = array('编号','账号','昵称','头像','性别','邮箱','电话','等级','升级时间','到期时间','金币','积分','余额','投稿限制','登陆时间','登陆IP','登录次数','账号状态');
foreach($arr as $k=>$v){
$arr[$k] = iconv('utf-8','gbk',$v);
}
if($form = page::form_register()){
foreach($form as $v){
$arr[] = iconv('utf-8','gbk',$v['title']);
}
}
fputcsv($file,$arr);
$max = ceil($total/$rows);
$grade = array();
$open = array(1=>'正常启用',2=>'限制禁言',-1=>'邮箱未验证',0=>'已关闭');
$res = mysql::select_all('name,weight','grade','open=1',"weight DESC,id DESC");
foreach($res as $v){
$grade[$v['weight']] = $v['name'] ;
}
$domain = $G['config']['store_type']?$G['config']["store_domain"]:$G['config']['domain'];
for($i=0; $i<$max; $i++){
ob_flush();
flush();
$list = mysql::select_all('*', 'member', $where, 'id ASC', ($i*$rows).','.$rows);
foreach($list as $v){
$arr = array(
$v['id'],
iconv('utf-8','gbk',$v['username']),
iconv('utf-8','gbk',$v['alias']),
url::upload($v['avatar'],$domain),
iconv('utf-8','gbk',$G['option']['sex'][$v['sex']]),
$v['email'],
$v['phone'],
iconv('utf-8','gbk',$grade[$v['weight']]),
$v['ltime']>1e9?date('Y-m-d H:i:s',$v['utime']):'',
$v['etime']?date('Y-m-d H:i:s',$v['etime']):iconv('utf-8','gbk','永久'),
$v['golds'],
$v['points'],
$v['balance'],
$v['contribute'],
$v['ltime']>1e9?date('Y-m-d H:i:s',$v['ltime']):'',
$v['ip'],
$v['frequency'],
iconv('utf-8','gbk',$open[$v['open']])
);
if($form){
$mt = arrOption(page::material($v['id']),'parent','value');
foreach($form as $v){
if($value = $mt[$v['id']]){
$value = preg_match('/^\[(".+")?\]$/',$value)?implode(',',json::decode($value)):$value;
$value = htmlspecialchars_decode($value, ENT_QUOTES);
$value = iconv('utf-8','gbk',$value);
$arr[] = $v['style']==8?url::upload($value,$domain):$value;
}else{
$arr[] = '';
}
}
}
fputcsv($file, $arr);
}
}
fclose($file);
}else{
alert('数据为空');
}
}else{
alert('没有提交信息');
}
}
public function login()
{
global $G;
if($G['config']['member_fast_login'] && is_numeric($G['get']['id']) && $result=mysql::select_one('*','member',"id='{$G['get']['id']}'")){
$member_logout_time = arrExist($G,'config|member_logout_time');
if(!is_numeric($member_logout_time) || (is_numeric($member_logout_time) && $member_logout_time<60)){
$member_logout_time = 60;
}
session::set('member', $result['id'].P.$result['username'].P.$result['password'].P.$result['ltime'], $member_logout_time);
location(url::items(mysql::select_one('*','items',"type='11'")));
}
}
}
?>