Exemple #1
0
function lib_changyan(&$ctag, &$refObj)
{
    global $dsql, $envs;
    //属性处理
    $attlist = "type|code,config|,class|_DEDECY,style|";
    FillAttsDefault($ctag->CAttribute->Items, $attlist);
    extract($ctag->CAttribute->Items, EXTR_SKIP);
    $reval = "";
    if (!$dsql->IsTable("#@__plus_changyan_setting")) {
        return '没安装畅言模块';
    }
    $client_id = changyan_get_setting('appid');
    if (empty($client_id)) {
        return '尚未注册畅言帐号,请到后台注册';
    }
    if ($type == 'code' or $type == 'code2') {
        $reval .= "<div class='{$class}' style='{$style}'>";
        $prefix = 'changyan';
        $key = 'code';
        $row = GetCache($prefix, $key);
        if (!is_array($row)) {
            $appid = changyan_get_setting('appid');
            $user = changyan_get_setting('user');
            $sign = changyan_gen_sign($user);
            $result = changyan_getcode(CHANGYAN_CLIENT_ID, $user, false, $sign, $appid);
            $row['reval'] = htmlspecialchars($result['code']);
            SetCache($prefix, $key, $row, 60 * 60 * 1);
        }
        if (!empty($config)) {
            $config_arr = array();
            $configs = explode(',', $config);
            if (count($configs) > 0) {
                foreach ($configs as $c) {
                    $item = explode(':', $c);
                    $config_arr[$item[0]] = $item[1];
                }
            }
            $config_str = json_encode($config_arr);
            $reval .= <<<EOT
<script>
    var_config={$config_str};
</script>
EOT;
        }
        $reval .= htmlspecialchars_decode($row['reval']);
        $reval = str_replace("id='SOHUCS'", "id='SOHUCS' sid='{$refObj->ArcID}'", $reval);
        if ($type == 'code2') {
            $reval = preg_replace("#window.SCS_NO_IFRAME[ ]?=[ ]?true;#i", "", $reval);
        }
        $reval = str_replace("<script>", "</div><script>", $reval);
    } elseif ($type == 'count') {
        if (!$GLOBALS['changyan_count_js']) {
            $reval .= "<script type=\"text/javascript\" src=\"http://assets.changyan.sohu.com/upload/plugins/plugins.count.js\"></script>";
        }
        $reval .= "<a href=\"#SOHUCS\" id=\"changyan_count_unit\"></a>";
        $GLOBALS['changyan_count_js'] = TRUE;
    }
    return $reval;
}
function changyan_islogin()
{
    if (empty($_SESSION['changyan'])) {
        return FALSE;
    }
    $user = changyan_get_setting('user');
    $pwd = changyan_get_setting('pwd');
    if (empty($user) || empty($pwd)) {
        return FALSE;
    }
    return TRUE;
}
 function run($step = 0)
 {
     global $dsql, $update_sqls, $cfg_db_language, $cfg_webname;
     if (!file_exists(DEDEINC . '/helpers/changyan.helper.php')) {
         $this->errmsg = '未成功安装畅言模块文件';
         return FALSE;
     }
     helper('changyan');
     if (!$dsql->IsTable("#@__plus_changyan_setting")) {
         $this->errmsg = '未成功初始化畅言模块所需数据库';
         return FALSE;
     }
     if (empty($version)) {
         $version = '0.0.1';
     }
     if (version_compare($version, CHANGYAN_VER, '<')) {
         $mysql_version = $dsql->GetVersion(TRUE);
         foreach ($update_sqls as $ver => $sqls) {
             if (version_compare($ver, $version, '<')) {
                 continue;
             }
             foreach ($sqls as $sql) {
                 $sql = preg_replace("#ENGINE=MyISAM#i", 'TYPE=MyISAM', $sql);
                 $sql41tmp = 'ENGINE=MyISAM DEFAULT CHARSET=' . $cfg_db_language;
                 if ($mysql_version >= 4.1) {
                     $sql = preg_replace("#TYPE=MyISAM#i", $sql41tmp, $sql);
                 }
                 $dsql->ExecuteNoneQuery($sql);
             }
             changyan_set_setting('version', $ver);
             $version = changyan_get_setting('version');
         }
         $isv_app_key = changyan_get_isv_app_key();
     }
     $db_user = changyan_get_setting('user');
     if (!empty($db_user)) {
         $this->errmsg = '已经初始化畅言账号,无需再进行初始化';
         return FALSE;
     }
     $sign = changyan_gen_sign(CHANGYAN_CLIENT_ID);
     $url = $_SERVER['SERVER_NAME'];
     $isv_name = cn_substr($cfg_webname, 20);
     $paramsArr = array('client_id' => CHANGYAN_CLIENT_ID, 'isv_name' => changyan_autoCharset($isv_name), 'url' => 'http://' . $url, 'sign' => $sign);
     $rs = changyan_http_send(CHANGYAN_API_AUTOREG, 0, $paramsArr);
     $result = json_decode($rs, TRUE);
     if ($result['status'] == 0) {
         // 保存appid,id信息
         changyan_set_setting('user', $result['user']);
         changyan_set_setting('appid', $result['appid']);
         changyan_set_setting('id', $result['id']);
         changyan_set_setting('isv_app_key', $result['isv_app_key']);
         changyan_set_setting('isv_id', $result['isv_id']);
         changyan_clearcache();
         $passwd = changyan_mchStrCode($result['passwd'], 'ENCODE');
         changyan_set_setting('pwd', $passwd);
         return TRUE;
     } else {
         if ($step > 3) {
             $this->errmsg = '无法成功初始化畅言模块';
             return FALSE;
         }
         $step++;
         return $this->run($step);
     }
 }
</table>
{$login_str}
{$change_isv_id}
EOT;
        $wintitle = '畅言评论管理';
        $wecome_info = '畅言评论模块 》';
        $win = new OxWindow();
        $win->AddTitle($wintitle);
        $win->AddMsgItem($msg);
        $winform = $win->GetWindow('hand', '&nbsp;', false);
        $win->Display();
        exit;
    } else {
        unset($_SESSION['changyan']);
        unset($_SESSION['user']);
        $user = changyan_get_setting('user');
        $version = CHANGYAN_VER;
        $changyan_reg_url = CHANGYAN_REG_URL;
        $changyan_forget_pwd_url = CHANGYAN_FORGET_PWD_URL;
        $changyan_update_url = CHANGYAN_UPDATE_URL;
        if (empty($user)) {
            $user = '';
        }
        $msg = <<<EOT
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset={$cfg_soft_lang}">
<title>畅言评论管理</title>
<link rel="stylesheet" type="text/css" href="{$cfg_plus_dir}/img/base.css">
</head>
<body background='{$cfg_plus_dir}/img/allbg.gif' leftmargin="8" topmargin='8'>
    </tr>
  </table>
  </td>
  </tr>
</table>
</body>
</html>
EOT;
    if (changyan_islogin()) {
        $changyan_ver = CHANGYAN_VER;
        $login_url = CHANGYAN_API_SETCOOKIE . '?client_id=' . CHANGYAN_CLIENT_ID . '&token=' . $_SESSION['changyan'];
        $login_str = <<<EOT
<iframe src="{$login_url}" scrolling="no" width="0" height="0" style="border:none"></iframe>
EOT;
        $isv_app_key = changyan_get_setting('isv_app_key');
        $isv_id = changyan_get_setting('isv_id');
        $isv_id = intval($isv_id);
        $changge_isv_url = CHANGYAN_API_CHANGE_ISV . $isv_id;
        $isv_app_key = changyan_get_isv_app_key();
        $change_isv_id = <<<EOT
<div id="change_isv"></div>
<script type="text/javascript">
setTimeout(function(){var change_isv_div = document.getElementById("change_isv");change_isv_div.innerHTML='<iframe src="{$changge_isv_url}" scrolling="no" width="0" height="0" style="border:none"></iframe>';},100);
</script>
EOT;
        if (!empty($forward)) {
            echo <<<EOT
            <div style="font-size: 12px;padding: 20px;border: 1px solid #DDD;">畅言模块自动登录中,请耐心等待……</div>
{$login_str}
{$change_isv_id}
<script type="text/javascript">
Exemple #6
0
function changyan_get_isv_app_key()
{
    global $client_id;
    $isv_app_key = changyan_get_setting('isv_app_key');
    if (!empty($isv_app_key)) {
        return $isv_app_key;
    } else {
        return FALSE;
    }
    //接口下线,直接通过设定appinfo接口
    $user = changyan_get_setting('user');
    if (!empty($isv_app_key)) {
        return $isv_app_key;
    }
    $isv_app_key = '';
    $sign = changyan_gen_sign($user);
    $paramsArr = array('client_id' => CHANGYAN_CLIENT_ID, 'user' => $user, 'user_appid' => $client_id, 'sign' => $sign);
    $rs = changyan_http_send(CHANGYAN_API_GETAPPKEY . '?' . http_build_query($paramsArr));
    $rs = json_decode($rs, TRUE);
    if (isset($rs['isv_app_key'])) {
        $isv_app_key = $rs['isv_app_key'];
    }
    changyan_set_setting('isv_app_key', $isv_app_key);
    return $isv_app_key;
}