connectJsOutputMessage('', 'undefined_action', 1); } if ($op == 'new') { if ($action == 'thread') { $tid = trim(intval($_GET['thread_id'])); if (empty($tid)) { $connectService->connectJsOutputMessage('', 'connect_thread_id_miss', 1); } $connectService->connectMergeMember(); $post = C::t('forum_post')->fetch_threadpost_by_tid_invisible($tid, 0); $thread = C::t('forum_thread')->fetch_by_tid_displayorder($tid, 0); $feedlog = C::t('#qqconnect#connect_feedlog')->fetch_by_tid($thread['tid']); if ($_G['uid'] != $thread['authorid']) { $connectService->connectJsOutputMessage('', 'connect_about', 2); } if (!getstatus($thread['status'], 7) && !getstatus($thread['status'], 8)) { $connectService->connectJsOutputMessage('', 'connect_about', 2); } if ($feedlog['publishtimes'] >= 5 || $_G['timestamp'] - $thread['dateline'] > 1800) { $connectService->connectJsOutputMessage('', 'connect_about', 2); } $f_type = trim(dintval($_GET['type'])); $msglower = strtolower($post['message']); if(strpos($msglower, '[/quote]') !== FALSE) { $post['message'] = preg_replace('/\[quote\].*\[\/quote\](\r\n|\n|\r){0,}/is', '', $post['message']); } if(strpos($msglower, '[/media]') !== FALSE) { $post['message'] = preg_replace("/\[media=([\w,]+)\]\s*([^\[\<\r\n]+?)\s*\[\/media\]/is", '', $post['message']); } if(strpos($msglower, '[/flash]') !== FALSE) { $post['message'] = preg_replace("/\[flash(=(\d+),(\d+))?\]\s*([^\[\<\r\n]+?)\s*\[\/flash\]/is", '', $post['message']); } if(strpos($msglower, '[/hide]') !== FALSE) { $post['message'] = preg_replace("/\[hide[=]?(d\d+)?[,]?(\d+)?\]\s*(.*?)\s*\[\/hide\]/is", '', $post['message']); } $html_content = $connectService->connectParseBbcode($post['message'], $thread['fid'], $post['pid'], $post['htmlon'], $attach_images); $html_content = strip_tags(preg_replace('/( )+/', ' ', $html_content)); if($_G['setting']['rewritestatus'] && in_array('forum_viewthread', $_G['setting']['rewritestatus'])) { $url = rewriteoutput('forum_viewthread', 1, $_G['siteurl'], $tid); } else { $url = $_G['siteurl'].'forum.php?mod=viewthread&tid='.$tid; } $qzone_params = array( 'title' => $thread['subject'], 'url' => $url, 'summary' => $html_content, 'nswb' => '1', ); $_t_content = lang('plugin/qqconnect', 'connect_feed_iam'); $_t_content .= '#' . cutstr($_G['setting']['bbname'], 20,'') . '#'; $_t_content .= lang('plugin/qqconnect', 'connect_feed_published_thread', array('subject' => cutstr($thread['subject'], 120))); $_t_content .= cutstr($html_content, 80); $_t_content .= ' ' . $url; $t_params = array( 'content' => $_t_content, ); if($attach_images && is_array($attach_images)) { $attach_image = array_shift($attach_images); $qzone_params['images'] = $attach_image['big']; $t_params['pic'] = $attach_image['path']; $t_params['remote'] = $attach_image['remote']; } $connectOAuthClient = Cloud::loadClass('Service_Client_ConnectOAuth'); $feed_succ = $weibo_succ = false; if(getstatus($f_type, 1)) { try { $response = $connectOAuthClient->connectAddShare($_G['member']['conopenid'], $_G['member']['conuin'], $_G['member']['conuinsecret'], $qzone_params); $f_type = setstatus(1, 0, $f_type); if ($response['ret'] == 0) { $feed_succ = true; } } catch(Exception $e) { if($e->getCode()) { $f_type = setstatus(1, 0, $f_type); $shareErrorCode = $e->getCode(); } $feed_succ = false; } } if(getstatus($f_type, 2)) { try { if ($t_params['pic']) { $method = 'connectAddPicT'; } else { $method = 'connectAddT'; } $response = $connectOAuthClient->$method($_G['member']['conopenid'], $_G['member']['conuin'], $_G['member']['conuinsecret'], $t_params); if($response['data']['id']) { if($_G['setting']['connect']['t']['reply'] && $thread['tid'] && !$thread['closed'] && !getstatus($thread['status'], 3) && empty($_G['forum']['replyperm'])) { $memberConnect = C::t('#qqconnect#common_member_connect')->fetch($thread['authorid']); $conopenid = $memberConnect['conopenid']; C::t('#qqconnect#connect_tthreadlog')->insert(array( 'twid' => $response['data']['id'], 'tid' => $tid, 'conopenid' => $conopenid, 'pagetime' => 0, 'lasttwid' => '0', 'nexttime' => $_G['timestamp'] + 30 * 60, 'updatetime' => 0, 'dateline' => $_G['timestamp'], )); } } $f_type = setstatus(2, 0, $f_type); if ($response['ret'] == 0) { $weibo_succ = true; } } catch(Exception $e) { if($e->getCode()) { $f_type = setstatus(2, 0, $f_type); $weiboErrorCode = $e->getCode(); } $weibo_succ = false; } } $thread_status = $thread['status']; $feedlog_status = $feedlog['status']; if ($feed_succ) { $thread_status = setstatus(7, 0, $thread_status); $feedlog_status = setstatus(2, 1, $feedlog_status); $feedlog_status = setstatus(1, 0, $feedlog_status); } if ($weibo_succ) { $thread_status = setstatus(8, 0, $thread_status); $thread_status = setstatus(14, 1, $thread_status); $feedlog_status = setstatus(4, 1, $feedlog_status); $feedlog_status = setstatus(3, 0, $feedlog_status); } if ($feed_succ || $weibo_succ) { C::t('#qqconnect#connect_feedlog')->update_by_tid($thread['tid'], array( 'status' => $feedlog_status, 'lastpublished' => $_G['timestamp'], 'publishtimes' => $feedlog['publishtimes'] + 1, )); C::t('forum_thread')->update($thread['tid'], array('status' => $thread_status)); } if(!$shareErrorCode && !$weiboErrorCode) { $connectService->connectJsOutputMessage(lang('plugin/qqconnect', 'connect_feed_sync_success'), '', 0); } else { C::t('#qqconnect#connect_feedlog')->update_by_tid($thread['tid'], array( 'lastpublished' => $_G['timestamp'], 'publishtimes' => $feedlog['publishtimes'] + 1, )); $connectService->connectJsOutputMessage('', '', $shareErrorCode.'|'.$weiboErrorCode); } } elseif ($action == 'post') { $tid = trim(intval($_GET['thread_id'])); $pid = trim(intval($_GET['post_id'])); if (empty($pid)) { $connectService->connectJsOutputMessage('', 'connect_thread_id_miss', 1); } $thread = C::t('forum_thread')->fetch_by_tid_displayorder($tid, 0); $post = C::t('forum_post')->fetch('tid:'.$tid, $pid); if (empty($thread) || empty($post)) { $connectService->connectJsOutputMessage('', 'connect_thread_id_miss', 1); } if ($_G['uid'] != $post['authorid']) { $connectService->connectJsOutputMessage('', 'connect_about', 2); } $feedlog = C::t('#qqconnect#connect_postfeedlog')->fetch_by_pid($pid); if (!$feedlog || $feedlog['publishtimes'] >= 5 || $_G['timestamp'] - $post['dateline'] > 1800) { $connectService->connectJsOutputMessage('', 'connect_about', 2); } $connectService->connectMergeMember(); $msglower = strtolower($post['message']); if(strpos($msglower, '[/quote]') !== FALSE) { $post['message'] = preg_replace('/\[quote\].*\[\/quote\](\r\n|\n|\r){0,}/is', '', $post['message']); } if(strpos($msglower, '[/media]') !== FALSE) { $post['message'] = preg_replace("/\[media=([\w,]+)\]\s*([^\[\<\r\n]+?)\s*\[\/media\]/is", '', $post['message']); } if(strpos($msglower, '[/flash]') !== FALSE) { $post['message'] = preg_replace("/\[flash(=(\d+),(\d+))?\]\s*([^\[\<\r\n]+?)\s*\[\/flash\]/is", '', $post['message']); } $html_content = $connectService->connectParseBbcode($post['message'], $post['fid'], $post['pid'], $post['htmlon'], $attach_images); $html_content = strip_tags(preg_replace('/( )+/', ' ', $html_content)); $url = $_G['siteurl'].'forum.php?mod=redirect&goto=findpost&ptid='.$tid.'&pid='.$pid; $_t_content = lang('plugin/qqconnect', 'connect_feed_iam'); $_t_content .= '#' . cutstr($_G['setting']['bbname'], 20,'') . '#'; $_t_content .= lang('plugin/qqconnect', 'connect_feed_published_post', array('subject' => cutstr($thread['subject'], 120))); $_t_content .= cutstr($html_content, 80); $_t_content .= ' ' . $url; $t_params = array( 'content' => $_t_content, ); if($attach_images && is_array($attach_images)) { $attach_image = array_shift($attach_images); $t_params['pic'] = $attach_image['path']; $t_params['remote'] = $attach_image['remote']; } $connectOAuthClient = Cloud::loadClass('Service_Client_ConnectOAuth'); $weibo_succ = false; try { if ($t_params['pic']) { $method = 'connectAddPicT'; } else { $method = 'connectAddT'; } $response = $connectOAuthClient->$method($_G['member']['conopenid'], $_G['member']['conuin'], $_G['member']['conuinsecret'], $t_params); if ($response['ret'] == 0) { $weibo_succ = true; } } catch(Exception $e) { if($e->getCode()) { $weiboErrorCode = $e->getCode(); } $weibo_succ = false; } if ($weibo_succ) { $feedlog_status = $feedlog['status']; $feedlog_status = setstatus(4, 1, $feedlog_status); $feedlog_status = setstatus(3, 0, $feedlog_status); C::t('#qqconnect#connect_postfeedlog')->update_by_pid($pid, array( 'status' => $feedlog_status, 'lastpublished' => $_G['timestamp'], 'publishtimes' => $feedlog['publishtimes'] + 1, )); } if(!$weiboErrorCode) { dsetcookie('connect_sync_post'); $connectService->connectJsOutputMessage(lang('plugin/qqconnect', 'connect_feed_sync_success'), '', 0); } else { C::t('#qqconnect#connect_postfeedlog')->update_by_pid($pid, array( 'lastpublished' => $_G['timestamp'], 'publishtimes' => $feedlog['publishtimes'] + 1, )); $connectService->connectJsOutputMessage('', '', $weiboErrorCode); } } }