mingle-forum-hacked/bbcode.php

135 lines
4.6 KiB
PHP

<?php
/*
* Class for parsing BBCode
* @author - Paul Carter, http://cartpauj.com
*Ui = 1 line
*Uis = Multiple Lines
*/
if (!class_exists('cartpaujBBCodeParser'))
{
class cartpaujBBCodeParser {
var $patterns = array
(
'/\[list\](.+)\[\/list\]/Uis',
'/\[\*\](.+)\\n/Ui',
'/\[spoil\](.+)\[\/spoil\]/Uis',
'/\[b\](.+)\[\/b\]/Uis',
'/\[quotetitle\](.+)\[\/quotetitle\]/Uis',
'/\[i\](.+)\[\/i\]/Uis',
'/\[u\](.+)\[\/u\]/Uis',
'/\[font size=[0-9]*\](.+)\[\/font\]/Uis',
'/\[s\](.+)\[\/s\]/Uis',
'/\[url=(.+)\](.+)\[\/url\]/Ui',
'/\[url](.+)\[\/url\]/Ui',
'/\[map](.+)\[\/map\]/Ui',
'/\[yt](.+)\[\/yt\]/Ui',
'/\[embed](.+)\[\/embed\]/Ui',
'/\[email](.+)\[\/email\]/Ui',
'/\[email=(.+)\](.+)\[\/email\]/Ui',
'/\[img\](.+)\[\/img\]/Ui',
'/\[img=(.+)\](.+)\[\/img\]/Ui',
'/\[color=(\#[0-9a-f]{6}|[a-z]+)\](.+)\[\/color\]/Uis',
'/\[left\](.+)\[\/left\]/Uis',
'/\[center\](.+)\[\/center\]/Uis',
'/\[right\](.+)\[\/right\]/Uis',
'/\[justify\](.+)\[\/justify\]/Uis',
'/\[spoiler\](.+)\[\/spoiler\]/Uis',
'/\[spoiler=(.+)\](.+)\[\/spoiler\]/Uis',
'/\[quote](.+)\[\/quote]/Uis'
);
var $replacements = array
(
'<ul>\1</ul>',
'<li>\1</li>',
'<span style="color:transparent">\1</span>',
'<b>\1</b>',
'<div class="quotetitle">\1</div>',
'<i>\1</i>',
'<u>\1</u>',
'<span style="font-size:\1px;">\2</span>',
'<s>\1</s>',
'<a href="\1" target="_blank">\2</a>',
'<a href="\1" target="_blank">\1</a>',
'<iframe width="400" height="325" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="\1&output=embed">Your browser does not support iFrames</iframe>',
'\1',
'\1',
'<a href="mailto:\1">\1</a>',
'<a href="mailto:\1">\2</a>',
'<a href="\1"><img src="\1" alt="Image" /></a>',
'<a href="\1"><img src="\1" alt="\2" /></a>',
'<span style="color: \1;">\2</span>',
'<p style="text-align:left">\1</p>',
'<p style="text-align:center">\1</p>',
'<p style="text-align:right">\1</p>',
'<p style="text-align:justify">\1</p>',
'<ul class="mingle-spoiler-view" style="list-style-type:none"><li style="cursor:pointer"><h3><span>+</span>Spoiler</h3></li><li class="mingle-spoiler-view-hide" style="display:none">\1</li></ul>',
'<ul class="mingle-spoiler-view" style="list-style-type:none"><li style="cursor:pointer"><h3><span>+</span>\1</h3></li><li style="display:none">\2</li></ul>',
'<blockquote>\1</blockquote>'
);
function bbc2html($subject)
{
wp_enqueue_script('mingle-forum', plugins_url('js/script.js', __FILE__), array('jquery'));
$codes = array(array(), array());
preg_match_all('/\[code\](.+)\[\/code\]/Uis', $subject, $codes);
foreach ($codes[0] as $num => $code) {
$subject = str_replace($code, "[code$num]", $subject);
}
$subject = preg_replace($this->patterns, $this->replacements, $subject);
foreach ($codes[1] as $num => $code) {
$subject = str_replace("[code$num]", '<pre class="code">'.$code.'</pre>', $subject);
}
return $subject;
}
function get_editor($text='') {
global $mingleforum;
function mingle_get_editor_mce_external_plugins($plugins) {
$plugins['bbcodev2'] = plugins_url('/js/plugins/bbcodev2/editor_plugin_src.js', __FILE__);
$plugins['emotions'] = plugins_url('/js/plugins/emotions/editor_plugin_src.js', __FILE__);
return $plugins;
}
add_filter('mce_external_plugins', 'mingle_get_editor_mce_external_plugins');
ob_start();
wp_editor($text, 'message', array(
'wpautop' => false,
'tinymce' => array(
'plugins' => 'bbcodev2,emotions',
'theme_advanced_buttons1' => 'bold,italic,underline,strikethrough,pre,blockquote,spoil,justifyleft,justifycenter,justifyright,justifyfull,bullist,link,unlink,image,forecolor,yt,map,emotions',
'theme_advanced_buttons2' => '',
'apply_source_formatting' => false,
'setup' => 'function (ed) {
ed.addButton("pre", {
title: "'.__("Code").'",
image: "'.$mingleforum->skin_url.'/images/bbc/code.png"
})
ed.addButton("yt", {
title: "'.__("Embed YouTube Video").'",
image: "'.$mingleforum->skin_url.'/images/bbc/yt.png"
})
ed.addButton("map", {
title: "'.__("Embed Google Map").'",
image: "'.$mingleforum->skin_url.'/images/bbc/gm.png"
})
ed.addButton("spoil", {
title: "'.__("Spoiler").'",
image: "'.$mingleforum->skin_url.'/images/bbc/spoil.png"
})
}'
)
));
return ob_get_clean();
}
}
}