public function after_newthread() { $tid = $this->tid; $pid = $this->pid; $uid = $this->member['uid']; if ($this->param['displayorder'] >= 0 && helper_access::check_module('follow') && !$this->param['isanonymous']) { $values = array(); require_once libfile('function/discuzcode'); require_once libfile('function/followcode'); $feedcontent = array('tid' => $tid, 'content' => followcode(messagesafeclear($this->param['message']), $tid, $pid, 1000)); C::t('forum_threadpreview')->insert($feedcontent); C::t('forum_thread')->update_status_by_tid($tid, '512'); $followfeed = array('uid' => $uid, 'username' => $this->member['username'], 'tid' => $tid, 'note' => '', 'dateline' => TIMESTAMP); $values['feedid'] = C::t('home_follow_feed')->insert($followfeed, true); C::t('common_member_count')->increase($uid, array('feeds' => 1)); $this->param['values'] = array_merge((array) $this->param['values'], $values); } }
public function feed() { if ($this->forum('allowfeed') && !$this->param['isanonymous']) { if (empty($this->feed)) { $this->feed = array('icon' => '', 'title_template' => '', 'title_data' => array(), 'body_template' => '', 'body_data' => array(), 'title_data' => array(), 'images' => array()); $message = !$this->param['price'] && !$this->param['readperm'] ? $this->param['message'] : ''; $message = messagesafeclear($message); $this->feed['icon'] = 'thread'; $this->feed['title_template'] = 'feed_thread_title'; $this->feed['body_template'] = 'feed_thread_message'; $this->feed['body_data'] = array('subject' => "<a href=\"forum.php?mod=viewthread&tid={$this->tid}\">{$this->param['subject']}</a>", 'message' => messagecutstr($message, 150)); if (getglobal('forum_attachexist')) { // $firstaid = DB::result_first("SELECT aid FROM ".DB::table(getattachtablebytid($tid))." WHERE pid='$pid' AND dateline>'0' AND isimage='1' ORDER BY dateline LIMIT 1"); $imgattach = C::t('forum_attachment_n')->fetch_max_image('tid:' . $this->tid, 'pid', $this->pid); $firstaid = $imgattach['aid']; unset($imgattach); if ($firstaid) { $this->feed['images'] = array(getforumimg($firstaid)); $this->feed['image_links'] = array("forum.php?mod=viewthread&do=tradeinfo&tid={$this->tid}&pid={$this->pid}"); } } } $this->feed['title_data']['hash_data'] = 'tid' . $this->tid; $this->feed['id'] = $this->tid; $this->feed['idtype'] = 'tid'; if ($this->feed['icon']) { postfeed($this->feed); } } }
function messagecutstr($str, $length = 0, $dot = ' ...') { global $_G; $str = messagesafeclear($str); $sppos = strpos($str, chr(0) . chr(0) . chr(0)); if ($sppos !== false) { $str = substr($str, 0, $sppos); } $language = lang('forum/misc'); loadcache(array('bbcodes_display', 'bbcodes', 'smileycodes', 'smilies', 'smileytypes', 'domainwhitelist')); $bbcodes = 'b|i|u|p|color|size|font|align|list|indent|float'; $bbcodesclear = 'email|code|free|table|tr|td|img|swf|flash|attach|media|audio|groupid|payto' . ($_G['cache']['bbcodes_display'][$_G['groupid']] ? '|' . implode('|', array_keys($_G['cache']['bbcodes_display'][$_G['groupid']])) : ''); $str = strip_tags(preg_replace(array("/\\[hide=?\\d*\\](.*?)\\[\\/hide\\]/is", "/\\[quote](.*?)\\[\\/quote]/si", $language['post_edit_regexp'], "/\\[url=?.*?\\](.+?)\\[\\/url\\]/si", "/\\[({$bbcodesclear})=?.*?\\].+?\\[\\/\\1\\]/si", "/\\[({$bbcodes})=?.*?\\]/i", "/\\[\\/({$bbcodes})\\]/i", "/\\\\u/i"), array("[b]{$language['post_hidden']}[/b]", '', '', '\\1', '', '', '', '%u'), $str)); if ($length) { $str = cutstr($str, $length, $dot); } $str = preg_replace($_G['cache']['smilies']['searcharray'], '', $str); if ($_G['setting']['plugins']['func'][HOOKTYPE]['discuzcode']) { $_G['discuzcodemessage'] =& $str; $param = func_get_args(); hookscript('discuzcode', 'global', 'funcs', array('param' => $param, 'caller' => 'messagecutstr'), 'discuzcode'); } return trim($str); }
function followcode($message, $tid = 0, $pid = 0, $length = 0, $allowimg = true) { global $_G; include_once libfile('function/post'); $message = strip_tags($message); $message = messagesafeclear($message); if ((strpos($message, '[/code]') || strpos($message, '[/CODE]')) !== FALSE) { $message = preg_replace("/\\s?\\[code\\](.+?)\\[\\/code\\]\\s?/ies", "", $message); } $msglower = strtolower($message); $htmlon = 0; $message = dhtmlspecialchars($message); if ($_G['setting']['plugins']['func'][HOOKTYPE]['discuzcode']) { $_G['discuzcodemessage'] =& $message; $param = func_get_args(); hookscript('discuzcode', 'global', 'funcs', array('param' => $param, 'caller' => 'discuzcode'), 'discuzcode'); } $_G['delattach'] = array(); $message = fparsesmiles($message); if (strpos($msglower, 'attach://') !== FALSE) { $message = preg_replace("/attach:\\/\\/(\\d+)\\.?(\\w*)/ie", '', $message); } if (strpos($msglower, 'ed2k://') !== FALSE) { $message = preg_replace("/ed2k:\\/\\/(.+?)\\//e", '', $message); } if (strpos($msglower, '[/i]') !== FALSE) { $message = preg_replace("/\\s*\\[i=s\\][\n\r]*(.+?)[\n\r]*\\[\\/i\\]\\s*/is", '', $message); } $message = str_replace('[/p]', "\n", $message); $message = str_replace(array('[/color]', '[/backcolor]', '[/size]', '[/font]', '[/align]', '[b]', '[/b]', '[s]', '[/s]', '[hr]', '[i=s]', '[i]', '[/i]', '[u]', '[/u]', '[list]', '[list=1]', '[list=a]', '[list=A]', "\r\n[*]", '[*]', '[/list]', '[indent]', '[/indent]', '[/float]'), '', preg_replace(array("/\\[color=([#\\w]+?)\\]/i", "/\\[color=((rgb|rgba)\\([\\d\\s,]+?\\))\\]/i", "/\\[backcolor=([#\\w]+?)\\]/i", "/\\[backcolor=((rgb|rgba)\\([\\d\\s,]+?\\))\\]/i", "/\\[size=(\\d{1,2}?)\\]/i", "/\\[size=(\\d{1,2}(\\.\\d{1,2}+)?(px|pt)+?)\\]/i", "/\\[font=([^\\[\\<]+?)\\]/i", "/\\[align=(left|center|right)\\]/i", "/\\[float=left\\]/i", "/\\[float=right\\]/i"), '', $message)); if (strpos($msglower, '[/p]') !== FALSE) { $message = preg_replace("/\\[p=(\\d{1,2}|null), (\\d{1,2}|null), (left|center|right)\\]/i", "<p style=\"line-height:\\1px;text-indent:\\2em;text-align:left;\">", $message); $message = str_replace('[/p]', '</p>', $message); } if (strpos($msglower, '[/quote]') !== FALSE) { $message = preg_replace("/\\s?\\[quote\\][\n\r]*(.+?)[\n\r]*\\[\\/quote\\]\\s?/is", '', $message); } if (strpos($msglower, '[/free]') !== FALSE) { $message = preg_replace("/\\s*\\[free\\][\n\r]*(.+?)[\n\r]*\\[\\/free\\]\\s*/is", '', $message); } if (isset($_G['cache']['bbcodes'][-$allowbbcode])) { $message = preg_replace($_G['cache']['bbcodes'][-$allowbbcode]['searcharray'], '', $message); } if (strpos($msglower, '[/hide]') !== FALSE) { preg_replace("/\\[hide.*?\\]\\s*(.*?)\\s*\\[\\/hide\\]/ies", "hideattach('\\1')", $message); if (strpos($msglower, '[hide]') !== FALSE) { $message = preg_replace("/\\[hide\\]\\s*(.*?)\\s*\\[\\/hide\\]/is", '', $message); } if (strpos($msglower, '[hide=') !== FALSE) { $message = preg_replace("/\\[hide=(d\\d+)?[,]?(\\d+)?\\]\\s*(.*?)\\s*\\[\\/hide\\]/ies", '', $message); } } if (strpos($msglower, '[/url]') !== FALSE) { $message = preg_replace("/\\[url(=((https?|ftp|gopher|news|telnet|rtsp|mms|callto|bctp|thunder|qqdl|synacast){1}:\\/\\/|www\\.|mailto:)?([^\r\n\\[\"']+?))?\\](.+?)\\[\\/url\\]/ies", "fparseurl('\\1', '\\5', '\\2')", $message); } if (strpos($msglower, '[/email]') !== FALSE) { $message = preg_replace("/\\[email(=([a-z0-9\\-_.+]+)@([a-z0-9\\-_]+[.][a-z0-9\\-_.]+))?\\](.+?)\\[\\/email\\]/ies", "fparseemail('\\1', '\\4')", $message); } $nest = 0; while (strpos($msglower, '[table') !== FALSE && strpos($msglower, '[/table]') !== FALSE) { $message = preg_replace("/\\[table(?:=(\\d{1,4}%?)(?:,([\\(\\)%,#\\w ]+))?)?\\]\\s*(.+?)\\s*\\[\\/table\\]/ies", "fparsetable('\\1', '\\2', '\\3')", $message); if (++$nest > 4) { break; } } if (strpos($msglower, '[/media]') !== FALSE) { $message = preg_replace("/\\[media=([\\w,]+)\\]\\s*([^\\[\\<\r\n]+?)\\s*\\[\\/media\\]/ies", "fparsemedia('\\1', '\\2')", $message); } if (strpos($msglower, '[/audio]') !== FALSE) { $message = preg_replace("/\\[audio(=1)*\\]\\s*([^\\[\\<\r\n]+?)\\s*\\[\\/audio\\]/ies", "fparseaudio('\\2')", $message); } if (strpos($msglower, '[/flash]') !== FALSE) { $message = preg_replace("/\\[flash(=(\\d+),(\\d+))?\\]\\s*([^\\[\\<\r\n]+?)\\s*\\[\\/flash\\]/ies", "fparseflash('\\4');", $message); } if ($parsetype != 1 && strpos($msglower, '[swf]') !== FALSE) { $message = preg_replace("/\\[swf\\]\\s*([^\\[\\<\r\n]+?)\\s*\\[\\/swf\\]/ies", "bbcodeurl('\\1', ' <img src=\"'.STATICURL.'image/filetype/flash.gif\" align=\"absmiddle\" alt=\"\" /> <a href=\"{url}\" target=\"_blank\">Flash: {url}</a> ')", $message); } $flag = $length ? 1 : 0; if ($tid) { $extra = "onclick=\"changefeed({$tid}, {$pid}, {$flag}, this)\""; } if (strpos($msglower, '[/img]') !== FALSE) { $message = preg_replace(array("/\\[img\\]\\s*([^\\[\\<\r\n]+?)\\s*\\[\\/img\\]/ies", "/\\[img=(\\d{1,4})[x|\\,](\\d{1,4})\\]\\s*([^\\[\\<\r\n]+?)\\s*\\[\\/img\\]/ies"), $allowimg ? array("fparseimg('\\1', '{$extra}')", "fparseimg('\\3', '{$extra}')") : '', $message); } if ($tid && $pid) { $_G['post_attach'] = C::t('forum_attachment_n')->fetch_all_by_id(getattachtableid($tid), 'pid', $pid); foreach ($_G['post_attach'] as $aid => $attach) { if (!empty($_G['delattach']) && in_array($aid, $_G['delattach'])) { continue; } $message .= "[attach]{$attach['aid']}[/attach]"; $message = preg_replace("/\\[attach\\]{$attach['aid']}\\[\\/attach\\]/i", fparseattach($attach['aid'], $length, $extra), $message, 1); } } if (strpos($msglower, '[/attach]') !== FALSE) { $message = preg_replace("/\\[attach\\]\\s*([^\\[\\<\r\n]+?)\\s*\\[\\/attach\\]/ies", '', $message); } $message = clearnl($message); if ($length) { $sppos = strpos($message, chr(0) . chr(0) . chr(0)); if ($sppos !== false) { $message = substr($message, 0, $sppos); } $checkstr = cutstr($message, $length, ''); if (strpos($checkstr, '[') && strpos(strrchr($checkstr, "["), ']') === FALSE) { $length = strpos($message, ']', strrpos($checkstr, strrchr($checkstr, "["))); } $message = cutstr($message, $length + 1, ' <a href="javascript:;" class="flw_readfull xi2 xs1"' . $extra . '>' . lang('space', 'follow_view_fulltext') . '</a>'); } elseif ($allowimg && !empty($extra)) { $message .= '<div class="ptm cl"><a href="javascript:;" class="flw_readfull y xi2 xs1"' . $extra . '>' . lang('space', 'follow_retract') . '</a></div>'; } for ($i = 0; $i <= $_G['forum_discuzcode']['pcodecount']; $i++) { $code = ''; if (isset($_G['forum_discuzcode']['codehtml'][$i]) && !empty($_G['forum_discuzcode']['codehtml'][$i])) { $code = $_G['forum_discuzcode']['codehtml'][$i]; } elseif (!$length) { if (isset($_G['forum_discuzcode']['audio'][$i]) && !empty($_G['forum_discuzcode']['audio'][$i])) { $code = $_G['forum_discuzcode']['audio'][$i]; } elseif (isset($_G['forum_discuzcode']['video'][$i]) && !empty($_G['forum_discuzcode']['video'][$i])) { $code = $_G['forum_discuzcode']['video'][$i]; } elseif (isset($_G['forum_discuzcode']['media'][$i]) && !empty($_G['forum_discuzcode']['media'][$i])) { $code = $_G['forum_discuzcode']['media'][$i]; } elseif (isset($_G['forum_discuzcode']['image'][$i]) && !empty($_G['forum_discuzcode']['image'][$i])) { $code = $_G['forum_discuzcode']['image'][$i]; } elseif (isset($_G['forum_discuzcode']['attach'][$i]) && !empty($_G['forum_discuzcode']['attach'][$i])) { $code = $_G['forum_discuzcode']['attach'][$i]; } } $message = str_replace("[\tD_{$i}\t]", $code, $message); } $message = clearnl($message); if (!empty($_GET['highlight'])) { $highlightarray = explode('+', $_GET['highlight']); $sppos = strrpos($message, chr(0) . chr(0) . chr(0)); if ($sppos !== FALSE) { $specialextra = substr($message, $sppos + 3); $message = substr($message, 0, $sppos); } $message = preg_replace(array("/(^|>)([^<]+)(?=<|\$)/sUe", "/<highlight>(.*)<\\/highlight>/siU"), array("highlightword('\\2', \$highlightarray, '\\1')", "<strong><font color=\"#FF0000\">\\1</font></strong>"), $message); if ($sppos !== FALSE) { $message = $message . chr(0) . chr(0) . chr(0) . $specialextra; } } unset($msglower); if ($length) { $count = 0; $imagecode = $mediacode = $videocode = $audiocode = $mediahtml = ''; for ($i = 0; $i <= $_G['forum_discuzcode']['pcodecount']; $i++) { if (isset($_G['forum_discuzcode']['audio'][$i]) && !empty($_G['forum_discuzcode']['audio'][$i])) { $audiocode .= '<li>' . $_G['forum_discuzcode']['audio'][$attachcodei] . '</li>'; } elseif (isset($_G['forum_discuzcode']['video'][$i]) && !empty($_G['forum_discuzcode']['video'][$i])) { $videocode .= '<li>' . $_G['forum_discuzcode']['video'][$i] . '</li>'; } elseif (isset($_G['forum_discuzcode']['media'][$i]) && !empty($_G['forum_discuzcode']['media'][$i])) { $mediacode .= '<li>' . $_G['forum_discuzcode']['media'][$i] . '</li>'; } elseif (isset($_G['forum_discuzcode']['image'][$i]) && !empty($_G['forum_discuzcode']['image'][$i]) && $count < 4) { $imagecode .= '<li>' . $_G['forum_discuzcode']['image'][$i] . '</li>'; $count++; } elseif (isset($_G['forum_discuzcode']['attach'][$i]) && !empty($_G['forum_discuzcode']['attach'][$i])) { $attachcode .= '<li>' . $_G['forum_discuzcode']['attach'][$i] . '</li>'; } } if (!empty($audiocode)) { $message .= '<div class="flw_music"><ul>' . $audiocode . '</ul></div>'; } if (!empty($videocode)) { $message .= '<div class="flw_video"><ul>' . $videocode . '</ul></div>'; } if (!empty($mediacode)) { $message .= '<div class="flw_video"><ul>' . $mediacode . '</ul></div>'; } if (!empty($imagecode)) { $message = '<div class="flw_image' . ($count < 2 ? ' flw_image_1' : '') . '"><ul>' . $imagecode . '</ul></div>' . $message; } if (!empty($attachcode)) { $message .= '<div class="flw_attach"><ul>' . $attachcode . '</ul></div>'; } } return $htmlon ? $message : nl2br(str_replace(array("\t", ' ', ' '), ' ', $message)); }
} $sh_type = intval(trim($_POST['sh_type'])); $tid = intval(trim($_POST['thread_id'])); $dialog_id = $_POST['dialog_id']; $connectService->connectMergeMember(); 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; } $connectOAuthClient = Cloud::loadClass('Service_Client_ConnectOAuth'); $connectService = Cloud::loadClass('Service_Connect'); if ($sh_type == 3) { $firstpost = C::t('forum_post')->fetch_threadpost_by_tid_invisible($tid, 0); require_once libfile('function/post'); $firstpost['message'] = messagesafeclear($firstpost['message']); $summary = $connectService->connectParseBbcode($firstpost['message'], $firstpost['fid'], $firstpost['pid'], $firstpost['htmlon'], $attach_images); $qzone_params = array('title' => $_POST['share_subject'], 'url' => $url, 'comment' => $_POST['reason'], 'summary' => strip_tags($summary), 'images' => $_POST['attach_image'], 'nswb' => '1'); if (!$_G['setting']['connect']['oauth2'] || !$_G['member']['conuintoken']) { try { $response = $connectOAuthClient->connectAddShare($_G['member']['conopenid'], $_G['member']['conuin'], $_G['member']['conuinsecret'], $qzone_params); } catch (Exception $e) { $errorCode = $e->getCode(); } } else { try { $response = $connectOAuthClient->connectAddShare_V2($_G['member']['conopenid'], $_G['member']['conuintoken'], $qzone_params); } catch (Exception $e) { $errorCode = $e->getCode(); } }
function messagecutstr($str, $length = 0, $dot = ' ...') { $str = messagesafeclear($str); $sppos = strpos($str, chr(0) . chr(0) . chr(0)); if ($sppos !== false) { $str = substr($str, 0, $sppos); } #loadcache(array('bbcodes_display', 'bbcodes', 'smileycodes', 'smilies', 'smileytypes', 'domainwhitelist')); $bbcodes = 'b|i|u|p|color|size|font|align|list|indent|float'; $bbcodesclear = 'email|code|free|table|tr|td|img|swf|flash|attach|media|audio|groupid|payto'; $str = preg_replace("/\\[i=?.*?\\](.*?)\\[\\/i\\]/is", '', $str); $str = strip_tags(preg_replace(array("/\\[hide=?\\d*\\](.*?)\\[\\/hide\\]/is", "/\\[quote](.*?)\\[\\/quote]/si", "/\\[url=?.*?\\](.+?)\\[\\/url\\]/si", "/\\[({$bbcodesclear})=?.*?\\](.*?)\\[\\/\\1\\]/si", "/\\[({$bbcodes})=?.*?\\]/i", "/\\[\\/({$bbcodes})\\]/i"), array('', '', '\\1', '', '', ''), $str)); if ($length) { // $str = cutstr($str, $length, $dot); $str = substr_utf8($str, 0, $length); } #$str = preg_replace($_G['cache']['smilies']['searcharray'], '', $str); return trim($str); }