📄 insenz.func.php
字号:
<virtualforumstatus>'.intval($insenz['virtualforumstatus']).'</virtualforumstatus>';
foreach($forumstats as $fid => $forum) {
$postdata .= '<board>
<board_id>'.$fid.'</board_id>
<parent_id>'.$forum['fup'].'</parent_id>
<board_type>'.$forum['type'].'</board_type>
<name>'.insenz_convert($forum['name']).'</name>
<topics>'.$forum['threads'].'</topics>
<posts>'.$forum['posts'].'</posts>
<lastweek_pertopics>'.$forum['lastweek_pertopics'].'</lastweek_pertopics>
<lastweek_perposts>'.$forum['lastweek_perposts'].'</lastweek_perposts>
<description>'.insenz_convert($forum['description']).'</description>
<status>'.$forum['status'].'</status>
<simple>'.$forum['simple'].'</simple>
<redirect>'.insenz_convert($forum['redirect']).'</redirect>
<displayorder>'.$forum['displayorder'].'</displayorder></board>';
}
$postdata .= '<type>'.($type == 1 ? 'register' : 'bind').'</type></cmd>';
unset($insenz['siteid']);
$response = insenz_request($postdata);
if($response['status']) {
insenz_alert($response['data']);
} else {
$response = $response['data'];
}
$status = $response['response'][0]['status'][0]['VALUE'];
if($status == 0) {
$insenz['authkey'] = $response['response'][0]['authkey'][0]['VALUE'];
$insenz['siteid'] = $response['response'][0]['site_id'][0]['VALUE'];
$insenz['uid'] = $discuz_uid;
$insenz['username'] = $discuz_userss;
$insenz['handle'] = $username;
insenz_updatesettings();
unset($insenz['profile'], $insenz['step']);
$db->query("REPLACE INTO {$tablepre}settings (variable, value) VALUES ('insenz', '".addslashes(serialize($insenz))."')");
require_once DISCUZ_ROOT.'./include/cache.func.php';
updatecache('settings');
insenz_cpmsg('insenz_register_succeed', $BASESCRIPT.'?action=insenz', 'succeed');
} else {
$response['reason'] = insenz_convert($response['response'][0]['reason'][0]['VALUE'], 0);
unset($insenz['authkey'], $insenz['siteid']);
$db->query("REPLACE INTO {$tablepre}settings (variable, value) VALUES ('insenz', '".addslashes(serialize($insenz))."')");
insenz_alert('insenz_register_failed');
}
}
function insenz_showsettings($do = '') {
global $insenz, $db, $tablepre, $discuz_user, $timestamp, $lang;
$type = array('basic' => $lang['insenz_settings_basic'], 'softad' => $lang['insenz_settings_softad'], 'hardad' => $lang['insenz_settings_hardad'], 'relatedad' => $lang['insenz_settings_relatedad'], 'virtualforum' => $lang['insenz_settings_virtualforum']);
if(!$do || $do == 'basic') {
$insenz['notify'] = is_array($insenz['notify']) ? $insenz['notify'] : array();
$insenz['notify'][2] = 1;
$insenz_notify = bindec(intval($insenz['notify'][2]).intval($insenz['notify'][1]));
$msgto = '';
if(!empty($insenz['msgtoid'])) {
$query = $db->query("SELECT username FROM {$tablepre}members WHERE uid='$insenz[msgtoid]'");
$msgto = $db->result($query, 0);
}
$msgto = $msgto ? $msgto : $discuz_userss;
$disabled = $insenz['notify'][1] ? 0 : 1;
if(!$do) {
showtitle($type['basic']);
} else {
showtableheader();
showtitle($type['basic']);
if(empty($insenz['handle'])) {
$response = insenz_request('<cmd id="queryhandle"></cmd>');
if($response['status']) {
$insenz['handle'] = '';
} else {
$insenz['handle'] = $response['data']['response'][0]['handle'][0]['VALUE'];
$db->query("REPLACE INTO {$tablepre}settings (variable, value) VALUES ('insenz', '".addslashes(serialize($insenz))."')");
}
}
if($insenz['handle']) {
showsetting('insenz_username', '', '', $insenz['handle']);
}
}
showsetting('insenz_settings_notify', array('notify', array($lang['insenz_settings_notify1'], $lang['insenz_settings_notify2']), array('onclick="this.form.msgto.disabled=this.checked?false:true;"', '')), $insenz_notify, 'binmcheckbox');
showsetting('insenz_settings_msgto', 'msgto', $msgto, 'text', $disabled);
}
if(!$do || $do == 'softad') {
$insenz['softadstatus'] = isset($insenz['softadstatus']) ? $insenz['softadstatus'] : 2;
$softadstatus1 = $insenz['softadstatus'] ? 1 : 0;
$softadstatus2 = $insenz['softadstatus'] == 2 ? 1 : 0;
$nextmodified = gmdate("$GLOBALS[dateformat] $GLOBALS[timeformat]", (empty($insenz['lastmodified']) || $insenz['lastmodified'] + 14 * 86400 < $timestamp ? $timestamp : $insenz['lastmodified'] + 14 * 86400) + $GLOBALS['timeoffset'] * 3600);
$admin_masks = $member_masks = array();
if($insenz['admin_masks'] && is_array($insenz['admin_masks'])) {
$query = $db->query("SELECT username FROM {$tablepre}members WHERE uid IN ('".implode("','", $insenz['admin_masks'])."')");
while($member = $db->fetch_array($query)) {
$admin_masks[] = $member['username'];
}
}
$admin_masks = stripslashes(implode("\n", $admin_masks));
if($insenz['member_masks'] && is_array($insenz['member_masks'])) {
$query = $db->query("SELECT username FROM {$tablepre}members WHERE uid IN ('".implode("','", $insenz['member_masks'])."')");
while($member = $db->fetch_array($query)) {
$member_masks[] = $member['username'];
}
}
$member_masks = stripslashes(implode("\n", $member_masks));
if(!$do) {
showtitle($type['softad']);
} else {
showtableheader();
showtitle($type['softad']);
}
showsetting('insenz_settings_softadstatus1', 'softadstatus1', $softadstatus1, 'radio', '', 1);
showsetting('insenz_settings_softadstatus2', 'softadstatus2', $softadstatus2, 'radio');
showsetting('insenz_settings_admins', 'admins', $insenz['admin_masks'] ? $admin_masks : '', 'textarea');
showsetting('insenz_settings_members', 'members', $insenz['member_masks'] ? $member_masks : '', 'textarea');
showtagfooter('tbody');
}
if(!$do || $do == 'hardad') {
$availableadvs = array(
1 => $lang['insenz_settings_availableadvs1'],
2 => $lang['insenz_settings_availableadvs2'],
3 => $lang['insenz_settings_availableadvs3'],
4 => $lang['insenz_settings_availableadvs4'],
5 => $lang['insenz_settings_availableadvs5'],
6 => $lang['insenz_settings_availableadvs6'],
7 => $lang['insenz_settings_availableadvs7'],
8 => $lang['insenz_settings_availableadvs8']
);
$insenz['availableadvs'] = is_array($insenz['availableadvs']) ? $insenz['availableadvs'] : array(1, 2, 3, 4, 5);
$insenz['hardadstatus'] = is_array($insenz['hardadstatus']) ? $insenz['hardadstatus']: array(1, 2, 3, 4, 5);
$insenz_availableadvs = array();
foreach($insenz['availableadvs'] as $ad) {
$insenz_availableadvs[$ad] = $availableadvs[$ad];
}
if(!$do) {
showtitle($type['hardad']);
} else {
showtableheader();
showtitle($type['hardad']);
}
$insenz_hardadstatus = '';
for($i = count($insenz['availableadvs']); $i >= 1; $i--) {
$insenz_hardadstatus .= in_array($i, $insenz['hardadstatus']) ? 1 : 0;
}
$insenz_hardadstatus = bindec($insenz_hardadstatus);
showsetting('insenz_settings_hardadstatus', array('hardadstatus', $insenz_availableadvs), $insenz_hardadstatus, 'binmcheckbox');
}
if(!$do || $do == 'relatedad') {
$insenz['relatedadstatus'] = isset($insenz['relatedadstatus']) ? $insenz['relatedadstatus'] : 1;
if(!$do) {
showtitle($type['relatedad']);
} else {
showtableheader();
showtitle($type['relatedad']);
}
showsetting('insenz_settings_relatedadstatus', 'relatedadstatus', $insenz['relatedadstatus'], 'radio');
}
if(!$do || $do == 'virtualforum') {
$insenz['virtualforumstatus'] = isset($insenz['virtualforumstatus']) ? $insenz['virtualforumstatus'] : 1;
if(!$do) {
showtitle($type['virtualforum']);
} else {
showtableheader();
showtitle($type['virtualforum']);
}
showsetting('insenz_settings_virtualforumstatus', 'virtualforumstatus', $insenz['virtualforumstatus'], 'radio');
}
}
function insenz_updatesettings() {
global $insenz, $response;
$insenz['availableadvs'] = explode(',', $response['response'][0]['availableadvs'][0]['VALUE']);
$insenz['hardadstatus'] = array_intersect(is_array($insenz['hardadstatus']) ? $insenz['hardadstatus'] : array(), $insenz['availableadvs']);
if($insenz['relatedadstatus']) {
$insenz['topicrelatedad'] = insenz_convert($response['response'][0]['topicrelatedad'][0]['VALUE'], 0);
$insenz['traderelatedad'] = insenz_convert($response['response'][0]['traderelatedad'][0]['VALUE'], 0);
$insenz['relatedtrades'] = insenz_convert($response['response'][0]['relatedtrades'][0]['VALUE'], 0);
} else {
$insenz['topicrelatedad'] = $insenz['traderelatedad'] = $insenz['relatedtrades'] = '';
}
$jsurl = $response['response'][0]['jsurl'][0]['VALUE'];
$insenz['jsurl'] = $jsurl ? $jsurl : $insenz['jsurl'];
if(isset($response['response'][0]['topicstatus'])) {
$insenz['topicstatus'] = intval($response['response'][0]['topicstatus'][0]['VALUE']);
}
$insenz['status'] = $insenz['softadstatus'] || $insenz['hardadstatus'] || $insenz['topicrelatedad'] || $insenz['traderelatedad'] || $insenz['topicstatus'];
}
function insenz_request($data, $return = TRUE, $fp = '') {
global $insenz, $timestamp;
@include_once DISCUZ_ROOT.'./discuz_version.php';
$authkey = !empty($insenz['authkey']) ? $insenz['authkey'] : 'Discuz!INSENZ';
$t_hex = sprintf("%08x", $timestamp);
$postdata = '<?xml version="1.0" encoding="UTF'.'-8"?><request insenz_version="'.INSENZ_VERSION.'" discuz_version="'.DISCUZ_VERSION.' - '.DISCUZ_RELEASE.'">'.$data.'</request>';
$postdata = insenz_authcode($t_hex.md5($authkey.$postdata.$t_hex).$postdata, 'ENCODE', $authkey);
if(!$fp && !$fp = @fsockopen($insenz['host'], 80)) {
if(!$return) {
return;
} else {
return array('status' => 1, 'data' => lang('insenz_connect_failed'));
}
}
$insenz['siteid'] = intval($insenz['siteid']);
@fwrite($fp, "POST http://$insenz[url]/discuz.php?s_id=$insenz[siteid] HTTP/1.0\r\n");
@fwrite($fp, "Host: $insenz[host]\r\n");
@fwrite($fp, "Content-Type: file\r\n");
@fwrite($fp, "Content-Length: " . strlen($postdata) ."\r\n\r\n");
@fwrite($fp, $postdata);
if(!$return) {
@fclose($fp);
return;
}
$res = '';
$isheader = 1;
while(!feof($fp)) {
$buffer = @fgets($fp, 1024);
if(!$isheader) {
$res .= $buffer;
} elseif(trim($buffer) == '') {
$isheader = 0;
}
}
@fclose($fp);
if(empty($res)) {
return array('status' => 1, 'data' => lang('insenz_connect_failed'));
}
if(!$response = insenz_authcode($res, 'DECODE', $authkey)) {
return array('status' => 1, 'data' => lang('insenz_connect_failed'));
}
$checkKey = substr($response, 0, 40);
$response = substr($response, 40);
$t_hex = substr($checkKey, 0, 8);
$t = base_convert($t_hex, 16, 10);
if(abs($timestamp - $t) > 1200) {
return array('status' => 1, 'data' => lang('insenz_connect_timeout'));
} elseif($checkKey != $t_hex.md5($authkey.$response.$t_hex)) {
return array('status' => 1, 'data' => 'Invalid Key or Data');
}
require_once DISCUZ_ROOT.'./include/xmlparser.class.php';
$xmlparse = new XMLParser;
$xmlparseddata = $xmlparse->getXMLTree($response);
if(!is_array($xmlparseddata) || !is_array($xmlparseddata['response'])) {
return array('status' => 1, 'data' => lang('insenz_transport_failed'));
}
return array('status' => 0, 'data' => $xmlparseddata);
}
function insenz_alert($message, $focusobj = '') {
extract($GLOBALS, EXTR_SKIP);
include language('admincp.msg');
eval("\$message = \"".(isset($msglang[$message]) ? $msglang[$message] : $message)."\";");
echo '<script type="text/JavaScript">alert(\''.str_replace('\'', '\\\'', $message).'\');'.($focusobj ? 'parent.document.form1.'.$focusobj.'.focus();' : '').'</script>';
exit;
}
function insenz_cpmsg($message, $url, $type = '') {
extract($GLOBALS, EXTR_SKIP);
include language('admincp.msg');
eval("\$message = \"".(isset($msglang[$message]) ? $msglang[$message] : $message)."\";");
switch($type) {
case 'succeed': $classname = 'infotitle2';break;
case 'error': $classname = 'infotitle3';break;
case 'loading': $classname = 'infotitle1';break;
default: $classname = 'marginbot normal';break;
}
$message = '<h4 class="'.$classname.'">'.$message.'</h4><p class="marginbot"><a href="'.$url.'" class="lightlink">'.lang('message_redirect').'</a></p>';
$url = transsid($url);
echo '<script type="text/JavaScript">parent.setTimeout("redirect(\''.$url.'\');", 2000);parent.$("cpcontainer").innerHTML = \'<h3>'.$lang['discuz_message'].'</h3><div class="infobox">'.$message.'</div>\';</script>';
dexit();
}
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -