<?php
/*
===========================用户控制器
职位状态：大于零有效，零：待审，-１：删除，-２：暂停，-3：企业无效影响职位也无效
*/
class cls_tab_hr_job extends cls_base_table
{
	private $tab_job;
	private $obj_db;
	private $perms=array();
	private $config=array();
	//构造函数
	function __construct()
	{
		global $obj_db,$obj_tab_sys_config;
		$arr_cfg_company=$obj_tab_sys_config->get_model("company");
		$arr_cfg_personal=$obj_tab_sys_config->get_model("personal");
		parent::__construct();
		$this->obj_db=$obj_db;
		$this->tab_job=DB_PRE."hr_job";	
		$this->perms["pay"]=array(600,800,1000,1200,1500,1800,2000,2500,3000,4000,5000,6000,7000,8000,10000);
		$this->perms["experience"]=array(1,2,3,4,5,6,7,8,9,10,15,20);
		$this->perms["type"]=array("不限"=>"","全职"=>"全职","兼职"=>"兼职");//求职类型	
		$this->perms["degree"]=array("博士后"=>"9","博士"=>"8","硕士"=>"7","本科"=>"6","大专"=>"5","中专"=>"4","高中"=>"3","初中"=>"2","小学"=>"1");//求职类型
		$this->perms["state"]=array("通过"=>1,"待审"=>0,"回收站"=>-1,"暂停"=>-2,"企业待审"=>-3);

		if(isset($arr_cfg_personal['job_type'])) $this->perms["type"]=$arr_cfg_personal['job_type'];
		if(isset($arr_cfg_personal['experience'])) $this->perms["experience"]=$arr_cfg_personal['experience'];
		if(isset($arr_cfg_company['pay'])) $this->perms["pay"]=$arr_cfg_company['pay'];
		if(isset($arr_cfg_personal['degree'])) $this->perms["degree"]=$arr_cfg_personal['degree'];

		// 是否生成静态文件
		$this->perms["ishtml"]=false;
		if(isset($arr_cfg_company["job_htmlpath"])&&$arr_cfg_company["job_htmlpath"]!=""){
			$str_dir=$arr_cfg_company["job_htmlpath"];
			$str_dirpath=get_real_path("",$str_dir);
			if(is_dir($str_dirpath)){
				$this->perms["ishtml"]=true;
			}
		}

	}
	function __get($name){
		if(isset($this->perms["$name"])){
			return $this->perms["$name"];
		}
	}
	/*添加
	arr_fields:关健字数组
	*/
	function on_save($arr_fields,$str_where="")
	{
		$arr_return=array("err"=>"","id"=>0);
		$arr_job=array();
		(!isset($arr_fields["job_id"]))? $arr_fields["job_id"]=0:$arr_fields["job_id"]=intval($arr_fields["job_id"]);
		//格式化数据
		if(!isset($arr_fields["job_name"])||$arr_fields["job_name"]==""){
			$arr_return["err"]="职位名称不能为空！";
			return $arr_return;
		}
		//保存操作
		$lng_id=$arr_fields["job_id"];
		unset($arr_fields["job_id"]);//释放id
		$arr_fields["job_updatetime"]=TIME;
		if($lng_id<1){
			$arr_fields["job_addtime"]=TIME;
			$arr_return=self::_insert($arr_fields);
		}else{
			$str_where="job_id='".$lng_id."'";
			$arr_return=self::_update($arr_fields,$str_where);
			$arr_return["id"]=$lng_id;
		}
		//更新公司发布时间
		if($arr_return["err"]==""){
			if(!isset($arr_fields["job_user_id"])){
				$obj_result=$this->obj_db->query("select job_user_id from ".DB_PRE."hr_job where job_id=".$arr_return["id"]);
				if($obj_rs=$this->obj_db->fetch_array($obj_result)){
					$arr_fields["job_user_id"]=$obj_rs["job_user_id"];
				}else{
					$arr_fields["job_user_id"]=0;
				}
			}
			$lng_uid=intval($arr_fields["job_user_id"]);
			$obj_result=$this->obj_db->query("select company_job_ids from ".DB_PRE."hr_company where company_user_id=".$lng_uid);
			if($obj_rs=$this->obj_db->fetch_array($obj_result)){
				if(empty($obj_rs["company_job_ids"])){
					$arr_job_ids=array();
				}else{
					$arr_job_ids=explode(",",$obj_rs["company_job_ids"]);
				}
				$arr_x[]=$arr_return["id"];
				$arr_new_ids=array_unique(array_merge($arr_x,$arr_job_ids));
				$str_ids=implode(",",$arr_new_ids);
				$str_sql="update ".DB_PRE."hr_company set company_pubtime='".TIME."',company_job_ids='".$str_ids."' where company_user_id=".$lng_uid;
				$str_msg=$this->obj_db->execute($str_sql);
			}
		}
		return $arr_return;
	}
	//检查企业是否有发布职位的权限
	function chk_job(){
		global $obj_ctl_user,$arr_cfg_company;
		$arr_return=array("err"=>"","company_fz_id"=>0);
		//管理不限权
		if($obj_ctl_user->is_admin()) return $arr_return;
		if($obj_ctl_user->type!="company"){
			$arr_return["err"]="您不是企业会员不能发布招聘职位！";
			return $arr_return;
		}
		//查看企业已经发送面试邀请数量
		$obj_rs   = $this->obj_db->get_one("SELECT count(*) as num FROM ".DB_PRE."hr_job where job_user_id='".$obj_ctl_user->id."'");
		$lng_jobnum=$obj_rs["num"];
		//查看企业是否为VIP会员
		$obj_result = $this->obj_db->query("SELECT company_vip_id,company_vip_time,company_fz_id FROM ".DB_PRE."hr_company where company_user_id='".$obj_ctl_user->id."'");
		if($obj_rs = $this->obj_db->fetch_array($obj_result))
		{
			$arr_return["company_fz_id"]=$obj_rs["company_fz_id"];
			if($obj_rs["company_vip_id"]>0){//VIP类型有效，按VIP设置
				$obj_result2 = $this->obj_db->query("SELECT vip_jobnum,vip_days FROM ".DB_PRE."hr_company_vip where vip_id='".$obj_rs["company_vip_id"]."'");
				if($obj_rs2 = $this->obj_db->fetch_array($obj_result2))
				{
					$lng_time=$obj_rs2["vip_days"]*86400+$obj_rs["company_vip_time"];
					if($lng_time>TIME||$obj_rs2["vip_days"]<1){
						if($obj_rs2["vip_jobnum"]>0&&$obj_rs2["vip_jobnum"]>$lng_jobnum){
							//检测通过，允许发送
							return $arr_return;
						}else if($obj_rs2["vip_jobnum"]<0){
							//不限发布数量，允许发送
							return $arr_return;
						}else{
							//为0，不允许发送
							if($obj_rs2["vip_jobnum"]>0){
								$arr_return["err"]="您的企业所属VIP会员只能发布".$obj_rs2["vip_jobnum"]."个招聘职位，请删除以前没用的职位或直接修改，或升级加入VIP服务";
							}else{
								$arr_return["err"]="您的企业所属VIP会员没有发布招聘职位的权限，请联系工作人员升级服务";
							}
							return $arr_return;
						}
					}else{
						$arr_return["err"]="您的企业所属VIP会员已过期，请联系工作人员！";
						return $arr_return;
					}
				}else{
					$arr_return["err"]="您的企业所属VIP会员已过期，请联系工作人员！";
					return $arr_return;
				}
			}else{//否则按系统默认设置
				if(isset($arr_cfg_company["job_num"])){
					$lng_val=intval($arr_cfg_company["job_num"]);
					if($lng_val>$lng_jobnum){
						return $arr_return;
					}else if($lng_val<0){//小于0，不限发送数量
						return $arr_return;
					}else{
						if($lng_jobnum>0&&$lng_val>0){
							$arr_return["err"]="您没有加入VIP会员，只能发布".$lng_val."个招聘职位，请删除以前没用的职位或直接修改，或升级加入VIP服务！";
						}else{
							$arr_return["err"]="您没有发布招聘职位的权限，请加入VIP会员吧！";
						}
						return $arr_return;
					}
				}else{
					$arr_return["err"]="您没有发布招聘职位的权限，请加入VIP会员吧！";
					return $arr_return;
				}
			}
		}else{
			$arr_return["err"]="您不是企业会员或您没有填写企业必要资料不能发布招聘职位！";
			return $arr_return;
		}
	}
	function _insert($arr_fields)
	{
		global $arr_cfg_company;
		$arr_return=array("err"=>"","id"=>0);
		$arr_return=self::chk_job();
		if($arr_return["err"]!="") return $arr_return;
		$arr_fields["job_fz_id"]=$arr_return["company_fz_id"];
		if(!isset($arr_fields["job_state"])){
			$str_job_state=0;
			if(isset($arr_cfg_company["job_state"])) $str_job_state=intval($arr_cfg_company["job_state"]);
			$arr_fields["job_state"]=$str_job_state;
		}
		$arr_return=parent::on_insert($this->tab_job,$arr_fields);
		return $arr_return;
	}
	function _update($arr_fields,$msg_where)
	{
		$arr_return=array("err"=>"","id"=>0);
		$arr_return=parent::on_update($this->tab_job,$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($this->tab_job,"job_id in(".$str_id.")");

		return $arr_return;
	}
	function on_pause($arr_id)
	{
		//状态为-2表示暂停招聘
		$arr_return=array("err"=>"");
		$str_id=get_arr_id($arr_id);
		if($str_id==""){
			$arr_return["err"]="没有指定要暂停的记录！";
			return $arr_return;
		}
		$obj_result["err"] = $this->obj_db->execute("update ".$this->tab_job." set job_state=-2 where job_id in(".$str_id.") and job_state=1");
		return $arr_return;
	}
	function on_pause_cancel($arr_id)
	{
		//状态为-2表示暂停招聘
		$arr_return=array("err"=>"");
		$str_id=get_arr_id($arr_id);
		if($str_id==""){
			$arr_return["err"]="没有指定要暂停的记录！";
			return $arr_return;
		}
		$obj_result["err"] = $this->obj_db->execute("update ".$this->tab_job." set job_state=1 where job_id in(".$str_id.") and job_state=-2");
		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;
		}
		//-3表示企业状态无效，所以这里的状态不能控制-3
		$obj_result["err"] = $this->obj_db->execute("update ".$this->tab_job." set job_state=".$msg_val." where job_id in(".$str_id.") and job_state!=-3");
		return $arr_return;
	}
	function get_htmlinfo($msg_id)
	{
		global $arr_cfg_company;
		$this_html=array("path"=>"","url"=>"");
		if($msg_id<1) return $this_html;
		if(isset($arr_cfg_company["job_htmlpath"])&&$arr_cfg_company["job_htmlpath"]!=""){
			$str_dir=$arr_cfg_company["job_htmlpath"];
			$str_file=format_path($str_dir."/".$msg_id.".html");
			$str_dirpath=get_real_path("",$str_dir);
			$str_path=get_real_path("",$str_file);
			if(is_dir($str_dirpath)){
				$this_html["path"]=$str_path;
				$this_html["url"]=WEB_URL.$str_file;
			}
		}
		return $this_html;
	}
	function get_url($msg_id){
		global $arr_cfg_company;
		if($msg_id<1) return "";
		$str_return=WEB_URL."/index.php?app=jobview&id=".$msg_id;
		if(isset($arr_cfg_company["job_htmlpath"])&&$arr_cfg_company["job_htmlpath"]!=""){
			$str_dir=$arr_cfg_company["job_htmlpath"];
			$str_file=format_path($str_dir."/".$msg_id.".html");
			$str_return=WEB_URL.$str_file;
		}
		return $str_return;
	}

}
?>
