<?php
    /*
        name:常用方法附属类
        author:xiaoz.me
        QQ:337003006
    */
    class Basic{
        protected $CI;

        //构造函数
        public function __construct(){
            $this->CI = & get_instance();
        }

        /*
            该函数检测用户是否已经登录,只需要一个参数
            如果参数为FALSE时,不会exit中断只执行,仅返回bool类型结果
            如果参数为TURE时,如果没有登录会exit终止执行
        */
        public function is_login($type = FALSE){
            //获取COOKIE信息
            @$user = $_COOKIE['user'];
            @$token = $_COOKIE['token'];

            //加载模型
            $this->CI->load->model('query','',TRUE);
            //加载辅助函数
            $this->CI->load->helper('basic');

            //如果查询成功
            if($this->CI->query->userinfo()){
                $userinfo = $this->CI->query->userinfo();
                $userinfo = json_decode($userinfo->values);

                $username = $userinfo->username;
                $password = $userinfo->password;
                //echo get_ip();
                $password = $username.$password.get_ip().get_ua();
                $password = md5($password);


                //判断用户名是否正确,用户名密码正确的情况
                if(($user == $username) && ($token == $password)){
                    //判断需要的类型
                    return TRUE;
                }
                //用户名和密码不正确的情况下
                else{
                    if($type === FALSE){
                        
                        return false;
                    }
                    else{
                        echo "权限不足,请<a href = '/user/login'>重新登录</a> 。";
                        //清除cookies
                        setcookie("user", '', time()-3600,"/");
                        setcookie("token", '', time()-3600,"/");
                        exit;
                    }
                }
            }
            else{
                echo '数据库查询错误!';
                exit;
            }
        }
        //查询上传数量限制,需要传入访客IP
        public function uplimit($ip){
            
        }
        //CURL下载图片
        public function dl_pic($url){
            $curl = curl_init($url);

            curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36");
            //伪造reffer
            curl_setopt ($curl, CURLOPT_REFERER, $url);            
            curl_setopt($curl, CURLOPT_FAILONERROR, true);
            curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
            #设置超时时间,最小为1s(可选)
            curl_setopt($curl , CURLOPT_TIMEOUT, 60);

            $html = curl_exec($curl);
            
            curl_close($curl);
            //返回数据
            return $html;
        }
        //网站数据分析
        public function analyze(){
            //图片总数
            $data['num'] = $this->CI->db->count_all("images");
            //本月总数
            $data['month']  =   $this->CI->query->count_num('month')->num;
            //今日总数
            $data['day']  =   $this->CI->query->count_num('day')->num;
            //管理员上传总数
            $data['admin']  =   $this->CI->query->count_num('admin')->num;
            //游客上传总数
            $data['visitor']  =   $this->CI->query->count_num('visitor')->num;
            //可疑图片总数
            $data['dubious']  =   $this->CI->query->count_num('dubious')->num;

            return $data;
        }
        //读取站点配置文件
        public function conf($arg = ''){
            //检查配置文件是否存在,并读取对应内容
            if(is_file(FCPATH."data/json/config.js")){
                $conf_path = FCPATH."data/json/config.js";
            }
            //配置文件不存在,读取默认配置
            else{
                $conf_path = FCPATH."data/json/config.simple.js";
            }
            $conf_path = str_replace("\\","/",$conf_path);
            //echo $conf_path;
            //读取配置文件内容
            $content = json_decode(file_get_contents($conf_path));
            
            //根据传入的参数来返回不同的数据
            switch ($arg) {
                case 'alert':
                    return $content->alert;
                    break;
                case 'info':
                    return $content->info;
                    break;
                default:
                    return $content;
                    break;
            }
        }
    }
?>