Quote: '; $bb_codes['quote_name'] = '
\\1 wrote:
'; $bb_codes['quote_close'] = '
'; $bb_codes['code_start'] = '
Code:
'; $bb_codes['code_end'] = '
'; $bb_codes['php_start'] = '
PHP:
'; $bb_codes['php_end'] = '
'; $bb_codes['win_start'] = ' Smiley Selection '; $bb_codes['win_end'] = '
'.$smilies_close.'
'; if (file_exists('themes/'.$CPG_SESS['theme'].'/bbcode.inc')) { include('themes/'.$CPG_SESS['theme'].'/bbcode.inc'); } function get_code_lang($var, $array) { return (isset($array[$var])) ? $array[$var] : $var; } function smilies_table($mode, $field='message', $form='post') { global $bb_codes, $db, $prefix, $smilies_path, $MAIN_CFG, $CPG_SESS; global $smilies_more, $smilies_desc; $url = $MAIN_CFG['server']['path'].getlink("smilies&field=$field&form=$form"); $inline_cols = 4; $inline_rows = 5; $window_cols = 8; $content = ''; if ($mode == 'window') { $content = $bb_codes['win_start']; } else if (!defined('BBCODE_JS_ACTIVE')) { $content .= ''; define('BBCODE_JS_ACTIVE', 1); } if ($mode == 'onerow') { $content .= ' '; } else { $content .= '
'; } if ($result = $db->sql_query('SELECT emoticon, code, smile_url FROM '.$prefix.'_bbsmilies ORDER BY smilies_id', false, __FILE__, __LINE__)) { $num_smilies = 0; $rowset = array(); while ($row = $db->sql_fetchrow($result)) { if (empty($rowset[$row['smile_url']])) { $rowset[$row['smile_url']]['code'] = str_replace("'", "\\'", str_replace('\\', '\\\\', $row['code'])); // process the smiley description' $rowset[$row['smile_url']]['emoticon'] = get_code_lang($row['emoticon'], $smilies_desc); $num_smilies++; } } if ($num_smilies) { $smilies_count = ($mode == 'inline') ? min(19, $num_smilies) : $num_smilies; $smilies_split_row = ($mode == 'inline') ? $inline_cols - 1 : $window_cols - 1; $s_colspan = $row = $col = 0; while (list($smile_url, $data) = each($rowset)) { if (!$col) { $content .= ''; } $content .= ""; $s_colspan = max($s_colspan, $col + 1); if ($mode == 'onerow') { if ($col >= 15) { if ($num_smilies > 15) { $content .= ""; } break; } $col++; } else if ($col == $smilies_split_row) { $content .= ''; $col = 0; if ($mode == 'inline' && $row == $inline_rows - 1) { break; } $row++; } else { $col++; } } if ($col > 0) { $content .= ''; } if ($mode == 'inline' && $num_smilies > $inline_rows * $inline_cols) { $content .= ""; } } } $content .= "\n
\"".$data['emoticon']."\"$smilies_more
$smilies_more
\n"; if ($mode == 'window') { $content .= $bb_codes['win_end']; } return $content; } function bbcode_table($field='message', $form='post', $allowed=0) { global $bbbttns_path, $color_desc, $font_desc, $textcolor1, $flag_desc, $flag_code; $content = ''; if (!defined('BBCODE_JS_ACTIVE')) { $content .= ''; define('BBCODE_JS_ACTIVE', 1); } $content .= ''; } // This ends the section for the additional Media BBCode Buttons $content .= '
bold italic underline    Left to Right Right to Left    URL Email'; if ($allowed) { $content .= '    justify left center right'; } $content .= '    '; if ($allowed) { $content .= '
Ordered List Unordered List List    Quote Code PHP    H-Line    Marque to down Marque to up Marque to left Marque to right    '; } if ($allowed) { $content .= '
Image Flash Video    MP3 Quicktime MediaPlayer Playlist       ; ; } // This section is for additional Media BBCode Buttons if ($allowed) { $content .= '
Apple Trailer YouTube MySpace iFilm Divx Video
'; return $content; } // smilies_pass( function set_smilies($message, $url='') { static $orig, $repl; if (!isset($orig)) { global $db, $prefix, $smilies_path, $smilies_desc; $orig = $repl = array(); $smilies = $db->sql_ufetchrowset('SELECT * FROM '.$prefix.'_bbsmilies', SQL_BOTH, __FILE__, __LINE__); if (count($smilies)) { usort($smilies, 'sort_smiley'); } if ($url != '') { if (substr($url, -1) != '/') { $url .= '/'; } } for ($i = 0; $i < count($smilies); $i++) { $smilies[$i]['code'] = str_replace('/', '\/', preg_quote($smilies[$i]['code'])); $orig[] = "/(?<=.\W|\W.|^\W)" . $smilies[$i]['code'] . "(?=.\W|\W.|\W$)/s"; $repl[] = '' . get_code_lang($smilies[$i]['emoticon'], $smilies_desc) . ''; } } if (count($orig)) { $message = preg_replace($orig, $repl, " $message "); $message = substr($message, 1, -1); } return $message; } function sort_smiley($a, $b) { if (strlen($a['code']) == strlen($b['code'])) { return 0; } return (strlen($a['code']) > strlen($b['code'])) ? -1 : 1; } // bbencode_first_pass() prepare bbcode for db insert function encode_bbcode($text) { return BBCode::encode($text); } function decode_bb_all($text, $allowed=0, $allow_html=false, $url='') { return set_smilies(decode_bbcode($text, $allowed, $allow_html), $url); } function decode_bbcode($text, $allowed=0, $allow_html=false, $user_sig_bbcode_uid='') { return BBCode::decode($text, $allowed, $allow_html, $user_sig_bbcode_uid); } function shrink_url($url) { $url = preg_replace("#(^[\w]+?://)#", '', $url); return (strlen($url) > 35) ? substr($url,0,22).'...'.substr($url,-10) : $url; } function make_clickable($text) { $ret = ' ' . $text; $ret = preg_replace("#(^|[\n ])([\w]+?://[\w]+[^ \"\n\r\t<]*)#ise", "'\\1'.shrink_url('\\2').''", $ret); $ret = preg_replace("#(^|[\n ])((www|ftp)\.[^ \"\t\n\r<]*)#ise", "'\\1'.shrink_url('\\2').''", $ret); $ret = preg_replace("#(^|[\n ])([a-z0-9&\-_\.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i", "\\1 \\2 @ \\3", $ret); $ret = substr($ret, 1); return($ret); } // prepare_message( function message_prepare($message, $html_on, $bbcode_on) { global $board_config; // // Clean up the message // $message = trim($message); if ($html_on) { $allowed_html_tags = split(',', $board_config['allow_html_tags']); $end_html = 0; $start_html = 1; $tmp_message = ''; $message = ' ' . $message . ' '; while ($start_html = strpos($message, '<', $start_html)) { $tmp_message .= BBCode::encode_html(substr($message, $end_html + 1, ($start_html - $end_html - 1))); if ($end_html = strpos($message, '>', $start_html)) { $length = $end_html - $start_html + 1; $hold_string = substr($message, $start_html, $length); if (($unclosed_open = strrpos(' ' . $hold_string, '<')) != 1) { $tmp_message .= BBCode::encode_html(substr($hold_string, 0, $unclosed_open - 1)); $hold_string = substr($hold_string, $unclosed_open - 1); } $tagallowed = false; for ($i = 0; $i < sizeof($allowed_html_tags); $i++) { $match_tag = trim($allowed_html_tags[$i]); if (preg_match('#^<\/?' . $match_tag . '[> ]#i', $hold_string)) { $tagallowed = (preg_match('#^<\/?' . $match_tag . ' .*?(style[ ]*?=|on[\w]+[ ]*?=)#i', $hold_string)) ? false : true; } } $tmp_message .= ($length && !$tagallowed) ? BBCode::encode_html($hold_string) : $hold_string; $start_html += $length; } else { $tmp_message .= BBCode::encode_html(substr($message, $start_html)); $start_html = strlen($message); $end_html = $start_html; } } if ($end_html != strlen($message) && $tmp_message != '') { $tmp_message .= BBCode::encode_html(substr($message, $end_html + 1)); } $message = ($tmp_message != '') ? trim($tmp_message) : trim($message); } else { $message = BBCode::encode_html($message); } if ($bbcode_on) { $message = BBCode::encode($message); } return $message; } class BBCode { function encode_html($text) { return (ereg('<', $text)) ? htmlprepare($text, false, ENT_NOQUOTES) : $text; } function encode($text) { // Split all bbcodes. $text_parts = BBCode::split_bbcodes($text); // Merge all bbcodes and do special actions depending on the type of code. $text = ''; while ($part = array_shift($text_parts)) { if (isset($part['code'])) { if ($part['code'] == 'list' && $part['text'][5] == '=') { // [list=x] for ordered lists. $part['text'] = substr($part['text'], 0, -1).':o]'; } if ($part['code'] != 'code' && $part['code'] != 'php' && $part['subc']) { $part['text'] = '['.encode_bbcode(substr($part['text'], 1, -1)).']'; } } $text .= $part['text']; } return trim($text); } function decode($text, $allowed=0, $allow_html=false, $user_sig_bbcode_uid='') { global $bb_codes; // First: If there isn't a "[" and a "]" in the message, don't bother. if (!(strpos($text, '[') !== false && strpos($text, ']'))) { return ($allow_html ? (ereg('<', $text) ? $text : nl2br($text)) : nl2br(strip_tags($text))); } if ($user_sig_bbcode_uid != '') $text = preg_replace("/:(([a-z0-9]+:)?)$user_sig_bbcode_uid(=|\])/si", '\\3', $text); // pad it with a space so we can distinguish between FALSE and matching the 1st char (index 0). $text = BBCode::split_on_bbcodes($text, $allowed, $allow_html, $user_sig_bbcode_uid); // Patterns and replacements for URL, email tags etc. $patterns = $replacements = array(); $text = str_replace('/watch?v=', '/v/', $text); $text = str_replace('/videoplay?docid=', '/googleplayer.swf?docId=', $text); // [list] and [list=x] for (un)ordered lists. // unordered lists $text = str_replace('[list]', '', $text); $text = str_replace('[/list]', '', $text); // $patterns[] = '#\[list\](.*?)\[/list:u\]#si'; // $replacements[] = ''; // Ordered lists $text = preg_replace('/\[list=([ai1])\]/si', '
    ', $text); $text = str_replace('[/list:o]', '
', $text); // $patterns[] = '#\[list=([ai1])\](.*?)\[/list:o\]#si'; // $replacements[] = '
    \\2
'; // li tags $text = str_replace('[*]', '
  • ', $text); // colours $patterns[] = '#\[color=(\#[0-9A-F]{6}|[a-z]+)\](.*?)\[/color\]#si'; $replacements[] = '\\2'; // size $patterns[] = '#\[size=([1-2]?[0-9])\](.*?)\[/size\]#si'; $replacements[] = '\\2'; // [b] and [/b] for bolding text. $patterns[] = '#\[b\](.*?)\[/b\]#si'; $replacements[] = '\\1'; // [u] and [/u] for underlining text. $patterns[] = '#\[u\](.*?)\[/u\]#si'; $replacements[] = '\\1'; // [i] and [/i] for italicizing text. $patterns[] = '#\[i\](.*?)\[/i\]#si'; $replacements[] = '\\1'; // align $patterns[] = '#\[align=(left|right|center|justify)\](.*?)\[/align\]#si'; $replacements[] = '
    \\2
    '; // [url]xxxx://www.cpgnuke.com[/url] $patterns[] = "#\[url\]([\w]+?://[^ \"\n\r\t<]*?)\[/url\]#ise"; $replacements[] = "''.shrink_url('\\1').''"; // [url]www.cpgnuke.com[/url] (no xxxx:// prefix). $patterns[] = "#\[url\]((www|ftp)\.[^ \"\n\r\t<]*?)\[/url\]#ise"; $replacements[] = "''.shrink_url('\\1').''"; // [url=www.cpgnuke.com]cpgnuke[/url] (no xxxx:// prefix). $patterns[] = "#\[url=((www|ftp)\.[^ \"\n\r\t<]*?)\](.*?)\[/url\]#is"; $replacements[] = "\\3"; // [url=xxxx://www.cpgnuke.com]cpgnuke[/url] // [url=index.php]cpgnuke[/url] (local). $patterns[] = "#\[url=([\w]+(://|\.|/)[^ (\"\n\r\t<]*?)\](.*?)\[/url\]#is"; $replacements[] = "\\3"; // [email]user@domain.tld[/email] code.. $patterns[] = "#\[email\]([a-z0-9&\-_.]+?@[\w\-]+\.([\w\-\.]+\.)?[\w]+)\[/email\]#si"; $replacements[] = "\\1"; if ($allowed) { // [hr] $patterns[] = "#\[hr\]#si"; $replacements[] = '
    '; // marquee $patterns[] = "#\[marq=(left|right|up|down)\](.*?)\[/marq\]#si"; $replacements[] = '\\2'; // [ol] and [/ol] for ordered list. $patterns[] = '#\[ol\](.*?)\[/ol\]#si'; $replacements[] = '
      \\1
    '; // [ul] and [/ul] for unordered list. $patterns[] = '#\[ul\](.*?)\[/ul\]#si'; $replacements[] = ''; // [li] and [/li] for bolding text. $patterns[] = '#\[li\](.*?)\[/li\]#si'; $replacements[] = '
  • \\1
  • '; // [img]image_url_here[/img] code.. $patterns[] = "#\[img\]([\w]+(://|\.|/)[^ (\"\n\r\t<]*?)\[/img\]#si"; $replacements[] = "\"\""; // [flash width= height= bgcolor= ] and [/flash] code.. $patterns[] = "#\[flash width=([0-9]?[0-9]?[0-9]) height=([0-4]?[0-9]?[0-9]) bgcolor=([^ \"\n\r\t<]*?)\]((ht|f)tp://)([^ \?&=\"\n\r\t<]*?(\.(swf|fla)))\[/flash\]#si"; $replacements[] = '
    '; // [video width= height= loop= ] and [/video] code.. $patterns[] = "#\[video width=([0-6]?[0-9]?[0-9]) height=([0-4]?[0-9]?[0-9])\]([\w]+?://[^ \?&=\"\n\r\t<]*?(\.(avi|mpg|mpeg|wmv)))\[/video\]#si"; $replacements[] = '
    '; // [mp3] and [/mp3] code.. $patterns[] = "#\[mp3 width=([0-6]?[0-9]?[0-9]) height=([0-4]?[0-9]?[0-9])\]([\w]+?://[^ \?&=\"\n\r\t<]*?(\.(mp3)))\[/mp3\]#si"; $replacements[] = '
    '; // [mov width= height= ] and [/mov] code.. $patterns[] = "#\[mov width=([0-6]?[0-9]?[0-9]) height=([0-4]?[0-9]?[0-9])\]([\w]+?://[^ \?&=\"\n\r\t<]*?(\.(mov)))\[/mov\]#si"; $replacements[] = '
    '; // [mplayer] and [/mplayer] code.. $patterns[] = "#\[mplayer width=([0-6]?[0-9]?[0-9]) height=([0-4]?[0-9]?[0-9]) lightcolor=([^ \"\n\r\t<]*?) backcolor=([^ \"\n\r\t<]*?) frontcolor=([^ \"\n\r\t<]*?) image=([^ \"\n\r\t<]*?)\]([\w]+?://[^ \?&=\"\n\r\t<]*?(\.(flv)))\[/mplayer\]#si"; $replacements[] = '
    '; // [playlist] and [/playlist] code.. $patterns[] = "#\[playlist width=([0-6]?[0-9]?[0-9]) height=([0-4]?[0-9]?[0-9]) disphght=([0-4]?[0-9]?[0-9]) lightcolor=([^ \"\n\r\t<]*?) backcolor=([^ \"\n\r\t<]*?) frontcolor=([^ \"\n\r\t<]*?)\]([^ \"\n\r\t<]*?)\[/playlist\]#si"; $replacements[] = '
    '; // [flag] code.. $patterns[] = "#\[flag=(.*?)\]#si"; $replacements[] = ''; // This section is for additional Media BBCode Buttons // [trailer width= height= ] and [/trailer] code.. $patterns[] = "#\[trailer width=([0-9]?[0-9]?[0-9]) height=([0-4]?[0-9]?[0-9])\]([\w]+?://[^ \?&=\"\n\r\t<]*?(\.(mov)))\[/trailer\]#si"; $replacements[] = '
    '; // [youtube] youtube video url [/youtube] code.. $patterns[] = "#\[youtube\]([\w]+(://|\.|/)[^ (\"\n\r\t<]*?)\[/youtube\]#si"; $replacements[] = '
    '; // [myspace] myspace video id [/myspace] code.. $patterns[] = "#\[myspace\]([^ \"\n\r\t<]*?)\[/myspace\]#si"; $replacements[] = '
    '; // [google] google video id [/google] code.. $patterns[] = "#\[google\]([\w]+(://|\.|/)[^ (\"\n\r\t<]*?)\[/google\]#si"; $replacements[] = '
    '; // [ifilm] ifilm video id [/ifilm] code.. $patterns[] = "#\[ifilm\]([^ \"\n\r\t<]*?)\[/ifilm\]#si"; $replacements[] = '
    '; // [metacafe] metacafe video [/metacafe] code.. $patterns[] = "#\[metacafe\]([^ \"\n\r\t<]*?)\[/metacafe\]#si"; $replacements[] = '
    '; // [divx] divx video url [/divx] code.. $patterns[] = "#\[divx width=([0-6]?[0-9]?[0-9]) height=([0-4]?[0-9]?[0-9])\]([\w]+?://[^ \?&=\"\n\r\t<]*?(\.(avi|divx)))\[/divx\]#si"; $replacements[] = '
    '; // [item] and [itemico] - Parse text for ItemStats mod if( is_active('item_stats') ) { require_once(BASEDIR.'modules/item_stats/df_itemstats.php'); $text = itemstats_parse($text); // [youtube] youtube video id [/youtube] code.. $patterns[] = "#\[youtube\]([^ \"\n\r\t<]*?)\[/youtube\]#si"; $replacements[] = '
    '; // This ends the section for the additional Media BBCode Buttons } } $text = preg_replace($patterns, $replacements, $text); // Fix linebreaks on important items $text = preg_replace("/
    /si", "
    ", $text); $text = preg_replace("/