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', ' ', 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">
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; }