Skip to content

Instantly share code, notes, and snippets.

@Swimburger
Created September 21, 2015 14:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Swimburger/de2a1aa4ea97ae6c1f97 to your computer and use it in GitHub Desktop.
Save Swimburger/de2a1aa4ea97ae6c1f97 to your computer and use it in GitHub Desktop.
Overriding table for ckeditor plugin mybb
<?php
//Disallow direct Initialization for extra security.
if(!defined("IN_MYBB"))
{
die("You Cannot Access This File Directly. Please Make Sure IN_MYBB Is Defined.");
}
// Information
function cktableoverride_info()
{
return array(
"name" => "Override CKeditor table",
"description"=> "A plugin to override the table html output from ckeditor",
"website" => "http://stackoverflow.com/questions/32663683/ckeditor-change-table-style",
"author" => "Niels Swimberghe",
"authorsite" => "http://www.sniels.com",
"version" => "1.0",
"guid" => ""
);
}
// Activate
function cktableoverride_activate() {
global $db;
$cktableoverride_group = array(
'gid' => 'NULL',
'name' => 'cktableoverride',
'title' => 'My First Plugin',
'description' => 'Settings For My First Plugin',
'disporder' => "1",
'isdefault' => "0",
);
$db->insert_query('settinggroups', $cktableoverride_group);
$gid = $db->insert_id();
$cktableoverride_setting = array(
'sid' => 'NULL',
'name' => 'cktableoverride_enable',
'title' => 'Do you want to enable My First Plugin?',
'description' => 'If you set this option to yes, this plugin be active on your board.',
'optionscode' => 'yesno',
'value' => '1',
'disporder' => 1,
'gid' => intval($gid),
);
$db->insert_query('settings', $cktableoverride_setting);
rebuild_settings();
}
// Deactivate
function cktableoverride_deactivate()
{
global $db;
$db->query("DELETE FROM ".TABLE_PREFIX."settings WHERE name IN ('cktableoverride_enable')");
$db->query("DELETE FROM ".TABLE_PREFIX."settinggroups WHERE name='cktableoverride'");
rebuild_settings();
}
$plugins->add_hook('parse_message','custom_ckeditor_parser',9);
function custom_ckeditor_parser($m){
// Table:
while(preg_match("#\[table\](.*?)\[/table\]#si", $m, $m1))
{
while(preg_match("#\[tr\](.*?)\[/tr\]#si", $m1[1], $m2))
{
$m2[1] = preg_replace("#\[td\](.*?)\[/td\]#si", '<td>$1</td>', $m2[1]);
$m1[1] = str_replace($m2[0], '<tr>'.$m2[1].'</tr>', $m1[1]);
}
$m = str_replace($m1[0], '<table class="ckeditor_table">'.$m1[1].'</table>', $m);
}
return $m;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment