2016-12-15 08:20:54 -05:00
|
|
|
<?php
|
|
|
|
|
|
|
|
/**
|
|
|
|
* [Discuz!] (C)2001-2099 Comsenz Inc.
|
|
|
|
* This is NOT a freeware, use is subject to license terms
|
|
|
|
*
|
|
|
|
* $Id: wechat.class.php 36284 2016-12-12 00:47:50Z nemohou $
|
|
|
|
*/
|
|
|
|
|
|
|
|
if (!defined('IN_DISCUZ')) {
|
|
|
|
exit('Access Denied');
|
|
|
|
}
|
|
|
|
|
|
|
|
class plugin_wechat {
|
|
|
|
|
|
|
|
function plugin_wechat() {
|
|
|
|
include_once template('wechat:module');
|
|
|
|
}
|
|
|
|
|
|
|
|
function common() {
|
|
|
|
global $_G;
|
|
|
|
if(!$_G['wechat']['setting']) {
|
|
|
|
$_G['wechat']['setting'] = unserialize($_G['setting']['mobilewechat']);
|
|
|
|
}
|
|
|
|
if($_G['uid']) {
|
|
|
|
if($_G['wechat']['setting']['wechat_qrtype']) {
|
|
|
|
$_G['wechatuser'] = C::t('#wechat#common_member_wechatmp')->fetch($_G['uid']);
|
|
|
|
if($_G['wechatuser'] && !$_G['wechatuser']['status']) {
|
|
|
|
$_G['wechatuser']['isregister'] = 1;
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
$_G['wechatuser'] = C::t('#wechat#common_member_wechat')->fetch($_G['uid']);
|
|
|
|
}
|
|
|
|
if($_G['wechatuser'] && $wechatuser['status'] == 1) {
|
|
|
|
C::t('#wechat#common_member_wechat')->update($_G['uid'], array('status' => 0));
|
|
|
|
require_once libfile('function/member');
|
|
|
|
clearcookies();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if(!$_G['uid'] && !defined('IN_MOBILE') && $_G['wechat']['setting']['wsq_allow']) {
|
|
|
|
$_G['setting']['pluginhooks']['global_login_text'] .= wechat_tpl_login_bar();
|
|
|
|
}
|
|
|
|
|
|
|
|
$_G['Plang'] = $_G['setting']['wechatviewpluginid'] ? lang('plugin/'.$_G['setting']['wechatviewpluginid']) : array();
|
|
|
|
|
|
|
|
if(!$_G['Plang'] || !$_G['wechatuser']) {
|
|
|
|
unset($_G['setting']['plugins']['spacecp']['wechat:spacecp']);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function deletemember($param) {
|
|
|
|
$uids = $param['param'][0];
|
|
|
|
$step = $param['step'];
|
|
|
|
if ($step == 'check' && $uids && is_array($uids)) {
|
|
|
|
foreach($uids as $uid) {
|
|
|
|
C::t('#wechat#common_member_wechat')->delete($uid);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function global_login_extra() {
|
|
|
|
global $_G;
|
|
|
|
if(!$_G['Plang'] || $_G['inshowmessage'] || !$_G['wechat']['setting']['wsq_allow']) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return wechat_tpl_login_extra_bar();
|
|
|
|
}
|
|
|
|
|
|
|
|
function global_usernav_extra1() {
|
|
|
|
global $_G;
|
|
|
|
if(!$_G['Plang'] || $_G['wechatuser'] || !$_G['wechat']['setting']['wsq_allow'] || !$_G['uid']) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return wechat_tpl_user_bar();
|
|
|
|
}
|
|
|
|
|
|
|
|
function global_footer() {
|
|
|
|
global $_G;
|
|
|
|
if($_G['wechat']['setting']['wechat_float_qrcode'] && $_G['wechat']['setting']['wsq_siteid'] && $_G['wechat']['setting']['wsq_allow']) {
|
|
|
|
$modid = $_G['basescript'].'::'.CURMODULE;
|
|
|
|
if($modid == 'forum::forumdisplay' && !empty($_GET['fid'])) {
|
|
|
|
$idstr = '&fid='.dintval($_GET['fid']);
|
|
|
|
return wechat_tpl_float_qrcode($idstr);
|
|
|
|
} elseif($modid == 'forum::viewthread' && !empty($_GET['tid'])) {
|
|
|
|
$idstr = '&tid='.dintval($_GET['tid']).'&qrsize=2';
|
|
|
|
return wechat_tpl_float_qrcode($idstr);
|
|
|
|
} elseif($modid == 'forum::index') {
|
|
|
|
return wechat_tpl_float_qrcode();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
class mobileplugin_wechat {
|
|
|
|
|
|
|
|
function common() {
|
|
|
|
global $_G;
|
|
|
|
if(!$_G['wechat']['setting']) {
|
|
|
|
$_G['wechat']['setting'] = unserialize($_G['setting']['mobilewechat']);
|
|
|
|
}
|
|
|
|
dsetcookie('mobile', '', -1);
|
|
|
|
if(!isset($_GET['pluginid'])) {
|
|
|
|
$redirect = WeChat::redirect(1);
|
|
|
|
if($redirect) {
|
|
|
|
dheader('location: '.$redirect);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
class plugin_wechat_member extends plugin_wechat {
|
|
|
|
|
|
|
|
function logging_method() {
|
|
|
|
global $_G;
|
|
|
|
if(!$_G['Plang'] || !$_G['wechat']['setting']['wsq_allow']) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return wechat_tpl_login_bar();
|
|
|
|
}
|
|
|
|
|
|
|
|
function register_top_output() {
|
|
|
|
global $_G;
|
|
|
|
if(strexists($_GET['referer'], 'wechat:login') && $_G['wechat']['setting']['wsq_allow']) {
|
|
|
|
return wechat_tpl_register();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function register_logging_method() {
|
|
|
|
global $_G;
|
|
|
|
if(!$_G['Plang'] || !$_G['wechat']['setting']['wsq_allow']) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return wechat_tpl_login_bar();
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
class mobileplugin_wechat_forum extends mobileplugin_wechat {
|
|
|
|
|
|
|
|
function post_showactivity() {
|
|
|
|
if(!showActivity::init()) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
showActivity::post();
|
|
|
|
}
|
|
|
|
|
|
|
|
function viewthread_showactivity() {
|
|
|
|
showActivity::init();
|
|
|
|
}
|
|
|
|
|
|
|
|
function misc_showactivity() {
|
|
|
|
showActivity::init();
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
class plugin_wechat_forum extends plugin_wechat {
|
|
|
|
|
|
|
|
function viewthread_showactivity() {
|
|
|
|
showActivity::init();
|
|
|
|
}
|
|
|
|
|
|
|
|
function viewthread_postheader_output() {
|
|
|
|
if(!showActivity::init()) {
|
|
|
|
return array();
|
|
|
|
}
|
|
|
|
if($GLOBALS['activity']['starttimeto']) {
|
|
|
|
global $_G;
|
|
|
|
$starttimeto = strtotime($GLOBALS['activity']['starttimeto']);
|
|
|
|
if($starttimeto < TIMESTAMP && $_G['forum_thread']['displayorder'] > 0) {
|
|
|
|
C::t('forum_thread')->update($_G['tid'], array('displayorder' => 0));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return showActivity::returnvoters(1);
|
|
|
|
}
|
|
|
|
|
|
|
|
function viewthread_posttop_output() {
|
|
|
|
if(!showActivity::init()) {
|
|
|
|
return array();
|
|
|
|
}
|
|
|
|
return showActivity::returnvoters(2);
|
|
|
|
}
|
|
|
|
|
|
|
|
function misc_showactivity() {
|
|
|
|
if(!showActivity::init()) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
showActivity::misc();
|
|
|
|
}
|
|
|
|
|
|
|
|
function post_showactivity() {
|
|
|
|
if(!showActivity::init()) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
showActivity::post();
|
|
|
|
}
|
|
|
|
|
|
|
|
function viewthread_share_method_output() {
|
|
|
|
global $_G;
|
|
|
|
if($_G['wechat']['setting']['wsq_allow']) {
|
|
|
|
return wechat_tpl_share(showActivity::init());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function viewthread_postaction() {
|
|
|
|
global $_G;
|
|
|
|
if($_G['wechat']['setting']['wsq_allow'] && $_G['adminid'] == 1 && empty($_GET['viewpid'])) {
|
|
|
|
return array(wechat_tpl_resourcepush());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
class WeChat {
|
|
|
|
|
|
|
|
static $QRCODE_EXPIRE = 1800;
|
|
|
|
|
|
|
|
static public function getqrcode() {
|
|
|
|
global $_G;
|
|
|
|
if(!$_G['wechat']['setting']) {
|
|
|
|
$_G['wechat']['setting'] = unserialize($_G['setting']['mobilewechat']);
|
|
|
|
}
|
|
|
|
require_once DISCUZ_ROOT . './source/plugin/wechat/wechat.lib.class.php';
|
|
|
|
$wechat_client = new WeChatClient($_G['wechat']['setting']['wechat_appId'], $_G['wechat']['setting']['wechat_appsecret']);
|
|
|
|
|
|
|
|
$ticket = '';
|
|
|
|
if(!$_G['cookie']['wechat_ticket'] || $_G['wechat']['setting']['wechat_mtype'] == 1) {
|
|
|
|
$code = 0;
|
|
|
|
$i = 0;
|
|
|
|
do {
|
|
|
|
$code = rand(100000, 999999);
|
|
|
|
$codeexists = C::t('#wechat#mobile_wechat_authcode')->fetch_by_code($code);
|
|
|
|
$i++;
|
|
|
|
} while($codeexists && $i < 10);
|
|
|
|
|
|
|
|
if($_G['wechat']['setting']['wechat_mtype'] == 2) {
|
|
|
|
$option = array(
|
|
|
|
'scene_id' => $code,
|
|
|
|
'expire' => self::$QRCODE_EXPIRE,
|
|
|
|
'ticketOnly' => '1'
|
|
|
|
);
|
|
|
|
$ticket = $wechat_client->getQrcodeTicket($option);
|
|
|
|
if(!$ticket) {
|
|
|
|
showmessage('wechat:wechat_message_codefull');
|
|
|
|
}
|
|
|
|
dsetcookie('wechat_ticket', authcode($ticket."\t".$code, 'ENCODE'), self::$QRCODE_EXPIRE);
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
list($ticket, $code) = explode("\t", authcode($_G['cookie']['wechat_ticket'], 'DECODE'));
|
|
|
|
}
|
|
|
|
|
|
|
|
$isqrapi = $ticket ? $ticket : '';
|
|
|
|
if($codeexists) {
|
|
|
|
showmessage('wechat:wechat_message_codefull');
|
|
|
|
}
|
|
|
|
|
|
|
|
$qrcodeurl = !$isqrapi ? $_G['setting']['attachurl'].'common/'.$_G['wechat']['setting']['wechat_qrcode'] : $_G['siteurl'].'plugin.php?id=wechat:qrcode&rand='.random(5);
|
|
|
|
|
|
|
|
$codeenc = urlencode(base64_encode(authcode($code, 'ENCODE', $_G['config']['security']['authkey'])));
|
|
|
|
C::t('#wechat#mobile_wechat_authcode')->insert(array('sid' => $_G['cookie']['saltkey'], 'uid' => $_G['uid'], 'code' => $code, 'createtime' => TIMESTAMP), 0, 1);
|
|
|
|
if(!discuz_process::islocked('clear_wechat_authcode')) {
|
|
|
|
C::t('#wechat#mobile_wechat_authcode')->delete_history();
|
|
|
|
discuz_process::unlock('clear_wechat_authcode');
|
|
|
|
}
|
|
|
|
return array($isqrapi, $qrcodeurl, $codeenc, $code);
|
|
|
|
}
|
|
|
|
|
|
|
|
static public function redirect($type = '') {
|
|
|
|
global $_G;
|
|
|
|
$hook = unserialize($_G['setting']['wechatredirect']);
|
|
|
|
if (!$hook || !in_array($hook['plugin'], $_G['setting']['plugins']['available'])) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if(!preg_match("/^[\w\_]+$/i", $hook['plugin']) || !preg_match('/^[\w\_\.]+\.php$/i', $hook['include'])) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
include_once DISCUZ_ROOT . 'source/plugin/' . $hook['plugin'] . '/' . $hook['include'];
|
|
|
|
if (!class_exists($hook['class'], false)) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
$class = new $hook['class'];
|
|
|
|
if (!method_exists($class, $hook['method'])) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
$return = call_user_func(array($class, $hook['method']), $type);
|
|
|
|
if($return) {
|
|
|
|
return $return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static public function register($username, $return = 0, $groupid = 0) {
|
|
|
|
global $_G;
|
|
|
|
if(!$username) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if(!$_G['wechat']['setting']) {
|
|
|
|
$_G['wechat']['setting'] = unserialize($_G['setting']['mobilewechat']);
|
|
|
|
}
|
|
|
|
|
|
|
|
loaducenter();
|
|
|
|
$groupid = !$groupid ? ($_G['wechat']['setting']['wechat_newusergroupid'] ? $_G['wechat']['setting']['wechat_newusergroupid'] : $_G['setting']['newusergroupid']) : $groupid;
|
|
|
|
|
|
|
|
$password = md5(random(10));
|
|
|
|
$email = 'wechat_'.strtolower(random(10)).'@null.null';
|
|
|
|
|
|
|
|
$usernamelen = dstrlen($username);
|
|
|
|
if($usernamelen < 3) {
|
|
|
|
$username = $username.'_'.random(5);
|
|
|
|
}
|
|
|
|
if($usernamelen > 15) {
|
|
|
|
if(!$return) {
|
|
|
|
showmessage('profile_username_toolong');
|
|
|
|
} else {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
$censorexp = '/^('.str_replace(array('\\*', "\r\n", ' '), array('.*', '|', ''), preg_quote(($_G['setting']['censoruser'] = trim($_G['setting']['censoruser'])), '/')).')$/i';
|
|
|
|
|
|
|
|
if($_G['setting']['censoruser'] && @preg_match($censorexp, $username)) {
|
|
|
|
if(!$return) {
|
|
|
|
showmessage('profile_username_protect');
|
|
|
|
} else {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if(!$_G['wechat']['setting']['wechat_disableregrule']) {
|
|
|
|
loadcache('ipctrl');
|
|
|
|
if($_G['cache']['ipctrl']['ipregctrl']) {
|
|
|
|
foreach(explode("\n", $_G['cache']['ipctrl']['ipregctrl']) as $ctrlip) {
|
|
|
|
if(preg_match("/^(".preg_quote(($ctrlip = trim($ctrlip)), '/').")/", $_G['clientip'])) {
|
|
|
|
$ctrlip = $ctrlip.'%';
|
|
|
|
$_G['setting']['regctrl'] = $_G['setting']['ipregctrltime'];
|
|
|
|
break;
|
|
|
|
} else {
|
|
|
|
$ctrlip = $_G['clientip'];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
$ctrlip = $_G['clientip'];
|
|
|
|
}
|
|
|
|
|
|
|
|
if($_G['setting']['regctrl']) {
|
|
|
|
if(C::t('common_regip')->count_by_ip_dateline($ctrlip, $_G['timestamp']-$_G['setting']['regctrl']*3600)) {
|
|
|
|
if(!$return) {
|
|
|
|
showmessage('register_ctrl', NULL, array('regctrl' => $_G['setting']['regctrl']));
|
|
|
|
} else {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
$setregip = null;
|
|
|
|
if($_G['setting']['regfloodctrl']) {
|
|
|
|
$regip = C::t('common_regip')->fetch_by_ip_dateline($_G['clientip'], $_G['timestamp']-86400);
|
|
|
|
if($regip) {
|
|
|
|
if($regip['count'] >= $_G['setting']['regfloodctrl']) {
|
|
|
|
if(!$return) {
|
|
|
|
showmessage('register_flood_ctrl', NULL, array('regfloodctrl' => $_G['setting']['regfloodctrl']));
|
|
|
|
} else {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
$setregip = 1;
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
$setregip = 2;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if($setregip !== null) {
|
|
|
|
if($setregip == 1) {
|
|
|
|
C::t('common_regip')->update_count_by_ip($_G['clientip']);
|
|
|
|
} else {
|
|
|
|
C::t('common_regip')->insert(array('ip' => $_G['clientip'], 'count' => 1, 'dateline' => $_G['timestamp']));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
$uid = uc_user_register(addslashes($username), $password, $email, '', '', $_G['clientip']);
|
|
|
|
if($uid <= 0) {
|
|
|
|
if(!$return) {
|
|
|
|
if($uid == -1) {
|
|
|
|
showmessage('profile_username_illegal');
|
|
|
|
} elseif($uid == -2) {
|
|
|
|
showmessage('profile_username_protect');
|
|
|
|
} elseif($uid == -3) {
|
|
|
|
showmessage('profile_username_duplicate');
|
|
|
|
} elseif($uid == -4) {
|
|
|
|
showmessage('profile_email_illegal');
|
|
|
|
} elseif($uid == -5) {
|
|
|
|
showmessage('profile_email_domain_illegal');
|
|
|
|
} elseif($uid == -6) {
|
|
|
|
showmessage('profile_email_duplicate');
|
|
|
|
} else {
|
|
|
|
showmessage('undefined_action');
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
$init_arr = array('credits' => explode(',', $_G['setting']['initcredits']));
|
|
|
|
C::t('common_member')->insert($uid, $username, $password, $email, $_G['clientip'], $groupid, $init_arr);
|
|
|
|
|
|
|
|
if($_G['setting']['regctrl'] || $_G['setting']['regfloodctrl']) {
|
|
|
|
C::t('common_regip')->delete_by_dateline($_G['timestamp']-($_G['setting']['regctrl'] > 72 ? $_G['setting']['regctrl'] : 72)*3600);
|
|
|
|
if($_G['setting']['regctrl']) {
|
|
|
|
C::t('common_regip')->insert(array('ip' => $_G['clientip'], 'count' => -1, 'dateline' => $_G['timestamp']));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if($_G['setting']['regverify'] == 2) {
|
|
|
|
C::t('common_member_validate')->insert(array(
|
|
|
|
'uid' => $uid,
|
|
|
|
'submitdate' => $_G['timestamp'],
|
|
|
|
'moddate' => 0,
|
|
|
|
'admin' => '',
|
|
|
|
'submittimes' => 1,
|
|
|
|
'status' => 0,
|
|
|
|
'message' => '',
|
|
|
|
'remark' => '',
|
|
|
|
), false, true);
|
|
|
|
manage_addnotify('verifyuser');
|
|
|
|
}
|
|
|
|
|
|
|
|
setloginstatus(array(
|
|
|
|
'uid' => $uid,
|
|
|
|
'username' => $username,
|
|
|
|
'password' => $password,
|
|
|
|
'groupid' => $groupid,
|
|
|
|
), 0);
|
|
|
|
|
|
|
|
include_once libfile('function/stat');
|
|
|
|
updatestat('register');
|
|
|
|
|
|
|
|
return $uid;
|
|
|
|
}
|
|
|
|
|
|
|
|
static public function syncAvatar($uid, $avatar) {
|
|
|
|
|
|
|
|
if(!$uid || !$avatar) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
if(!$content = dfsockopen($avatar)) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
$tmpFile = DISCUZ_ROOT.'./data/avatar/'.TIMESTAMP.random(6);
|
|
|
|
file_put_contents($tmpFile, $content);
|
|
|
|
|
|
|
|
if(!is_file($tmpFile)) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
$result = uploadUcAvatar::upload($uid, $tmpFile);
|
|
|
|
unlink($tmpFile);
|
|
|
|
|
|
|
|
C::t('common_member')->update($uid, array('avatarstatus'=>'1'));
|
|
|
|
|
|
|
|
return $result;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static public function getnewname($openid) {
|
|
|
|
global $_G;
|
|
|
|
if(!$_G['wechat']['setting']) {
|
|
|
|
$_G['wechat']['setting'] = unserialize($_G['setting']['mobilewechat']);
|
|
|
|
}
|
|
|
|
$wechat_client = new WeChatClient($_G['wechat']['setting']['wechat_appId'], $_G['wechat']['setting']['wechat_appsecret']);
|
|
|
|
$userinfo = $wechat_client->getUserInfoById($openid);
|
|
|
|
if($userinfo) {
|
|
|
|
$defaultusername = substr(WeChatEmoji::clear($userinfo['nickname']), 0, 15);
|
|
|
|
loaducenter();
|
|
|
|
$user = uc_get_user($defaultusername);
|
|
|
|
if(!empty($user)) {
|
|
|
|
$defaultusername = cutstr($defaultusername, 7, '').'_'.random(5);
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
$defaultusername = 'wx_'.random(5);
|
|
|
|
}
|
|
|
|
return $defaultusername;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
class uploadUcAvatar {
|
|
|
|
|
|
|
|
public static function upload($uid, $localFile) {
|
|
|
|
|
|
|
|
global $_G;
|
|
|
|
if(!$uid || !$localFile) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
list($width, $height, $type, $attr) = getimagesize($localFile);
|
|
|
|
if(!$width) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
if($width < 10 || $height < 10 || $type == 4) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
$imageType = array(1 => '.gif', 2 => '.jpg', 3 => '.png');
|
|
|
|
$fileType = $imgType[$type];
|
|
|
|
if(!$fileType) {
|
|
|
|
$fileType = '.jpg';
|
|
|
|
}
|
|
|
|
$avatarPath = $_G['setting']['attachdir'];
|
|
|
|
$tmpAvatar = $avatarPath.'./temp/upload'.$uid.$fileType;
|
|
|
|
file_exists($tmpAvatar) && @unlink($tmpAvatar);
|
|
|
|
file_put_contents($tmpAvatar, file_get_contents($localFile));
|
|
|
|
|
|
|
|
if(!is_file($tmpAvatar)) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
$tmpAvatarBig = './temp/upload'.$uid.'big'.$fileType;
|
|
|
|
$tmpAvatarMiddle = './temp/upload'.$uid.'middle'.$fileType;
|
|
|
|
$tmpAvatarSmall = './temp/upload'.$uid.'small'.$fileType;
|
|
|
|
|
|
|
|
$image = new image;
|
|
|
|
if($image->Thumb($tmpAvatar, $tmpAvatarBig, 200, 250, 1) <= 0) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
if($image->Thumb($tmpAvatar, $tmpAvatarMiddle, 120, 120, 1) <= 0) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
if($image->Thumb($tmpAvatar, $tmpAvatarSmall, 48, 48, 2) <= 0) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
$tmpAvatarBig = $avatarPath.$tmpAvatarBig;
|
|
|
|
$tmpAvatarMiddle = $avatarPath.$tmpAvatarMiddle;
|
|
|
|
$tmpAvatarSmall = $avatarPath.$tmpAvatarSmall;
|
|
|
|
|
|
|
|
$avatar1 = self::byte2hex(file_get_contents($tmpAvatarBig));
|
|
|
|
$avatar2 = self::byte2hex(file_get_contents($tmpAvatarMiddle));
|
|
|
|
$avatar3 = self::byte2hex(file_get_contents($tmpAvatarSmall));
|
|
|
|
|
|
|
|
$extra = '&avatar1='.$avatar1.'&avatar2='.$avatar2.'&avatar3='.$avatar3;
|
|
|
|
$result = self::uc_api_post_ex('user', 'rectavatar', array('uid' => $uid), $extra);
|
|
|
|
|
|
|
|
@unlink($tmpAvatar);
|
|
|
|
@unlink($tmpAvatarBig);
|
|
|
|
@unlink($tmpAvatarMiddle);
|
|
|
|
@unlink($tmpAvatarSmall);
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
public static function byte2hex($string) {
|
|
|
|
$buffer = '';
|
|
|
|
$value = unpack('H*', $string);
|
|
|
|
$value = str_split($value[1], 2);
|
|
|
|
$b = '';
|
|
|
|
foreach($value as $k => $v) {
|
|
|
|
$b .= strtoupper($v);
|
|
|
|
}
|
|
|
|
|
|
|
|
return $b;
|
|
|
|
}
|
|
|
|
|
|
|
|
public static function uc_api_post_ex($module, $action, $arg = array(), $extra = '') {
|
|
|
|
$s = $sep = '';
|
|
|
|
foreach($arg as $k => $v) {
|
|
|
|
$k = urlencode($k);
|
|
|
|
if(is_array($v)) {
|
|
|
|
$s2 = $sep2 = '';
|
|
|
|
foreach($v as $k2 => $v2) {
|
|
|
|
$k2 = urlencode($k2);
|
|
|
|
$s2 .= "$sep2{$k}[$k2]=".urlencode(uc_stripslashes($v2));
|
|
|
|
$sep2 = '&';
|
|
|
|
}
|
|
|
|
$s .= $sep.$s2;
|
|
|
|
} else {
|
|
|
|
$s .= "$sep$k=".urlencode(uc_stripslashes($v));
|
|
|
|
}
|
|
|
|
$sep = '&';
|
|
|
|
}
|
|
|
|
$postdata = uc_api_requestdata($module, $action, $s, $extra);
|
|
|
|
return uc_fopen2(UC_API.'/index.php', 500000, $postdata, '', TRUE, UC_IP, 20);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class showActivity {
|
|
|
|
|
|
|
|
public static $init = false;
|
|
|
|
|
2017-01-19 10:48:48 -05:00
|
|
|
public static function init() {
|
2016-12-15 08:20:54 -05:00
|
|
|
global $_G;
|
|
|
|
if(!$_G['wechat']['setting']['wsq_allow'] || !in_array($_G['tid'], (array)$_G['wechat']['setting']['showactivity']['tids'])) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
if(!self::$init) {
|
|
|
|
$_G['setting']['allowpostcomment'] = array(0 => 1, 1 => 2);
|
|
|
|
$_G['setting']['commentnumber'] = 10;
|
|
|
|
$_G['setting']['commentpostself'] = 0;
|
|
|
|
$_G['setting']['commentfirstpost'] = 0;
|
|
|
|
$_G['setting']['fastpost'] = 0;
|
|
|
|
$_G['setting']['showimages'] = 1;
|
|
|
|
$_G['setting']['imagelistthumb'] = 1;
|
|
|
|
$_G['setting']['activitypp'] = 0;
|
|
|
|
$_G['setting']['disallowfloat'] .= '|reply';
|
|
|
|
$_G['setting']['guesttipsinthread']['flag'] = 0;
|
|
|
|
$_G['setting']['nofilteredpost'] = 0;
|
|
|
|
$_G['group']['allowgetimage'] = 1;
|
|
|
|
if($_G['basescript'].'::'.CURMODULE == 'forum::post' && $_GET['action'] == 'edit') {
|
|
|
|
$_G['group']['allowpostactivity'] = true;
|
|
|
|
$_G['forum']['allowpostspecial'] = 255;
|
|
|
|
}
|
|
|
|
$_GET['ordertype'] = empty($_GET['ordertype']) ? 1 : $_GET['ordertype'];
|
|
|
|
self::$init = true;
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
function misc() {
|
|
|
|
global $_G;
|
|
|
|
if(!$_POST || $_GET['action'] != 'activityapplies' && $_GET['action'] != 'activityapplylist') {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if(submitcheck('activitysubmit')) {
|
|
|
|
showmessage('wechat:show_please_reply');
|
|
|
|
} elseif(submitcheck('activitycancel')) {
|
|
|
|
showmessage('wechat:show_no_cancel');
|
|
|
|
} elseif(submitcheck('applylistsubmit') && $_GET['operation'] == 'replenish') {
|
|
|
|
showmessage('wechat:show_disabled');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function post() {
|
|
|
|
global $_G;
|
|
|
|
if($_GET['action'] != 'reply') {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if(submitcheck('replysubmit')) {
|
|
|
|
$activity = C::t('forum_activity')->fetch($_G['tid']);
|
|
|
|
if($activity['starttimefrom'] > TIMESTAMP) {
|
|
|
|
showmessage('wechat:show_no_begin', NULL, array());
|
|
|
|
}
|
|
|
|
if($activity['expiration'] && $activity['expiration'] < TIMESTAMP) {
|
|
|
|
showmessage('activity_stop', NULL, array(), array('login' => 1));
|
|
|
|
}
|
|
|
|
if(empty($_GET['attachnew'])) {
|
|
|
|
showmessage('wechat:show_please_upload');
|
|
|
|
}
|
|
|
|
$data = array('tid' => $_G['tid'], 'username' => $_G['username'], 'uid' => $_G['uid'], 'message' => '', 'verified' => 1, 'dateline' => $_G['timestamp']);
|
|
|
|
C::t('forum_activityapply')->insert($data);
|
|
|
|
$applynumber = C::t('forum_activityapply')->fetch_count_for_thread($_G['tid']);
|
|
|
|
C::t('forum_activity')->update($_G['tid'], array('applynumber' => $applynumber));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function returnvoters($type) {
|
|
|
|
global $_G;
|
|
|
|
$return = array();
|
|
|
|
if($type == 1) {
|
|
|
|
$posts = DB::fetch_all("SELECT * FROM %t WHERE tid=%d", array('forum_debatepost', $_G['tid']), 'pid');
|
|
|
|
foreach($GLOBALS['postlist'] as $post) {
|
|
|
|
$posts[$post['pid']]['voters'] = intval($posts[$post['pid']]['voters']);
|
|
|
|
$return[] = !$post['first'] ? wechatshowactivity_tpl_voters($posts[$post['pid']]) : '';
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
foreach($GLOBALS['postlist'] as $post) {
|
|
|
|
$return[] = !$post['first'] ? wechatshowactivity_tpl_share($post) : '';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return $return;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|