⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 insenz.func.php

📁 Discuz_7.0.0 是一款社区程序源码!! 国内80 的站长使用此程序
💻 PHP
📖 第 1 页 / 共 2 页
字号:
		<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 + -