MyBB Community Forums

Full Version: MyCode Support
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hello !

I want to have the spoiler like mycode . The different is the spoiler can be opened and saw by anyone but The thing I want to have it only the specified usergroup should be allowed to open the spoiler and View it . 

Any Help will be greatly appreciated .
I don't think it is possible with MyCode, you will have to do modification using a plugin.
I will suggest using this plugin and doing usergroup related modification in this one
http://community.mybb.com/mods.php?action=view&pid=614
Please , If You can then will you help me . I want it modified as I told . Please Help Me
<?php

// Comprobamos si la constante IN_MYBB existe. Si no existe, paramos la ejecución del archivo mostrando un mensaje.

if(!defined("IN_MYBB"))
{
	die("Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined.");
}


// Enlazamos la función al hook. Esta función acepta varios parámetros, pero solo estos dos son requeridos:
// 1) El nombre del hook.
// 2) El nombre de la función.

$plugins->add_hook("parse_message", "myspoiler_run");

function myspoiler_info()
{
global $mybb;
	// Añadimos la información del plugin.
	
	return array(
		"name"				=> "MyCode: [spoiler]", // Nombre del plugin.
		"description"		=> "Agrega la función de spoiler a sus mensajes.", // Descripción del plugin.
		"website"			=> "http://www.mybb.com", // Sitio web del plugin.
		"author"			=> "<b>Dark Neo</b>", // Autor del plugin.
		"authorsite"		=> "http://forosmybb.es/", // Sitio web del autor.
		"version"			=> "1.2", // Versión del plugin.
		"codename"			=> "my_spoiler", // ID del plugin de MyBB.
		"compatibility"		=> "*", // Compatibilidad del plugin.
	);
}


function myspoiler_activate()
{
	// Creamos la hoja de estilo para el spoiler.

	global $db;
	$query_tid = $db->write_query("SELECT tid FROM ".TABLE_PREFIX."themes WHERE def='1'");
	$themetid = $db->fetch_array($query_tid);
	$estilo = array(
			'name'         => 'spoiler.css',
			'tid'          => $themetid['tid'],
			'attachedto'   => 'showthread.php|newthread.php|newreply.php|editpost.php|private.php|announcements.php',
			'stylesheet'   => '.spoiler {
	background: #f5f5f5;
	border: 1px solid #bbb;
	margin-bottom: 15px;
	border-radius: 5px;
	-moz-border-radius:5px;
	-webkit-border-radius:5px;
}

.spoiler_button {
	background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #f9f9f9), color-stop(1, #e9e9e9) );
	background:-moz-linear-gradient( center top, #f9f9f9 5%, #e9e9e9 100% );
	filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#f9f9f9", endColorstr="#e9e9e9");
	background-color:#f9f9f9;
	-moz-border-radius:4px;
	-webkit-border-radius:4px;
	border-radius:4px;
	border:1px solid #dcdcdc;
	display:inline-block;
	color:#000;
	font-family:arial;
	font-size:10px;
	font-weight:bold;
	padding: .2em 1em .30em;
	text-decoration:none;
	text-shadow:1px 1px 0px #ffffff;
	box-shadow:inset 0px 1px 0px 0px #ffffff;
	-moz-box-shadow:inset 0px 1px 0px 0px #ffffff;
	-webkit-box-shadow:inset 0px 1px 0px 0px #ffffff;
	margin-top: -3px;
	cursor: pointer;
}
.spoiler_title {
	border-bottom: 1px solid #bbb;
	margin: 0;
	margin-bottom: 4px;
	background: #ddd;
	padding: 4px 5px;
}

.spoiler_content {
	padding: 5px;
	height: auto;
	display: block;
	background: #f5f5f5;
}',
		'lastmodified' => TIME_NOW
	);
	$sid = $db->insert_query('themestylesheets', $estilo);
	$db->update_query('themestylesheets', array('cachefile' => "css.php?stylesheet={$sid}"), "sid='{$sid}'", 1);
	$query = $db->simple_select('themes', 'tid');
	while($theme = $db->fetch_array($query))
	{
		require_once MYBB_ADMIN_DIR.'inc/functions_themes.php';
		update_theme_stylesheet_list($theme['tid']);
	}
   	require MYBB_ROOT.'inc/adminfunctions_templates.php';
    // Reemplazos que vamos a hacer en las plantillas 1.- Platilla 2.- Contenido a Reemplazar 3.- Contenido que reemplaza lo anterior
    find_replace_templatesets("codebuttons", '#'.preg_quote('<script type="text/javascript" src="{$mybb->asset_url}/jscripts/bbcodes_sceditor.js?ver=1804"></script>').'#', '<script type="text/javascript" src="{$mybb->asset_url}/jscripts/bbcodes_sceditor.js?ver=1804"></script>
<script type="text/javascript" src="{$mybb->asset_url}/jscripts/spoiler.js?ver=1804"></script>');
    find_replace_templatesets("codebuttons", '#'.preg_quote('{$link}').'#', '{$link},spoiler');
}


function myspoiler_deactivate()
{
	// Borramos la hoja de estilo del spoiler.

	global $db;
	$db->delete_query('themestylesheets', "name='spoiler.css'");
	$query = $db->simple_select('themes', 'tid');
	while($theme = $db->fetch_array($query))
	{
		require_once MYBB_ADMIN_DIR.'inc/functions_themes.php';
		update_theme_stylesheet_list($theme['tid']);
	}
   	require MYBB_ROOT.'inc/adminfunctions_templates.php';
    // Reemplazos que vamos a hacer en las plantillas 1.- Platilla 2.- Contenido a Reemplazar 3.- Contenido que reemplaza lo anterior
    find_replace_templatesets("codebuttons", '#'.preg_quote('<script type="text/javascript" src="{$mybb->asset_url}/jscripts/spoiler.js?ver=1804"></script>').'#', '',0);
    find_replace_templatesets("codebuttons", '#'.preg_quote('spoiler').'#', '',0);
}


function myspoiler_run(&$message)
{
	global $db, $lang, $mybb;
    $lang->load("my_spoiler", false, true);
	
	// Creamos el MyCode simple: [spoiler]contenido aquí[/spoiler]

	while(preg_match('#\[spoiler\](.*?)\[\/spoiler\]#si',$message))
	$message = preg_replace('#\[spoiler\](.*?)\[\/spoiler\]#si','<div class="spoiler">
		<div class="spoiler_title"><span class="spoiler_button float_right" onclick="javascript: if(parentNode.parentNode.getElementsByTagName(\'div\')[1].style.display == \'block\'){ parentNode.parentNode.getElementsByTagName(\'div\')[1].style.display = \'none\'; this.innerHTML=\''.$lang->my_spoiler_show.'\'; } else { parentNode.parentNode.getElementsByTagName(\'div\')[1].style.display = \'block\'; this.innerHTML=\''.$lang->my_spoiler_hide.'\'; }">'.$lang->my_spoiler_show.'</span>'.$lang->my_spoiler_spoil.':</div>
		<div class="spoiler_content" style="display: none;">$1</div>
	</div>',$message);

	// Creamos el MyCode complejo con comillas: [spoiler="título aquí"]contenido aquí[/spoiler]

	while(preg_match('#\[spoiler="(.*?)"\](.*?)\[\/spoiler\]#si',$message))
	$message = preg_replace('#\[spoiler="(.*?)"\](.*?)\[\/spoiler\]#si','<div class="spoiler">
		<div class="spoiler_title"><span class="spoiler_button float_right" onclick="javascript: if(parentNode.parentNode.getElementsByTagName(\'div\')[1].style.display == \'block\'){ parentNode.parentNode.getElementsByTagName(\'div\')[1].style.display = \'none\'; this.innerHTML=\''.$lang->my_spoiler_show.'\'; } else { parentNode.parentNode.getElementsByTagName(\'div\')[1].style.display = \'block\'; this.innerHTML=\''.$lang->my_spoiler_hide.'\'; }">'.$lang->my_spoiler_show.'</span>$1:</div>
		<div class="spoiler_content" style="display: none;">$2</div>
	</div>',$message);

	// Creamos el MyCode complejo sin comillas: [spoiler=título aquí]contenido aquí[/spoiler]

	while(preg_match('#\[spoiler=(.*?)\](.*?)\[\/spoiler\]#si',$message))
	$message = preg_replace('#\[spoiler=(.*?)\](.*?)\[\/spoiler\]#si','<div class="spoiler">
		<div class="spoiler_title"><span class="spoiler_button float_right" onclick="javascript: if(parentNode.parentNode.getElementsByTagName(\'div\')[1].style.display == \'block\'){ parentNode.parentNode.getElementsByTagName(\'div\')[1].style.display = \'none\'; this.innerHTML=\''.$lang->my_spoiler_show.'\'; } else { parentNode.parentNode.getElementsByTagName(\'div\')[1].style.display = \'block\'; this.innerHTML=\''.$lang->my_spoiler_hide.'\'; }">'.$lang->my_spoiler_show.'</span>$1:</div>
		<div class="spoiler_content" style="display: none;">$2</div>
	</div>',$message);
	
	return $message;
}

?>
Try using

Replace the complete function myspoiler_run with this

function myspoiler_run(&$message)
{
	global $db, $lang, $mybb;
    $lang->load("my_spoiler", false, true);
	
	// Creamos el MyCode simple: [spoiler]contenido aquí[/spoiler]
	if(in_array($mybb->user['usergroup'], array(1,2)))
	{
		while(preg_match('#\[spoiler\](.*?)\[\/spoiler\]#si',$message))
		$message = preg_replace('#\[spoiler\](.*?)\[\/spoiler\]#si','<div class="spoiler">
			<div class="spoiler_title"><span class="spoiler_button float_right" onclick="javascript: if(parentNode.parentNode.getElementsByTagName(\'div\')[1].style.display == \'block\'){ parentNode.parentNode.getElementsByTagName(\'div\')[1].style.display = \'none\'; this.innerHTML=\''.$lang->my_spoiler_show.'\'; } else { parentNode.parentNode.getElementsByTagName(\'div\')[1].style.display = \'block\'; this.innerHTML=\''.$lang->my_spoiler_hide.'\'; }">'.$lang->my_spoiler_show.'</span>'.$lang->my_spoiler_spoil.':</div>
			<div class="spoiler_content" style="display: none;">the content is not visible for you</div>
		</div>',$message);

		// Creamos el MyCode complejo con comillas: [spoiler="título aquí"]contenido aquí[/spoiler]

		while(preg_match('#\[spoiler="(.*?)"\](.*?)\[\/spoiler\]#si',$message))
		$message = preg_replace('#\[spoiler="(.*?)"\](.*?)\[\/spoiler\]#si','<div class="spoiler">
			<div class="spoiler_title"><span class="spoiler_button float_right" onclick="javascript: if(parentNode.parentNode.getElementsByTagName(\'div\')[1].style.display == \'block\'){ parentNode.parentNode.getElementsByTagName(\'div\')[1].style.display = \'none\'; this.innerHTML=\''.$lang->my_spoiler_show.'\'; } else { parentNode.parentNode.getElementsByTagName(\'div\')[1].style.display = \'block\'; this.innerHTML=\''.$lang->my_spoiler_hide.'\'; }">'.$lang->my_spoiler_show.'</span>$1:</div>
			<div class="spoiler_content" style="display: none;">the content is not visible for you</div>
		</div>',$message);

		// Creamos el MyCode complejo sin comillas: [spoiler=título aquí]contenido aquí[/spoiler]

		while(preg_match('#\[spoiler=(.*?)\](.*?)\[\/spoiler\]#si',$message))
		$message = preg_replace('#\[spoiler=(.*?)\](.*?)\[\/spoiler\]#si','<div class="spoiler">
			<div class="spoiler_title"><span class="spoiler_button float_right" onclick="javascript: if(parentNode.parentNode.getElementsByTagName(\'div\')[1].style.display == \'block\'){ parentNode.parentNode.getElementsByTagName(\'div\')[1].style.display = \'none\'; this.innerHTML=\''.$lang->my_spoiler_show.'\'; } else { parentNode.parentNode.getElementsByTagName(\'div\')[1].style.display = \'block\'; this.innerHTML=\''.$lang->my_spoiler_hide.'\'; }">'.$lang->my_spoiler_show.'</span>$1:</div>
			<div class="spoiler_content" style="display: none;">the content is not visible for you</div>
		</div>',$message);
		
		return $message;
	}else{
		while(preg_match('#\[spoiler\](.*?)\[\/spoiler\]#si',$message))
		$message = preg_replace('#\[spoiler\](.*?)\[\/spoiler\]#si','<div class="spoiler">
			<div class="spoiler_title"><span class="spoiler_button float_right" onclick="javascript: if(parentNode.parentNode.getElementsByTagName(\'div\')[1].style.display == \'block\'){ parentNode.parentNode.getElementsByTagName(\'div\')[1].style.display = \'none\'; this.innerHTML=\''.$lang->my_spoiler_show.'\'; } else { parentNode.parentNode.getElementsByTagName(\'div\')[1].style.display = \'block\'; this.innerHTML=\''.$lang->my_spoiler_hide.'\'; }">'.$lang->my_spoiler_show.'</span>'.$lang->my_spoiler_spoil.':</div>
			<div class="spoiler_content" style="display: none;">$1</div>
		</div>',$message);

		// Creamos el MyCode complejo con comillas: [spoiler="título aquí"]contenido aquí[/spoiler]

		while(preg_match('#\[spoiler="(.*?)"\](.*?)\[\/spoiler\]#si',$message))
		$message = preg_replace('#\[spoiler="(.*?)"\](.*?)\[\/spoiler\]#si','<div class="spoiler">
			<div class="spoiler_title"><span class="spoiler_button float_right" onclick="javascript: if(parentNode.parentNode.getElementsByTagName(\'div\')[1].style.display == \'block\'){ parentNode.parentNode.getElementsByTagName(\'div\')[1].style.display = \'none\'; this.innerHTML=\''.$lang->my_spoiler_show.'\'; } else { parentNode.parentNode.getElementsByTagName(\'div\')[1].style.display = \'block\'; this.innerHTML=\''.$lang->my_spoiler_hide.'\'; }">'.$lang->my_spoiler_show.'</span>$1:</div>
			<div class="spoiler_content" style="display: none;">$2</div>
		</div>',$message);

		// Creamos el MyCode complejo sin comillas: [spoiler=título aquí]contenido aquí[/spoiler]

		while(preg_match('#\[spoiler=(.*?)\](.*?)\[\/spoiler\]#si',$message))
		$message = preg_replace('#\[spoiler=(.*?)\](.*?)\[\/spoiler\]#si','<div class="spoiler">
			<div class="spoiler_title"><span class="spoiler_button float_right" onclick="javascript: if(parentNode.parentNode.getElementsByTagName(\'div\')[1].style.display == \'block\'){ parentNode.parentNode.getElementsByTagName(\'div\')[1].style.display = \'none\'; this.innerHTML=\''.$lang->my_spoiler_show.'\'; } else { parentNode.parentNode.getElementsByTagName(\'div\')[1].style.display = \'block\'; this.innerHTML=\''.$lang->my_spoiler_hide.'\'; }">'.$lang->my_spoiler_show.'</span>$1:</div>
			<div class="spoiler_content" style="display: none;">$2</div>
		</div>',$message);
		
		return $message;
	}
}

array(1,2) = forbidden groups