MyBB Community Forums

Full Version: HTML in Posts 1.5 ( Post reply bug! HELP )
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I installed the plugin, HTML in posts 1.5 on my forum.

It didn't work, so I de-activated it, but now it's left my reply screen with the text editor out of place...

[Image: FJHZUK3.png]

I can't get support on this issue via the plugin creator because he doesnt allow free support.

<?php
/***************************************************************************
 *
 *  HTML in Posts plugin (/inc/plugins/htmlposts.php)
 *  Author: Pirata Nervo
 *  Copyright: © 2009-2011 Pirata Nervo
 *  
 *  Website: http://mybb-plugins.com
 *  License: license.txt
 *
 *  This plugin adds the possibility to use HTML in posts.
 *
 ***************************************************************************/

/****************************************************************************
	This program is free software: you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation, either version 3 of the License, or
	(at your option) any later version.
	
	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.
	
	You should have received a copy of the GNU General Public License
	along with this program.  If not, see <http://www.gnu.org/licenses/>.
****************************************************************************/

// do NOT remove for security reasons!
if(!defined("IN_MYBB"))
{
	$secure = "-#77;-#121;-#66;-#66;-#45;-#80;-#108;-#117;-#103;-#105;-#110;-#115;";
	$secure = str_replace("-", "&", $secure);
	die("This file cannot be accessed directly.".$secure);
}

// add hooks
$plugins->add_hook('parse_message_start', 'htmlposts_parse');

function htmlposts_info()
{
	return array(
		"name"			=> "HTML in Posts",
		"description"	=> "This plugin adds the possibility to use HTML in posts.",
		"website"		=> "http://mybb-plugins.com",
		"author"		=> "Pirata Nervo",
		"authorsite"	=> "http://consoleaddicted.com",
		"version"		=> "1.5",
		"guid" 			=> "1e7c24cc5352de0fbc1e7be40ef1ad60",
		"compatibility"	=> "16*"
	);
}


function htmlposts_activate()
{
	global $db, $lang;
	
	// create settings group
	$insertarray = array(
		'name' => 'htmlposts', 
		'title' => 'HTML in Posts', 
		'description' => "Settings for HTML in Posts plugin.", 
		'disporder' => 100, 
		'isdefault' => 0
	);
	$gid = $db->insert_query("settinggroups", $insertarray);
	
	// add settings
	$setting = array(
		"sid"			=> NULL,
		"name"			=> "htmlposts_groups",
		"title"			=> "Allowed Groups",
		"description"	=> "Enter the group IDs that can use HTML in posts. (separated by a comma, can be blank to allow all)",
		"optionscode"	=> "text",
		"value"			=> '',
		"disporder"		=> 1,
		"gid"			=> $gid
	);

	$db->insert_query("settings", $setting);
	
	$setting = array(
		"sid"			=> NULL,
		"name"			=> "htmlposts_uids",
		"title"			=> "Allowed Users",
		"description"	=> "Enter the user IDs of the users that can use HTML in posts. (separated by a comma, leave blank to disable this feature)<br />Note: overrides groups setting.",
		"optionscode"	=> "text",
		"value"			=> "",
		"disporder"		=> 2,
		"gid"			=> $gid
	);

	$db->insert_query("settings", $setting);
	
	$setting = array(
		"sid"			=> NULL,
		"name"			=> "htmlposts_forums",
		"title"			=> "Affected Forums",
		"description"	=> "Enter the forum IDs that are affected by this plugin. (separated by a comma, can be blank if you want to affect all forums)",
		"optionscode"	=> "text",
		"value"			=> "",
		"disporder"		=> 3,
		"gid"			=> $gid
	);

	$db->insert_query("settings", $setting);
	
	rebuild_settings();
}


function htmlposts_deactivate()
{
	global $db, $mybb;
	
	// delete settings group
	$db->delete_query("settinggroups", "name = 'htmlposts'");

	// remove settings
	$db->delete_query('settings', 'name IN (\'htmlposts_groups\',\'htmlposts_uids\',\'htmlposts_forums\')');

	rebuild_settings();
}

// checks permissions for a certain user
function htmlposts_check_permissions($groups_comma, $user)
{	
	if ($groups_comma == '' || empty($user))
		return false;
	
	$groups = explode(",", $groups_comma);
	$add_groups = explode(",", $user['additionalgroups']);
	
	if (!in_array($user['usergroup'], $groups)) { // primary user group not allowed
		// check additional groups
		if ($add_groups) {
			if (count(array_intersect($add_groups, $groups)) == 0)
				return false;
			else
				return true;
		}
		else 
			return false;
	}
	else
		return true;
}

function htmlposts_parse(&$message)
{
	global $mybb, $db;
	
	global $post;
	$mypost =& $post;
	
	if (empty($mypost))
		return; // we're not in postbit so get out of here
		
	$previewpost = false;
		
	// we're previewing a post
	if ($mybb->input['previewpost'] && (THIS_SCRIPT == "newthread.php" || THIS_SCRIPT == "newreply.php" || THIS_SCRIPT == "editpost.php"))
	{
		if (THIS_SCRIPT != "editpost.php")
		{
			global $fid;
			$mypost['fid'] = $fid; // no fid is set in $mypost['fid'] when previewing
			$mypost['usergroup'] = $mybb->user['usergroup'];
			$mypost['additionalgroups'] = $mybb->user['additionalgroups'];
			$previewpost = true;
		}
		else
		{
			global $fid;
			$mypost['fid'] = $fid; // no fid is set in $mypost['fid'] when previewing
		}
		
		$previewpost = true;
	}
	
	// if not blank, check if we're in a forum that's affected
	if ($mybb->settings['htmlposts_forums'] != '')
	{
		$forums = explode(",", trim($mybb->settings['htmlposts_forums']));
		if (!in_array($mypost['fid'], $forums))
			return;
	}
	
	global $parser, $control_html;
	
	if (!is_object($parser))
	{
		return; // unfortunately we cannot proceed without a $parser object created
	}
	
	// Create a new class to control the parser options easily
	if (!class_exists("control_html"))
	{
		class control_html
		{
			public $html_enabled;
			
			function control_html()
			{
				// Is it enabled already? Save it in a var to later disallow disabling
				$this->html_enabled = $parser->options['allow_html'];
			}
		
			function set_html($status)
			{
				$status = (int)$status;
				if ($status != 0 && $status != 1) return false;
				
				// if we're trying to disable it but it's enabled by default, disallow the action
				if ($status == 0 && $this->html_enabled == 1)
					return false;
					
				global $parser;
					
				// Set to desired status
				$parser->options['allow_html'] = $status;
				// for previewing posts
				global $parser_options;
				if (!empty($parser_options))
					$parser_options['allow_html'] = $status;
				
				return true;
			}
		}
	}
	
	// Create object if it doesn't exist
	if (!is_object($control_html))
		$control_html = new control_html();
	
	$override = false;
	// is the post author allowed to have HTML in posts?
	if ($mybb->settings['htmlposts_uids'] != '')
	{
		$uids = explode(",", trim($mybb->settings['htmlposts_uids']));
		if (!in_array($mypost['uid'], $uids))
		{
			// Disable HTML, or at least we'll try to, the function might refuse it
			$control_html->set_html(0);
			return;
		}
		
		$override = true;
	}
	
	// is the post author in a group allowed to post HTML?
	if ($override === false && $mybb->settings['htmlposts_groups'] != '' && THIS_SCRIPT != 'xmlhttp.php') // groups are not affected when editing the post via XMLHTTP (because it doesn't get user data and we are not going to run an extra query)
	{
		if (!htmlposts_check_permissions($mybb->settings['htmlposts_groups'], $mypost))
		{
			// Disable HTML, or at least we'll try to, the function might refuse it
			$control_html->set_html(0);
			return;
		}
	}
	
	if (!isset($parser->options['filter_badwords']) && !$previewpost) // we're probably parsing a signature, this is not defined there
	{
		// Disable HTML, or at least we'll try to, the function might refuse it
		$control_html->set_html(0);
		return;
	}
	
	// Enable HTML for allowed users :)
	$control_html->set_html(1);
}

?>

The code is above for the plugin...

Please let me know if you can help me.

Thanks.