Tae1 发表于 2007-3-1 21:16:42

【03-01】 视频播放器修改代码!discuzcode.func.php

修改discuzcode.func.php


<?php

/*
        (C)2001-2006 Comsenz Inc.
        This is NOT a freeware, use is subject to license terms

        $RCSfile: discuzcode.func.php,v $
        $Revision: 1.38.2.3 $
        $Date: 2006/09/11 01:39:03 $
*/

if(!defined('IN_DISCUZ')) {
        exit('Access Denied');
}

$discuzcodes = array(
        'pcodecount' => -1,
        'codecount' => 0,
        'codehtml' => '',
        'searcharray' => array(),
        'replacearray' => array(),
        'seoarray' => array(
                0 => '',
                1 => $_SERVER['HTTP_HOST'],
                2 => $bbname,
                3 => $seotitle,
                4 => $seokeywords,
                5 => $seodescription
        )
);

if(!is_array($_DCACHE['bbcodes']) || !is_array($_DCACHE['smilies'])) {
        @include DISCUZ_ROOT.'./forumdata/cache/cache_bbcodes.php';
}

foreach($_DCACHE['smilies']['replacearray'] as $key => $smiley) {
        $_DCACHE['smilies']['replacearray'][$key] = '<img src="'.SMDIR.'/'.$smiley.'" smilieid="'.$key.'" border="0" alt="" />';
}

mt_srand((double)microtime() * 1000000);

function attachtag($pid, $aid, &$postlist) {
        global $language, $attachrefcheck, $attachurl;
        if(isset($postlist[$pid]['attachments'][$aid])) {
                include_once language('misc');
                $attach = $postlist[$pid]['attachments'][$aid];
                unset($postlist[$pid]['attachments'][$aid]);

                $replacement = "<br><br>$attach ";
                if($attach['attachimg']) {
                        $replacement .= "<a href=\"member.php?action=credits&view=getattach\" title=\"$language\" target=\"_blank\">$language</a>: ".
                                ($attach['readperm'] ? ", $language $attach" : '').
                                ($attach['description'] ? "[{$attach}]" : '').
                                " <a href=\"attachment.php?aid=$attach\" target=\"_blank\" class=\"bold\">$attach</a> ($attach, $attach)<br><br>".
                                ($attachrefcheck ? "<img src=\"attachment.php?aid=$attach&noupdate=yes\" border=\"0\" onload=\"if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='$language';}\" onmouseover=\"if(this.resized) this.style.cursor='hand';\" onclick=\"if(!this.resized) {return false;} else {window.open('attachment.php?aid=$attach');}\" onmousewheel=\"return imgzoom(this);\">" : "<img src=\"$attachurl/$attach\" border=\"0\" onload=\"if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='$language';}\" onmouseover=\"if(this.resized) this.style.cursor='hand';\" onclick=\"if(!this.resized) {return false;} else {window.open('".addslashes("$attachurl/$attach")."');}\" onmousewheel=\"return imgzoom(this);\" alt=\"\" />");
                } else {
                        $replacement .= "<a href=\"member.php?action=credits&view=getattach\" title=\"$language\" target=\"_blank\">$language</a>: ".
                                        ($attach['description'] ? "[{$attach}]" : '').
                                        " <a href=\"attachment.php?aid=$attach\" target=\"_blank\" class=\"bold\">$attach</a> ($attach, $attach)<br><span class=\"smalltxt\">$language $attach".
                                        ($attach['readperm'] ? ", $language $attach" : '').
                                        "</span><br>";
                }

                return $replacement;
        } else {
                return '<strike>'.$aid.'</strike>';
        }
}

function censor($message) {
        global $_DCACHE;
        require_once(DISCUZ_ROOT.'/forumdata/cache/cache_censor.php');

        if($_DCACHE['censor']['banned'] && preg_match($_DCACHE['censor']['banned'], $message)) {
                showmessage('word_banned');
        } else {
                return empty($_DCACHE['censor']['filter']) ? $message :
                        @preg_replace($_DCACHE['censor']['filter']['find'], $_DCACHE['censor']['filter']['replace'], $message);
        }
}

function censormod($message) {
        global $_DCACHE;
        require_once(DISCUZ_ROOT.'/forumdata/cache/cache_censor.php');
        return $_DCACHE['censor']['mod'] && preg_match($_DCACHE['censor']['mod'], $message);
}

function creditshide($creditsrequire, $message) {
        global $language;
        include_once language('misc');

        if($GLOBALS['credits'] < $creditsrequire && !$GLOBALS['forum']['ismoderator']) {
                return '<b>'.eval("return \"$language\";").'</b>';
        } else {
                return '<b>'.eval("return \"$language\";").'</b><br>'.
                        '==============================<br><br>'.
                        str_replace('\\"', '"', $message).'<br><br>'.
                        '==============================';
        }
}

function codedisp($code) {
        global $discuzcodes;
        $discuzcodes['pcodecount']++;
        $code = htmlspecialchars(str_replace('\\"', '"', preg_replace("/^[\n\r]*(.+?)[\n\r]*$/is", "\\1", $code)));
        $discuzcodes['codehtml'][$discuzcodes['pcodecount']] = "<br><br><div class=\"msgheader\"><div class=\"right\"><a href=\"###\" class=\"smalltxt\" onclick=\"copycode($('code$discuzcodes'));\"></a></div>CODE:</div><div class=\"msgborder\" id=\"code$discuzcodes\">$code</div><br>";
        $discuzcodes['codecount']++;
        return "[\tDISCUZ_CODE_$discuzcodes\t]";
}

function karmaimg($rate, $ratetimes) {
        $karmaimg = '';
        if($rate && $ratetimes) {
                $image = $rate > 0 ? 'agree.gif' : 'disagree.gif';
                for($i = 0; $i < ceil(abs($rate) / $ratetimes); $i++) {
                        $karmaimg .= '<img src="'.IMGDIR.'/'.$image.'" border="0" align="right" alt="" />';
                }
        }
        return $karmaimg;
}

function parseurl($message) {
        return preg_match("/\.+?\[\/code\]/is", $message) ? $message :
                substr(preg_replace(        array(
                                                "/(?<=[^\]a-z0-9-=\"'\\/])(http:\/\/+\.(jpg|gif|png|bmp))/i",
                                                "/(?<=[^\]\)a-z0-9-=\"'\\/])((https?|ftp|gopher|news|telnet|rtsp|mms|callto):\/\/|www\.)(+)/i",
                                                "/(?<=[^\]\)a-z0-9\/\-_.~?=:.])(+(\.+)*@+(\.+)*(\.{2,4}))/i"
                                        ), array(
                                                "\\1",
                                                "\\1\\3",
                                                "\\0"
                                        ), ' '.$message), 1);
}

function parsetable($width, $message) {
        $width = substr($width, -1) == '%' ? (substr($width, 0, -1) <= 98 ? $width : '98%') : ($width <= 560 ? $width : '98%');
        return '<table '.
                ($width == '' ? NULL : 'width="'.$width.'" ').
                'align="center" class="t_table">'.
                str_replace(array('', '', '', '', '\\"'), array('<tr>', '<td>', '</td>', '</tr>', '"'), preg_replace("/\/is", '<td colspan="\\1" rowspan="\\2" width="\\4">', $message)).
                '</table>';
}

function discuzcode($message, $smileyoff, $bbcodeoff, $htmlon = 0, $allowsmilies = 1, $allowbbcode = 1, $allowimgcode = 1, $allowhtml = 0, $jammer = 0, $parsetype = '0', $authorid = '0') {
        global $discuzcodes, $credits, $tid, $discuz_uid, $highlight, $maxsmilies, $db, $tablepre;


        if($parsetype != 1 && !$bbcodeoff && $allowbbcode) {
                $message = preg_replace("/\s*\(.+?)\[\/code\]\s*/ies", "codedisp('\\1')", $message);
        }

        if(!$htmlon && !$allowhtml) {
                $message = $jammer ? preg_replace("/\r\n|\n|\r/e", "jammer()", dhtmlspecialchars($message)) : dhtmlspecialchars($message);
        }

        if(!$smileyoff && $allowsmilies && !empty($GLOBALS['_DCACHE']['smilies']) && is_array($GLOBALS['_DCACHE']['smilies'])) {
                $message = preg_replace($GLOBALS['_DCACHE']['smilies']['searcharray'], $GLOBALS['_DCACHE']['smilies']['replacearray'], $message, $maxsmilies);
        }

        if(!$bbcodeoff && $allowbbcode) {

                if(empty($discuzcodes['searcharray'])) {
                        $discuzcodes['searcharray']['bbcode_regexp'] = array(
                                "/\\s*(www.|https?:\/\/|ftp:\/\/|gopher:\/\/|news:\/\/|telnet:\/\/|rtsp:\/\/|mms:\/\/|callto:\/\/|ed2k:\/\/){1}([^\[\"']+?)\s*\[\/url\]/ie",
                                "/\+?)\](.+?)\[\/url\]/is",
                                "/\+?)\](.+?)\[\/url\]/is",
                                "/\\s*(+)@(+[.]+)\s*\[\/email\]/i",
                                "/\+)@(+[.]+)\](.+?)\[\/email\]/is",
                                "/\+?)\]/i",
                                "/\/i",
                                "/\/i",
                                "/\+?)\]/i",
                                "/\+?)\]/i"
                        );
                        $discuzcodes['replacearray']['bbcode_regexp'] = array(
                                "cuturl('\\1\\2')",
                                "<a href=\"http://www.\\1\" target=\"_blank\">\\2</a>",
                                "<a href=\"\\1://\\2\" target=\"_blank\">\\3</a>",
                                "<a href=\"mailto:\\1@\\2\">\\1@\\2</a>",
                                "<a href=\"mailto:\\1@\\2\">\\3</a>",
                                "<font color=\"\\1\">",
                                "<font size=\"\\1\">",
                                "<font style=\"font-size: \\1\">",
                                "<font face=\"\\1\">",
                                "<p align=\"\\1\">"
                        );

                        $discuzcodes['searcharray']['bbcode_regexp'][] = "/\s*\[\n\r]*(.+?)[\n\r]*\[\/table\]\s*/ies";
                        $discuzcodes['replacearray']['bbcode_regexp'][] = "parsetable('\\2', '\\3')";
                        $discuzcodes['searcharray']['bbcode_regexp'][] = "/\s*\[\n\r]*(.+?)[\n\r]*\[\/table\]\s*/ies";
                        $discuzcodes['replacearray']['bbcode_regexp'][] = "parsetable('\\2', '\\3')";

                        if($parsetype != 1) {
                                $discuzcodes['searcharray']['bbcode_regexp'][] = "/\s*\[\n\r]*(.+?)[\n\r]*\[\/quote\]\s*/is";
                                $discuzcodes['searcharray']['bbcode_regexp'][] = "/\s*\[\n\r]*(.+?)[\n\r]*\[\/free\]\s*/is";
                                $discuzcodes['replacearray']['bbcode_regexp'][] = "<br><br><div class=\"msgheader\">QUOTE:</div><div class=\"msgborder\">\\1</div><br>";
                                $discuzcodes['replacearray']['bbcode_regexp'][] = "<br><br><div class=\"msgheader\">FREE:</div><div class=\"msgborder\">\\1</div><br>";
                        }

                        $discuzcodes['searcharray']['bbcode_regexp'] = array_merge($discuzcodes['searcharray']['bbcode_regexp'], $discuzcodes['searcharray']['bbcode_regexp']);
                        $discuzcodes['replacearray']['bbcode_regexp'] = array_merge($discuzcodes['replacearray']['bbcode_regexp'], $discuzcodes['replacearray']['bbcode_regexp']);

                        $discuzcodes['searcharray']['bbcode_str'] = array(
                                '', '', '', '', '', '',
                                '', '', '', '', '', '', '',
                                '', '[*]', '', '', ''
                        );

                        $discuzcodes['replacearray']['bbcode_str'] = array(
                                '</font>', '</font>', '</font>', '</p>', '<b>', '</b>', '<i>',
                                '</i>', '<u>', '</u>', '<ul>', '<ol type=1>', '<ol type=a>',
                                '<ol type=A>', '<li>', '</ul></ol>', '<blockquote>', '</blockquote>'
                        );
                }

                if($parsetype != 1) {
                        $discuzcodes['searcharray']['bbcode_regexp'] = "/\\s*\(seller\)(.*)\(\/seller\)\s*(\(subject\)(.*)\(\/subject\))?\s*(\(body\)(.*)\(\/body\))?\s*(\(gross\)(.*)\(\/gross\))?\s*(\(price\)(.*)\(\/price\))?\s*(\(url\)(.*)\(\/url\))?\s*(\(type\)(.*)\(\/type\))?\s*(\(transport\)(.*)\(\/transport\))?\s*(\(ordinary_fee\)(.*)\(\/ordinary_fee\))?\s*(\(express_fee\)(.*)\(\/express_fee\))?\s*\[\/payto\]/iesU";
                        $discuzcodes['replacearray']['bbcode_regexp'] = "payto('\\1',array('subject'=>'\\3','body'=>'\\5','price'=>'\\7','price'=>'\\9','url'=>'\\11','type'=>'\\13','transport'=>'\\15','ordinary_fee'=>'\\17','express_fee'=>'\\19','authorid'=>'$authorid'))";
                }

                @$message = str_replace($discuzcodes['searcharray']['bbcode_str'], $discuzcodes['replacearray']['bbcode_str'],
                                preg_replace(
                                        ($parsetype != 1 && $allowbbcode == 2 && $GLOBALS['_DCACHE']['bbcodes'] ? array_merge($discuzcodes['searcharray']['bbcode_regexp'], $GLOBALS['_DCACHE']['bbcodes']['searcharray']) : $discuzcodes['searcharray']['bbcode_regexp']),
                                        ($parsetype != 1 && $allowbbcode == 2 && $GLOBALS['_DCACHE']['bbcodes'] ? array_merge($discuzcodes['replacearray']['bbcode_regexp'], $GLOBALS['_DCACHE']['bbcodes']['replacearray']) : $discuzcodes['replacearray']['bbcode_regexp']),
                                        $message));

                if(!in_array($parsetype, array(1, 2)) && preg_match("/\.+?\[\/hide\]/is", $message)) {
                        if(stristr($message, '')) {
                                global $language;
                                include_once language('misc');

                                $query = $db->query("SELECT pid FROM {$tablepre}posts WHERE tid='$tid' AND authorid='$discuz_uid' LIMIT 1");
                                if($GLOBALS['forum']['ismoderator'] || $db->result($query, 0)) {
                                        $message = preg_replace("/\\s*(.+?)\s*\[\/hide\]/is",
                                                '<span class="bold">'.$language['post_hide_reply'].'</span><br>'.
                                                '==============================<br><br>'.
                                                '\\1<br><br>'.
                                                '==============================',
                                                $message);
                                } else {
                                        $message = preg_replace("/\(.+?)\[\/hide\]/is", '<b>'.$language['post_hide_reply_hidden'].'</b>', $message);
                                }
                        }
                        $message = preg_replace("/\\s*(.+?)\s*\[\/hide\]/ies", "creditshide(\\1,'\\2')", $message);
                }
        }

        if(!$bbcodeoff) {
                if(empty($discuzcodes['searcharray']['imgcode'])) {
                        $discuzcodes['searcharray']['imgcode'] = array(
                                "/\\s*([^\[\<\r\n]+?)\s*\[\/swf\]/ies",
                                "/\\s*([^\[\<\r\n]+?)\s*\[\/img\]/ies",
                                "/\(\d{1,3})\]\s*([^\[\<\r\n]+?)\s*\[\/img\]/ies",
                              "/\(\d{1,3})\]\s*([^\[\<\r\n]+?)\s*\[\/swf\]/ies",
                              "/\\s*(.+?)\s*\[\/wmv\]/ies",
                              "/\\s*(.+?)\s*\[\/rm\]/ies",
                              "/\(\d+?)(\d+?)\]\s*(.+?)\s*\[\/wmv\]/ies",
                              "/\(\d+?)(\d+?)\]\s*(.+?)\s*\[\/rm\]/ies"
                        );

                        $discuzcodes['replacearray']['imgcode'] = $allowimgcode ? array(
                                "bbcodeurl('\\1', ' <img src=\"images/attachicons/flash.gif\" align=\"absmiddle\" alt=\"\" /> <a href=\"%s\" target=\"_blank\">Flash: %s</a> ')",
                                "bbcodeurl('\\1', '<img src=\"%s\" border=\"0\" onload=\"if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt=\'Click here to open new window\\nCTRL+Mouse wheel to zoom in/out\';}\" onmouseover=\"if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor=\'hand\'; this.alt=\'Click here to open new window\\nCTRL+Mouse wheel to zoom in/out\';}\" onclick=\"if(!this.resized) {return true;} else {window.open(\'%s\');}\" onmousewheel=\"return imgzoom(this);\" alt=\"\" />')",
                                "bbcodeurl('\\3', '<img width=\"\\1\" height=\"\\2\" src=\"%s\" border=\"0\" alt=\"\" />')",
                              "bbcodeurl('\\3', '[<a href=\"%s\" target=\"_blank\">新开窗口</a>]<br><embed width=\"\\1\" height=\"\\2\" src=\"\\3\" type=\"application/x-shockwave-flash\"></embed> ')",
                              "bbcodeurl('\\1', '[<a href=\"%s\">下载播放</a>]<br><object align=\"middle\" classid=\"CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95\" class=\"OBJECT\" id=\"MediaPlayer\" width=\"480\" height=\"360\" ><PARAM NAME=\"AutoStart\" VALUE=\"0\" ><param name=\"ShowStatusBar\" value=\"-1\"><param name=\"Filename\" value=\"%s\"><embed type=\"application/x-oleobject\" codebase=\"http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701\" flename=\"mp\" src=\"%s\" width=\"480\" height=\"360\"></embed></object>')",
                              "bbcodeurl('\\1', '[<a href=\"%s\">下载播放</a>]<br><object classid=\"clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA\" id=\"Player\" width=\"480\" height=\"360\" viewastext><param name=\"Autostart\" value=\"0\"><param name=\"CONTROLS\" value=\"ImageWindow\"><param name=\"CONSOLE\" value=\"_master\"><param name=\"LOOP\" value=\"-1\"><param name=\"CENTER\" value=\"0\"></object><br><object classid=clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA height=64 id=Player width=480 VIEWASTEXT><param name=\"_ExtentX\" value=\"18256\"><param name=\"_ExtentY\" value=\"794\"><param name=\"Autostart\" value=\"0\"><param name=\"LOOP\" value=\"0\"><param name=\"CENTER\" value=\"0\"><param name=\"BACKGROUNDCOLOR\" value=\"#000000\"><param name=\"SRC\" value=\"\\1\"></object>')",
                              "bbcodeurl('\\4', '[<a href=\"%s\">下载播放</a>]<br><object align=\"middle\" classid=\"CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95\" class=\"OBJECT\" id=\"MediaPlayer\" width=\"\\1\" height=\"\\2\" ><PARAM NAME=\"AutoStart\" VALUE=\"\\3\" ><param name=\"ShowStatusBar\" value=\"-1\"><param name=\"Filename\" value=\"%s\"><embed type=\"application/x-oleobject\" codebase=\"http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701\" width=\"\\1\" height=\"\\2\"></embed></object>')",
                              "bbcodeurl('\\4', '[<a href=\"%s\">下载播放</a>]<br><object width=\"\\1\" height=\"\\2\" classid=\"clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA\" id=\"Player\" viewastext><param name=\"Autostart\" value=\"\\3\"><param name=\"CONTROLS\" value=\"ImageWindow\"><param name=\"CONSOLE\" value=\"_master\"><param name=\"LOOP\" value=\"-1\"><param name=\"CENTER\" value=\"0\"></object><br><object classid=clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA height=64 id=Player width=\"\\1\" VIEWASTEXT><param name=\"_ExtentX\" value=\"18256\"><param name=\"_ExtentY\" value=\"794\"><param name=\"Autostart\" value=\"\\3\"><param name=\"LOOP\" value=\"-1\"><param name=\"CENTER\" value=\"0\"><param name=\"SRC\" value=\"%s\"></object>')"
                        ) : array(
                                "bbcodeurl('\\1', ' <img src=\"images/attachicons/flash.gif\" align=\"absmiddle\" alt=\"\" /> <a href=\"%s\" target=\"_blank\">Flash: %s</a> ')",
                                "bbcodeurl('\\1', '<a href=\"%s\" target=\"_blank\">%s</a>')",
                                "bbcodeurl('\\3', '<a href=\"%s\" target=\"_blank\">%s</a>')"
                        );
                }
                $message = preg_replace($discuzcodes['searcharray']['imgcode'], $discuzcodes['replacearray']['imgcode'], $message);
        }

        for($i = 0; $i <= $discuzcodes['pcodecount']; $i++) {
                $message = str_replace("[\tDISCUZ_CODE_$i\t]", $discuzcodes['codehtml'][$i], $message);
        }

        if($highlight) {
                foreach(explode('+', $highlight) as $ret) {
                        if($ret) {
                                $message = preg_replace("/(?<=[\s\"\]>()]|[\x7f-\xff]|^)(".preg_quote($ret, '/').")(([.,:;-?!()\s\"<\[]|[\x7f-\xff]|$))/siU", "<u><b><font color=\"#FF0000\">\\1</font></b></u>\\2", $message);
                        }
                }
        }

        return $htmlon || $allowhtml ? $message : nl2br(str_replace(array("\t", '   ', ''), array('&nbsp; &nbsp; &nbsp; &nbsp; ', '&nbsp; &nbsp;', '&nbsp;&nbsp;'), $message));
}

function cuturl($url) {
        $length = 65;
        $urllink = "<a href=\"".(substr(strtolower($url), 0, 4) == 'www.' ? "http://$url" : $url).'" target="_blank">';
        if(strlen($url) > $length) {
                $url = substr($url, 0, intval($length * 0.5)).' ... '.substr($url, - intval($length * 0.3));
        }
        $urllink .= $url.'</a>';
        return $urllink;
}

function bbcodeurl($url, $tags) {
        if(!preg_match("/<.+?>/s", $url)) {
                if(!in_array(strtolower(substr($url, 0, 6)), array('http:/', 'ftp://', 'rtsp:/', 'mms://'))) {
                        $url = 'http://'.$url;
                }
                return str_replace(array('submit', 'logging.php'), array('', ''), sprintf($tags, $url, addslashes($url)));
        } else {
                return '&nbsp;'.$url;
        }
}

function jammer() {
        $randomstr = '';
        for($i = 0; $i < mt_rand(5, 15); $i++) {
                $randomstr .= chr(mt_rand(0, 59)).chr(mt_rand(63, 126));
        }
        if($GLOBALS['thisbg'] == 'altbg1') {
                $thisbg = ALTBG1;
        } elseif($GLOBALS['thisbg'] == 'altbg2') {
                $thisbg = ALTBG2;
        } else {
                $thisbg = $GLOBALS['thisbg'];
        }
        return mt_rand(0, 1) ? '<font style="font-size:0px;color:'.$thisbg.'">'.$GLOBALS['discuzcodes']['seoarray'].$randomstr.'</font>'."\r\n" :
                "\r\n".'<span style="display:none">'.$randomstr.$GLOBALS['discuzcodes']['seoarray'].'</span>';
}

?>
页: [1]
查看完整版本: 【03-01】 视频播放器修改代码!discuzcode.func.php