<?php
/*
===========================管理页控制器
*/
class cls_tab_sys_user extends cls_base_table
{
	private $obj_db;
	private $arr_config;
	//构造函数
	function __construct($msg_db="")
	{
		parent::__construct();
		global $obj_db;
		$this->obj_db=$obj_db;
		$this->arr_config["type"]=array("个人"=>"personal","企业"=>"company","UC用户"=>"UC");
		$this->arr_config["state"]=array("正常"=>1,"待审"=>0,"禁用"=>-1);
	}
	function __get($name){
		if(isset($this->arr_config["$name"])){
			return $this->arr_config["$name"];
		}
	}
	//保存
	function on_save($arr_fields,$is_new=0)
	{
		$arr_return=array("err"=>"","id"=>0);
		(!isset($arr_fields["user_id"]))? $arr_fields["user_id"]=0:$arr_fields["user_id"]=intval($arr_fields["user_id"]);
		//保存操作
		$lng_id=$arr_fields["user_id"];
		unset($arr_fields["user_id"]);//释放id
		if(isset($arr_fields["user_type"])){
			$str_x=array_search($arr_fields["user_type"],$this->arr_config["type"]);
			if($str_x==""){
				$arr_return["err"]="注册的用户类型[".$arr_fields["user_type"]."]不存在！";
				return $arr_return;
			}
		}
		if(isset($arr_fields["user_email"])&&chk_email($arr_fields["user_email"])!=""){
			$arr_return["err"]="请输入正确邮箱地址！";
			return $arr_return;
		}
		if($is_new==1 && $lng_id>0){
			$obj_rs=$this->obj_db->get_one("select count(1) as num from ".DB_PRE."sys_user where user_id=".$lng_id);
			if($obj_rs["num"]>0){
				$is_new=0;
			}else{
				$arr_fields["user_id"]=$lng_id;
			}
		}
		if($lng_id<1 || $is_new==1){
			$arr_return=self::_insert($arr_fields);
		}else{
			//判断是否修改用户名
			if(isset($arr_fields["user_name"])||in_array("user_name",$arr_fields)){
				$obj_result = $this->obj_db->query("SELECT * FROM ".DB_PRE."sys_user where user_id='".$lng_id."'");
				if($obj_rs = $this->obj_db->fetch_array($obj_result))
				{
					if($obj_rs["user_name"]!=$arr_fields["user_name"]){
						//检查用户名
						$arr_msg=chk_uname($arr_fields["user_name"]);
						if($arr_msg["err"]!=""){
							$arr_return["err"]=$arr_msg["err"];
							return $arr_return;
						}
						//查看用户名是否已经被注册
						$obj_result = $this->obj_db->query("SELECT * FROM ".DB_PRE."sys_user where user_name='".$arr_fields["user_name"]."'");
						if($obj_rs = $this->obj_db->fetch_array($obj_result))
						{
							$arr_return["err"]="注册用户名已经存在！";
							return $arr_return;
						}
					}
				}else{
					$arr_return["err"]="当前修改用户不存在！";
					return $arr_return;
				}
			}
			//判断是否修改密码
			if(isset($arr_fields["user_pwd"])||in_array("user_pwd",$arr_fields)){
				if($arr_fields["user_pwd"]==""){
					unset($arr_fields["user_pwd"]);
				}else{
					//检查用户密码
					$arr_msg=chk_pwd($arr_fields["user_pwd"]);
					if($arr_msg["err"]!=""){
						$arr_return["err"]=$arr_msg["err"];
						return $arr_return;
					}
					$arr_fields["user_pwd_key"]=rand(1,10000);//随机生成加密关键词
					$arr_fields["user_pwd"]=get_pwd($arr_fields["user_pwd"],$arr_fields["user_pwd_key"]);//加密码
				}
			}
			$str_where="user_id='".$lng_id."'";
			$arr_return=self::_update($arr_fields,$str_where);
			$arr_return["id"]=$lng_id;
		}
		return $arr_return;
	}
	function on_state($arr_id,$msg_val)
	{
		$arr_return=array("err"=>"");
		$msg_val=intval($msg_val);
		$str_id=get_arr_id($arr_id);
		if($str_id==""){
			$arr_return["err"]="没有指定要设置的记录！";
			return $arr_return;
		}
		$obj_result["err"] = $this->obj_db->execute("update ".DB_PRE."sys_user set user_state=".$msg_val." where user_id in(".$str_id.")");
		return $arr_return;
	}

	//注册
	private function _insert($arr_fields)
	{
		global $obj_tab_sys_config;
		$arr_cfg_sys=$obj_tab_sys_config->get_model("sys");
		$arr_return=array("err"=>"","id"=>0);
		if(!isset($arr_fields["user_type"])){
			echo $arr_fields["user_type"];exit;
			$arr_return["err"]="请选择用户注册的类型！";
			return $arr_return;			
		}
		if(!isset($arr_fields["user_state"])){
			$str_user_state=0;
			if(isset($arr_cfg_sys["user_state"])) $str_user_state=intval($arr_cfg_sys["user_state"]);
			$arr_fields["user_state"]=$str_user_state;
		}
		//检查用户名
		if(SYS_USER_REGTYPE==1){
			$arr_msg=chk_email($arr_fields["user_name"]);
			if($arr_msg["err"]!=""){
				$arr_return["err"]="注册账号必须是您的邮箱";
				return $arr_return;
			}
			$arr_fields["user_email"]=$arr_fields["user_name"];
		}else{
			$arr_msg=chk_uname($arr_fields["user_name"]);
			if($arr_msg["err"]!=""){
				$arr_return["err"]=$arr_msg["err"];
				return $arr_return;
			}
		}
		//检查用户密码
		$arr_msg=chk_pwd($arr_fields["user_pwd"]);
		if($arr_msg["err"]!=""){
			$arr_return["err"]=$arr_msg["err"];
			return $arr_return;
		}


		//设置注册参数
		$arr_fields["user_regip"]=get_user_ip();
		$arr_fields["user_regtime"]=TIME;
		$arr_fields["user_loginnum"]=0;
		$arr_fields["user_netname"]=$arr_fields["user_name"];//网名
		$arr_fields["user_pwd_key"]=rand(1,10000);//随机生成加密关键词
		$arr_fields["user_pwd"]=get_pwd($arr_fields["user_pwd"],$arr_fields["user_pwd_key"]);//加密码

		//查看用户名是否已经被注册
		$obj_result = $this->obj_db->query("SELECT user_id,user_verify FROM ".DB_PRE."sys_user where user_name='".$arr_fields["user_name"]."'");
		if($obj_rs = $this->obj_db->fetch_array($obj_result))
		{
			global $obj_ctl_user;
			if(SYS_USER_REGTYPE && !$obj_ctl_user->is_verify(1,$obj_r["user_verify"])){
				//被别人注册了，但是没有验证，可以修改
				$str_where="user_id='".$obj_rs["user_id"]."'";
				$arr_return=self::_update($arr_fields,$str_where);
				$arr_return["id"]=$obj_rs["user_id"];
				return $arr_return;
			}else{
				$arr_return["err"]="注册用户名已经存在！";
			}
			return $arr_return;
		}

		$arr_return=parent::on_insert(DB_PRE."sys_user",$arr_fields);
		return $arr_return;
	}
	//修改
	private function _update($arr_fields,$msg_where)
	{
		$arr_return=array("err"=>"","id"=>0);
		if(isset($arr_fields["user_uname"])||in_array("user_uname",$arr_fields)){
			unset($arr_fields["model_regkey"]);//不允许修改，注册关键词
		}
		$arr_return=parent::on_update(DB_PRE."sys_user",$arr_fields,$msg_where);
		return $arr_return;
	}

	//删除
	function on_del($arr_id)
	{
		$arr_return=array("err"=>"");
		$str_id=get_arr_id($arr_id);
		if($str_id==""){
			$arr_return["err"]="没有指定要删除的记录！";
			return $arr_return;
		}
		$arr_return=parent::on_del(DB_PRE."sys_user","user_id in(".$str_id.")");
		//删除管理信息
		$arr_adminid=array();
		$str_sql="select admin_id from ".DB_PRE."sys_admin where admin_user_id in(".$str_id.")";
		$obj_result  = $this->obj_db->query($str_sql);
		while($obj_rs=$this->obj_db->fetch_array($obj_result)){
			$arr_adminid[]=$obj_rs["admin_id"];
		}
		if(count($arr_adminid)>0){
			require_once(SYS_ROOT.'/cls_tab/tab.sys.admin.php');
			$obj_tab_admin=new cls_tab_sys_admin();
			$obj_tab_admin->on_del($arr_adminid);
		}
		//删除简历信息
		$arr_resumeid=array();
		$str_sql="select resume_id from ".DB_PRE."hr_resume where resume_user_id in(".$str_id.")";
		$obj_result  = $this->obj_db->query($str_sql);
		while($obj_rs=$this->obj_db->fetch_array($obj_result)){
			$arr_resumeid[]=$obj_rs["resume_id"];
		}
		if(count($arr_resumeid)>0){
			require_once(SYS_ROOT.'/cls_tab/tab.hr.resume.php');
			$obj_tab_resume=new cls_tab_hr_company();
			$obj_tab_resume->on_del($arr_resumeid);
		}
		//删除企业信息
		$arr_companyid=array();
		$str_sql="select company_id from ".DB_PRE."hr_company where company_user_id in(".$str_id.")";
		$obj_result  = $this->obj_db->query($str_sql);
		while($obj_rs=$this->obj_db->fetch_array($obj_result)){
			$arr_companyid[]=$obj_rs["company_id"];
		}
		if(count($arr_companyid)>0){
			require_once(SYS_ROOT.'/cls_tab/tab.hr.company.php');
			$obj_tab_company=new cls_tab_hr_company();
			$obj_tab_company->on_del($arr_companyid);
		}
		return $arr_return;
	}
	//根据user_id,user_name 判断用户是否存在
	function chk_isuser($msg_uid,$msg_uname=""){
		if($msg_uname!=""){
			$str_where="user_name='".$msg_uname."'";
		}else{
			$str_where="user_id='".$msg_uid."'";
		}
		$str_sql="select user_id from ".DB_PRE."sys_user where ".$str_where;
		$obj_result  = $this->obj_db->query($str_sql);
		if($obj_rs=$this->obj_db->fetch_array($obj_result)){
			$arr_return=$obj_rs;
		}else{
			$arr_return["err"]="用户不存在！";
		}
		return $arr_return;

	}
	function on_update_uname($user_id,$new_uname){
		$arr_return=array("err"=>"");
		if($new_uname==""){
			$arr_return["err"]="新账号不能为空！";
			return $arr_return;
		}
		$arr_msg=chk_uname($new_uname);
		if($arr_msg["err"]!=""){
			$arr_return["err"]=$arr_msg["err"];
			return $arr_return;
		}
		//查看用户名是否已经被注册
		$obj_result = $this->obj_db->query("SELECT * FROM ".DB_PRE."sys_user where user_name='".$new_uname."'");
		if($obj_rs = $this->obj_db->fetch_array($obj_result))
		{
			$arr_return["err"]="新账号已经存在！";
			return $arr_return;
		}

		$str_sql="select user_name from ".DB_PRE."sys_user where user_id='".$user_id."'";
		$obj_result=$this->obj_db->query($str_sql);
		if(!$obj_rs=$this->obj_db->fetch_array($obj_result))
		{
			$arr_return["err"]="原账号不存在！";
			return $arr_return;
		}
		$str_sql="update ".DB_PRE."sys_user set user_name='".$new_uname."' where user_id='".$user_id."'";
		$arr_return["err"]=$this->obj_db->execute($str_sql);
		return $arr_return;

	}	
	function get_rs($arr_id){
		$arr_return=array();
		$str_id=get_arr_id($arr_id);
		$str_sql="select * from ".DB_PRE."sys_user where user_id in(".$str_id.")";
		$obj_result  = $this->obj_db->query($str_sql);
		while($obj_rs=$this->obj_db->fetch_array($obj_result)){
			$arr_return[]=$obj_rs;
		}
		return $arr_return;
	}
	function get_user_name($arr_id){
		$arr_return=array();
		$str_id=get_arr_id($arr_id);
		$str_sql="select user_id,user_name from ".DB_PRE."sys_user where user_id in(".$str_id.")";
		$obj_result  = $this->obj_db->query($str_sql);
		while($obj_rs=$this->obj_db->fetch_array($obj_result)){
			$arr_return["id_".$obj_rs["user_id"]]=$obj_rs["user_name"];
		}
		return $arr_return;
	}
}
?>
