Example #1
0
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));
}
                 }
             }
             break;
         case 8:
             if (!empty($txtvalueatach)) {
                 $endtxtatach = $this->db1->e(htmlspecialchars(trim(clearnl($txtvalueatach))));
                 if (!empty($endtxtatach)) {
                     $withattach = 1;
                     $typeattach = 8;
                     $txttypeattach = 'book';
                 }
             }
             break;
         case 9:
             if (!empty($txtvalueatach)) {
                 $endtxtatach = $this->db1->e(htmlspecialchars(trim(clearnl($txtvalueatach))));
                 if (!empty($endtxtatach)) {
                     $withattach = 1;
                     $typeattach = 9;
                     $txttypeattach = 'game';
                 }
             }
             break;
     }
 }
 if ($errored == 0) {
     if (empty($txtstatus) && empty($endtxtatach)) {
         $errored = 1;
         $txterror = $this->lang('global_post_txterror5');
     } else {
         $r = $this->db1->query("INSERT INTO posts SET code='" . $codep . "', iduser="******", post='" . $txtstatus . "', typepost='" . $txttypeattach . "', valueattach='" . $endtxtatach . "', whendate='" . time() . "'");