<?php

/**
 * $Author ：PHPYUN开发团队
 *
 * 官网: http://www.phpyun.com
 *
 * 版权所有 2009-2021 宿迁鑫潮信息技术有限公司，并保留所有权利。
 *
 * 软件声明：未经授权前提下，不得用于商业运营、二次开发以及任何形式的再次发布。
 */

class index_controller extends common
{
    function actMsg($msgUrl, $msg, $status = 8)
    {
        $this->ACT_msg($msgUrl, $msg, $status);
    }

    function getmsgurl()
    {

        if (ismobileuser()) {//当前为wap登录

            if ($this->config['sy_wapdomain'] != "") {

                if ($this->config['sy_wapssl'] == '1') {

                    $protocol = 'https://';
                } else {

                    $protocol = 'http://';
                }

                if (strpos($this->config['sy_wapdomain'], 'http://') === false && strpos($this->config['sy_wapdomain'], 'https://') === false) {

                    $msgurl = $protocol . $this->config['sy_wapdomain'];
                } else {

                    $msgurl = $this->config['sy_wapdomain'];
                }
            } else {

                $msgurl = $this->config['sy_weburl'] . '/wap/';
            }
        } else {

            $msgurl = $this->config['sy_weburl'];
        }
        return $msgurl;
    }

    function index_action()
    {

        $UserinfoM  =   $this->MODEL('userinfo');

        $code       =   $_GET['code'];
        $msgUrl     =   $this->getMsgUrl();

        if ($_GET['login'] != '1') {
            if ($this->uid != '' && $this->username != '' && empty($code)) {

                $this->actMsg($msgUrl, '您已经登录了！');
            }
        }
        if ($this->config['sy_qqlogin'] != '1') {

            $this->actMsg($msgUrl, '对不起，QQ绑定已关闭！');
        }
        $this->seo('qqlogin');

        $app_id     =   $this->config['sy_qqappid'];
        $app_secret =   $this->config['sy_qqappkey'];
        $my_url     =   $this->config['sy_weburl'] . '/qqlogin.php';

        session_start();

        if (empty($code)) {

            $_SESSION['state']  =   md5(uniqid(rand(), TRUE));

            $dialog_url         =   'https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=' . $app_id . '&redirect_uri=' . urlencode($my_url) . '&state=' . $_SESSION['state'];

            echo("<script> top.location.href='" . $dialog_url . "'</script>");
        }
        if ($_GET['state'] == $_SESSION['state']) {

            $token_url      =   "https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&" . "client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url) . "&client_secret=" . $app_secret . "&code=" . $code;

            if (!function_exists('curl_init')) {

                echo "请开启CURL函数，否则将无法进行下一步操作！";
                die();
            }

            $response       =   CurlGet($token_url);

            if (strpos($response, "callback") !== false) {

                $lpos       =   strpos($response, "(");
                $rpos       =   strrpos($response, ")");
                $response   =   substr($response, $lpos + 1, $rpos - $lpos - 1);
                $msg        =   json_decode($response);

                if (isset($msg->error)) {

                    echo "<h3>error:</h3>" . $msg->error;
                    echo "<h3>msg  :</h3>" . $msg->error_description;
                    exit();
                }
            }

            $params = array();

            parse_str($response, $params);

            $graph_url = "https://graph.qq.com/oauth2.0/me?access_token=" . $params['access_token'];

            // QQ互联平台的移动应用和网站应用打通之后可以获取unionid
            if ($this->config['sy_qqdt'] == 1) {

                $graph_url .= "&unionid=1";
            }

            $str        =   CurlGet($graph_url);

            if (strpos($str, "callback") !== false) {

                $lpos   =   strpos($str, "(");
                $rpos   =   strrpos($str, ")");
                $str    =   substr($str, $lpos + 1, $rpos - $lpos - 1);
            }
            $user       =   json_decode($str);

            if (isset($user->error)) {

                echo "<h3>error:</h3>" . $user->error;
                echo "<h3>msg  :</h3>" . $user->error_description;
                exit();
            }
            if ($user->openid != "") {

                $qqwhere['qqid']    =   $user->openid;

                if (!empty($user->unionid)) {
                    $qqwhere['qqunionid']   =   array('=', $user->unionid, 'OR');
                }
                $userinfo           =   $UserinfoM->getInfo($qqwhere);

                if (is_array($userinfo)) {
                    if ($userinfo['usertype'] > 0) {
                        if ($userinfo['status'] == '2' || $userinfo['status'] == '4') {

                            $this->ACT_msg(Url(), '您的帐号被锁定，请联系客服解除锁定！');
                            exit();
                        }
                        $qqdata = array(
                            'login_date' => time()
                        );
                        if ($user->unionid) {
                            $qqdata['qqunionid'] = $user->unionid;
                        }
                        $userwhere['uid'] = $userinfo['uid'];

                        $UserinfoM->upInfo($userwhere, $qqdata);

                        // 会员日志，记录手动登录
                        $LogM       =   $this->MODEL('log');
                        $LogM->addMemberLog($userinfo['uid'], $userinfo['usertype'], 'PC QQ登录成功');

                        $logtime    =   date("Ymd", $userinfo['login_date']);
                        $nowtime    =   date("Ymd", time());

                        if ($this->config['resume_sx'] == 1 && $userinfo['usertype'] == 1) {
                            $resumeM    =   $this->MODEL('resume');
                            $resume     =   $resumeM->getResumeInfo(array('uid' => $userinfo['uid']), array('field' => '`def_job`'));
                            if ($resume['def_job']) {
                                $resumeM->upInfo(array('id' => $resume['def_job']), array('eData' => array('lastupdate' => time())));
                                $resumeM->upResumeInfo(array('uid' => $userinfo['uid']), array('rData' => array('lastupdate' => time()), 'port' => 1));
                            }
                        }

                        if ($logtime != $nowtime) {
                            $this->MODEL('integral')->invtalCheck($userinfo['uid'], $userinfo['usertype'], "integral_login", "会员登录", 22);
                            $logdata['uid']         =   $userinfo['uid'];
                            $logdata['usertype']    =   $userinfo['usertype'];
                            $logdata['did']         =   $userinfo['did'];
                            $logdata['content']     =   'WAP微信登录';
                            $LogM->addLoginlog($logdata);
                        }
                    }
                    if ($this->config['sy_uc_type'] == "uc_center") {

                        $this->obj->uc_open();
                        $user = uc_get_user($userinfo['username']);
                        $ucsynlogin = uc_user_synlogin($user[0]);
                        $this->cookie->unset_cookie();
                        $this->cookie->add_cookie($userinfo['uid'], $userinfo['username'], $userinfo['salt'], $userinfo['email'], $userinfo['password'], $userinfo['usertype'], $this->config['sy_logintime'], $userinfo['did']);
                        $this->actMsg($msgUrl, "登录成功！" . $ucsynlogin);
                    } else {

                        $this->cookie->unset_cookie();
                        $this->cookie->add_cookie($userinfo['uid'], $userinfo['username'], $userinfo['salt'], $userinfo['email'], $userinfo['password'], $userinfo['usertype'], $this->config['sy_logintime'], $userinfo['did']);
                        $this->actMsg($msgUrl, "登录成功！");
                    }

                } else {

                    $_SESSION['qq']["openid"]       =   $user->openid;
                    $_SESSION['qq']["unionid"]      =   $user->unionid;
                    $_SESSION['qq']["tooken"]       =   $params['access_token'];
                    $_SESSION['qq']["logininfo"]    =   "您已登录QQ，请绑定您的帐户！";

                    if ($this->uid) {

                        $data1  =   array(
                            'qqid' => ''
                        );
                        $where1['qqid'] =   $_SESSION['qq']["openid"];
                        if (!empty($_SESSION['qq']["unionid"])) {
                            $where1['qqunionid']    =   array('=', $_SESSION['qq']["unionid"], 'OR');
                        }

                        $UserinfoM->upInfo($where1, $data1);

                        $data2  =   array(
                            'qqid'      =>  $_SESSION['qq']["openid"],
                            'qqunionid' =>  $_SESSION['qq']["unionid"],
                        );

                        $where2['uid']  =   $this->uid;
                        $UserinfoM->upInfo($where2, $data2);
                        $this->actMsg($msgUrl . "/member/index.php?c=binding", "QQ 登录绑定成功！");
                    } else {

                        $GetUrl =   "https://graph.qq.com/user/get_user_info?oauth_consumer_key=" . $this->config['sy_qqappid'] . "&access_token=" . $_SESSION['qq']['tooken'] . "&openid=" . $_SESSION['qq']['openid'] . "&format=json";

                        $ch     =   curl_init();

                        curl_setopt($ch, CURLOPT_URL, $GetUrl);
                        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
                        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

                        $str    =   curl_exec($ch);
                        curl_close($ch);
                        $user   =   json_decode($str, true);

                        if ($user['nickname']) {

                            $_SESSION['qq']['nickname'] =   $user['nickname'];
                            $_SESSION['qq']['pic']      =   $user['figureurl_qq_2'];
                        } else {

                            $this->actMsg($msgUrl, "用户信息获取失败，请重新登录QQ！");
                        }

                        header("location:" . Url("qqconnect", array("c" => "qqbind", "type" => 'ba')));
                    }
                }
            }
        } else {

            echo("The state does not match. You may be a victim of CSRF.");
        }
    }

    function qqbind_action()
    {

        $this->yunset('qqlogin');
        $this->yun_tpl(array('index'));
    }

    /**
     * @desc 邮箱认证
     */
    function cert_action()
    {

        $id = $_GET['id'];
        $arr = @explode("|", base64_decode($id));
        $arr[0] = intval($arr[0]);//uid
        $arr[1] = intval($arr[1]);//随机吗
        $arr[3] = trim($arr[3]);//邮件账号

        if (!CheckRegEmail($arr[3])) {

            $this->ACT_msg($_SERVER['HTTP_REFERER'], "非法操作！", 8);

        } elseif ($id && is_array($arr) && $arr[0] && $arr[2] == $this->config['coding']) {

            $CompanyM = $this->MODEL('company');
            $UserinfoM = $this->MODEL('userinfo');

            $user = $UserinfoM->getInfo(array('uid' => $arr[0]), array('field' => 'usertype'));

            $data = array(
                'usertype' => $user['usertype'],
                'email' => $arr[3]
            );

            $err = $CompanyM->upCertInfo(array('uid' => $arr[0], 'check2' => $arr[1], 'check' => $arr[3]), array('status' => '1'), $data);

            if ($err['errcode'] == '9') {

                $UA = strtoupper($_SERVER['HTTP_USER_AGENT']);

                if (strpos($UA, 'WINDOWS NT') !== false) {

                    header('location:' . $this->config['sy_weburl'] . '/index.php?m=register&c=ok&type=4');

                } else {
                    $this->ACT_msg(Url('wap'), $err['msg'], 9);
                }
            } else {
                $this->ACT_msg($_SERVER['HTTP_REFERER'], $err['msg'], 8);
            }
        } else {
            $this->ACT_msg($_SERVER['HTTP_REFERER'], "非法操作！", 8);
        }
    }

    function mcert_action()
    {

        $UserinfoM = $this->MODEL('userinfo');

        $id = $_GET['id'];
        $arr = @explode("|", base64_decode($id));
        $arr[0] = intval($arr[0]);

        if ($id && is_array($arr) && $arr[0] && $arr[2] == $this->config['coding']) {

            $where['uid'] = $arr[0];

            $resumedata = array(
                'email_status' => 1
            );
            $memberdata = array(
                'email_status' => 1
            );
            $userinfoM = $this->MODEL('userinfo');
            $nid = $userinfoM->UpdateUserInfo(array('usertype' => 1, 'post' => $resumedata), $where);

            $userinfoM->upInfo($where, $memberdata);

            $nid ? $this->ACT_msg(Url('login'), "激活成功，请登录！", 9) : $this->ACT_msg($this->config['sy_weburl'], "激活失败，联系管理员认证！", 8);

        } else {

            $this->ACT_msg($_SERVER['HTTP_REFERER'], "非法操作！", 8);

        }

    }
}

?>