예제 #1
0
function insenz_register($type)
{
    global $insenz, $db, $tablepre, $_DCACHE, $boardurl, $timestamp, $authkey, $discuz_uid, $discuz_user, $response;
    checkip();
    if ($type == 1) {
        @extract($insenz['profile']);
        foreach (array('username', 'password', 'name', 'idcard', 'email1', 'email2', 'qq', 'msn', 'tel1', 'tel2', 'tel3', 'mobile', 'fax1', 'fax2', 'fax3', 'country', 'province', 'city', 'address', 'postcode', 'alipay') as $item) {
            ${$item} = stripslashes(${$item});
        }
    } else {
        $username = $insenz['profile']['username'];
        $password = $insenz['profile']['password'];
    }
    $insenz['notify'] = is_array($insenz['notify']) ? $insenz['notify'] : array(2);
    $insenz['hardadstatus'] = is_array($insenz['hardadstatus']) ? $insenz['hardadstatus'] : array(1, 2, 3, 4, 5);
    $query = $db->query("SELECT COUNT(*) FROM {$tablepre}members");
    $members = $db->result($query, 0);
    $query = $db->query("SELECT COUNT(*) FROM {$tablepre}members WHERE posts>0");
    $post_members = $db->result($query, 0);
    $query = $db->query("SELECT COUNT(*) FROM {$tablepre}threads WHERE displayorder>='0'");
    $threads = $db->result($query, 0);
    $query = $db->query("SELECT COUNT(*) FROM {$tablepre}posts WHERE invisible='0'");
    $posts = $db->result($query, 0);
    $date = getdate($timestamp);
    $yesterday_end = mktime(0, 0, 0, $date['mon'], $date['mday'], $date['year']);
    $lastweek_start = $yesterday_end - 7 * 86400;
    $lastweek_pertopics = $lastweek_perposts = $forumstats = array();
    $query = $db->query("SELECT DISTINCT(fid) AS fid, COUNT(tid) AS topics FROM {$tablepre}threads WHERE dateline BETWEEN {$lastweek_start} AND {$yesterday_end} GROUP BY fid ORDER BY topics DESC");
    while ($p = $db->fetch_array($query)) {
        $lastweek_pertopics[$p['fid']] = ceil($p['topics'] / 7);
    }
    $query = $db->query("SELECT DISTINCT(fid) AS fid, COUNT(pid) AS posts FROM {$tablepre}posts WHERE dateline BETWEEN {$lastweek_start} AND {$yesterday_end} GROUP BY fid ORDER BY posts DESC");
    while ($p = $db->fetch_array($query)) {
        $lastweek_perposts[$p['fid']] = ceil($p['posts'] / 7);
    }
    $query = $db->query("SELECT f.fid, f.fup, f.type, f.name, f.threads, f.posts, f.displayorder, f.status, f.simple, ff.description, ff.redirect FROM {$tablepre}forums f LEFT JOIN {$tablepre}forumfields ff ON f.fid=ff.fid");
    while ($forum = $db->fetch_array($query)) {
        $fid = $forum['fid'];
        unset($forum['fid']);
        $forum['lastweek_pertopics'] = intval($lastweek_pertopics[$fid]);
        $forum['lastweek_perposts'] = intval($lastweek_perposts[$fid]);
        $forumstats[$fid] = $forum;
    }
    $postdata = '<cmd id="register"><handle>' . insenz_convert($username) . '</handle>
		<passwd>' . $password . '</passwd>';
    if ($type == 1) {
        $postdata .= '<name>' . insenz_convert($name) . '</name>
			<idcard>' . $idcard . '</idcard>
			<tel>' . $tel1 . '-' . $tel2 . '-' . $tel3 . '</tel>
			<mobile>' . $mobile . '</mobile>
			<fax>' . $fax1 . '-' . $fax2 . '-' . $fax3 . '</fax>
			<email>' . $email1 . '</email>
			<email2>' . $email2 . '</email2>
			<qq>' . $qq . '</qq>
			<msn>' . $msn . '</msn>
			<alipay>' . $alipay . '</alipay>
			<country>' . $country . '</country>
			<province>' . $province . '</province>
			<city>' . $city . '</city>
			<addr>' . insenz_convert($address) . '</addr>
			<postcode>' . $postcode . '</postcode>';
    }
    $postdata .= '<url>' . $boardurl . '</url>
		<s_key>' . md5($authkey . 'Discuz!INSENZ') . '</s_key>
		<bbname>' . insenz_convert($_DCACHE['settings']['bbname']) . '</bbname>
		<members>' . $members . '</members>
		<post_members>' . $post_members . '</post_members>
		<topics>' . $threads . '</topics>
		<posts>' . $posts . '</posts>
		<softadstatus>' . intval($insenz['softadstatus']) . '</softadstatus>
		<notify>' . implode(',', $insenz['notify']) . '</notify>
		<autoextend>' . intval($insenz['autoextend']) . '</autoextend>
		<hardadstatus>' . implode(',', $insenz['hardadstatus']) . '</hardadstatus>
		<relatedadstatus>' . intval($insenz['relatedadstatus']) . '</relatedadstatus>
		<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_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');
    } 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');
    }
}
예제 #2
0
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');
    }
}
예제 #3
0
				function checkform(theform) {
					for(var i = 0; i < 4; i++) {
						if(theform.reason[i].checked) return true;
					}
					alert(\'' . $lang['insenz_campaign_input_reason'] . '\');
					return false;
				}
				</script>';
            cpfooter();
            dexit();
        } else {
            if (!($reason = intval($reason))) {
                cpmsg('insenz_campaign_input_reason');
            }
            $data = '<cmd id="ignoreVirtualForum">' . '<c_id>' . $c_id . '</c_id>' . '<reason>' . $reason . '</reason>' . '</cmd>';
            $response = insenz_request($data);
            if ($response['status']) {
                cpmsg($response['data']);
            } else {
                $response = $response['data'];
                if ($response['response'][0]['status'][0]['VALUE'] == 1) {
                    cpmsg(insenz_convert($response['response'][0]['reason'][0]['VALUE'], 0));
                }
            }
            cpmsg('insenz_campaign_specified_ignored', 'admincp.php?action=insenz');
        }
    } else {
        if ($c_status == 6) {
            $onlineids = 0;
            $query = $db->query("SELECT id FROM {$tablepre}campaigns WHERE type='4' AND status='2'");
            while ($c = $db->fetch_array($query)) {
예제 #4
0
    $campaign = $db->fetch_first("SELECT autoupdate, lastupdated FROM {$tablepre}campaigns WHERE id='{$cid}' AND type=4");
    if (!$campaign || !$campaign['autoupdate'] || $timestamp - $campaign['lastupdated'] < 600) {
        exit;
    }
    $response = insenz_request('forum.php', '<cmd id="getForumDetails"><c_id>' . $cid . '</c_id></cmd>');
    $threads = intval($response[0]['threads'][0]['VALUE']);
    $posts = intval($response[0]['posts'][0]['VALUE']);
    $lastpost = insenz_convert($response[0]['lastpost'][0]['VALUE'], 0);
    $db->query("UPDATE {$tablepre}virtualforums SET threads='{$threads}', posts='{$posts}', lastpost='{$lastpost}' WHERE cid='{$cid}'");
    $db->query("UPDATE {$tablepre}campaigns SET lastupdated='{$timestamp}' WHERE id='{$cid}'");
} elseif (in_array($type, array(1, 2, 3)) && $cid) {
    $campaign = $db->fetch_first("SELECT tid, autoupdate, lastupdated FROM {$tablepre}campaigns WHERE id='{$cid}' AND type='{$type}'");
    if (!$campaign || !$campaign['autoupdate'] || $timestamp - $campaign['lastupdated'] < 600) {
        exit;
    }
    $response = insenz_request('campaign.php', '<cmd id="getTopicDetails"><c_id>' . $cid . '</c_id></cmd>');
    $replies = intval($response[0]['replies'][0]['VALUE']);
    $views = intval($response[0]['views'][0]['VALUE']);
    $lastpost = intval($response[0]['lastpost'][0]['VALUE']);
    $lastposter = insenz_convert($response[0]['lastposter'][0]['VALUE'], 0);
    $db->query("UPDATE {$tablepre}threads SET replies='{$replies}', views='{$views}', lastpost='{$lastpost}', lastposter='{$lastposter}' WHERE tid='{$campaign['tid']}'");
    $db->query("UPDATE {$tablepre}campaigns SET lastupdated='{$timestamp}' WHERE id='{$cid}'");
}
function insenz_request($script, $data)
{
    global $timestamp, $insenz;
    @(include_once DISCUZ_ROOT . './discuz_version.php');
    $authkey = $insenz['authkey'];
    $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);