Please make sure IN_MYBB is defined.");
}
// Llamamos a los enganches necesarios para el plugin
$plugins->add_hook("postbit", "hideip_clear");
$plugins->add_hook("postbit_prev", "hideip_clear");
$plugins->add_hook("postbit_pm", "hideip_clear");
$plugins->add_hook("postbit_announcement", "hideip_clear");
$plugins->add_hook("parse_message", "hideip_code");
$plugins->add_hook("newreply_do_newreply_end", "hideip_code_ajax");
$plugins->add_hook("parse_quoted_message", "hideip_quote");
// Informacion del Plugin
function hideip_info()
{
global $mybb, $db, $lang;
$lang->load("hideip");
$hideip_settings_link = '';
$query = $db->simple_select('settinggroups', '*', "name='hideip_settings'");
if (count($db->fetch_array($query)))
{
$hideip_settings_link = '('.$lang->hideip_configure.')';
}
return array(
"name" => $db->escape_string($lang->hideip_name),
"title" => $db->escape_string($lang->hideip_title),
"description" => $db->escape_string($lang->hideip_descrip) . " " . $hideip_settings_link,
"website" => "http://www.soportemybb.com",
"author" => "Dark Neo",
"authorsite" => "http://darkneo.xunem.com",
"version" => "1.8",
"guid" => "2a556973bb6272ee420110b64573f58c",
"compatibility" => "18*"
);
}
// Cuando damos clic en instalar, para crear el grupo de opciones y las plantillas para el uso del plugin
function hideip_install()
{
// Creando las opciones del plugin
global $db, $lang, $cache;
$lang->load("hideip");
$group = array(
"name" => "hideip_settings",
"title" => $db->escape_string($lang->hideip_settings_title),
"description" => $db->escape_string($lang->hideip_settings_descrip),
"disporder" => "50",
"isdefault" => "no",
);
$db->insert_query("settinggroups", $group);
$gid = intval($db->insert_id());
$settings = array(
array(
"name" => "hideip_enabled",
"title" => $db->escape_string($lang->hideip_power),
"description" => $db->escape_string($lang->hideip_power_descrip . $settings_link),
"optionscode" => "yesno",
"value" => "yes",
"disporder" => 1,
"gid" => $gid,
),
array(
"name" => "hideip_link_enabled",
"title" => $db->escape_string($lang->hideip_links),
"description" => $db->escape_string($lang->hideip_links_descrip),
"optionscode" => "yesno",
"value" => "yes",
"disporder" => 2,
"gid" => $gid,
),
array(
"name" => "hideip_hide_enabled",
"title" => $db->escape_string($lang->hideip_hide),
"description" => $db->escape_string($lang->hideip_hide_descrip),
"optionscode" => "yesno",
"value" => "yes",
"disporder" => 3,
"gid" => $gid,
),
array(
"name" => "hideip_attach_enabled",
"title" => $db->escape_string($lang->hideip_attachments),
"description" => $db->escape_string($lang->hideip_attachments_descrip),
"optionscode" => "yesno",
"value" => "yes",
"disporder" => 4,
"gid" => $gid,
),
array(
"name" => "hideip_gid_exclude",
"title" => $db->escape_string($lang->hideip_groups),
"description" => $db->escape_string($lang->hideip_groups_descrip),
"optionscode" => "text",
"value" => 0,
"disporder" => 5,
"gid" => $gid,
),
array(
"name" => "hideip_fid_exclude",
"title" => $db->escape_string($lang->hideip_forums),
"description" => $db->escape_string($lang->hideip_forums_descrip),
"optionscode" => "text",
"value" => 0,
"disporder" => 6,
"gid" => $gid,
)
);
foreach($settings as $setting)
$db->insert_query("settings", $setting);
rebuildsettings();
// Creamos las plantillas necesarias
$template = array(
"tid" => NULL,
"title" => "hideip_box",
"template" => $db->escape_string(""),
"sid" => "-1"
);
$db->insert_query("templates", $template);
$template = array(
"tid" => NULL,
"title" => "unhideip_box",
"template" => $db->escape_string(""),
"sid" => "-1"
);
$db->insert_query("templates", $template);
return True;
}
// Verifica si ya esta instalado el plugin, mediante la consulta de las plantillas del plugin
function hideip_is_installed()
{
global $db;
$query = $db->simple_select("templates", "tid", "title = 'hideip_box' || title = 'unhideip_box'");
if($db->num_rows($query))
{
return True;
}
return False;
}
// Al desinstalar el plugin eliminamos las opciones creadas y las plantillas generadas al instalar el plugin
function hideip_uninstall()
{
global $db, $cache;
$db->delete_query("templates","title = 'hideip_box'");
$db->delete_query("templates","title = 'unhideip_box'");
$db->delete_query("settinggroups","name = 'hideip_settings'");
$db->delete_query("settings","name LIKE 'hideip_%'");
rebuildsettings();
return True;
}
// Guarda en cache si el usuario ya ha respondido al tema...
function hideip_count($tid,$uid)
{
global $db, $thread;
if($tid == '' || $tid == 0)
{
$tid = $thread['tid'];
}
if(!isset($posts))
{
static $posts = 0;
$query = $db->simple_select("posts","COUNT(pid) AS posts","tid='{$tid}' AND uid = '{$uid}'");
$posts = intval($db->fetch_field($query,"posts"));
}
return $posts;
}
//Vamos a validar las opciones de nuestra cuenta, para ver si podemos o no mirar los contenidos...
function hideip_validate($fid)
{
global $mybb;
// Verifica los grupos de usuario.
if($mybb->settings['hideip_gid_exclude'])
{
$groups = explode(",", $mybb->settings['hideip_gid_exclude']);
if(in_array($mybb->user['usergroup'], $groups))
{
return False;
}
}
// Verifica que la lista de foros sea tomada en el plugin.
if($mybb->settings['hideip_fid_exclude'])
{
$fids = explode(",", $mybb->settings['hideip_fid_exclude']);
if(in_array($fid, $fids))
{
return False;
}
}
return True;
}
// Filtro utilizado para el contenido de los mensajes...
function hideip_filter($msg,$fid,$tid)
{
global $mybb,$attachcache;
if(!hideip_count($tid,$mybb->user['uid']))
{
// Ocultar enlaces
if($mybb->settings['hideip_link_enabled'])
{
$msg = preg_replace("#(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)#is",'',$msg);
}
// Ocultar el contenido del MyCode hide
if($mybb->settings['hideip_hide_enabled'])
{
$msg = preg_replace("#\[hide\](.*)\[/hide\]#is",'',$msg);
}
//Ocultar adjuntos en el mensaje
if($mybb->settings['hideip_attach_enabled'])
{
if(!hideip_count($mybb->input['tid'],$mybb->user['uid']))
{
$msg = preg_replace("#\[attachment=(.*?)\]#is",'',$msg);
}
}
}
}
function hideip_code_ajax()
{
global $mybb,$templates,$thread,$lang,$post,$attachcache, $tid;
$fids = explode(",", $mybb->settings['hideip_fid_exclude']);
if(in_array($fid, $fids))
{
return false;
}
// Si utilizamos la respuesta rápida - entonces pasamos a esto xD...
if($mybb->settings['hideip_enabled'] && $mybb->input['ajax'])
{
//redirect(get_thread_link($tid, 0, "lastpost"));
redirect(get_thread_link($tid, 0, ""));
}
}
// Reemplaza los contenidos que tengan los criterios mostrados - En mi caso la etiqueta hide, las urls y los archivos adjuntos dentro del mensaje.
function hideip_code(&$message)
{
global $mybb,$templates,$thread,$lang,$post,$attachcache, $fid;
$lang->load("hideip");
$fids = explode(",", $mybb->settings['hideip_fid_exclude']);
$groups = explode(",", $mybb->settings['hideip_gid_exclude']);
if($mybb->settings['hideip_enabled'] == "0" || in_array($fid, $fids))
{
return false;
}
$mybburl = $mybb->settings['bburl'];
// Solo se efectua cuando vamos a responder al tema.
if(hideip_count($mybb->input['tid'],$mybb->user['uid']) || in_array($mybb->user['usergroup'], $groups))
{
// Se muestra el contenido si has respondido al tema
$msg = "$1";
eval("\$box = \"".$templates->get("unhideip_box",1,0)."\";");
$message = preg_replace("#\[hide\](.*?)\[/hide\]#is",$box,$message);
$find = '';
$replace = '';
$message = str_replace($find, $replace, $message);
$find = '".$lang->hideip_hide_hidden."
".$lang->hideip_hide_url."
";
eval("\$box = \"".$templates->get("hideip_box",1,0)."\";");
$message = preg_replace("#]*(http|www)(.*)#siU",$box,$message);
}
if($mybb->settings['hideip_hide_enabled'])
{
// Ocultamos el contenido del MyCode hide
$msg = "
".$lang->hideip_hide_text."
";
eval("\$box = \"".$templates->get("hideip_box",1,0)."\";");
$message = preg_replace("#\[hide\](.*?)\[/hide\]#is",$box,$message);
}
if($mybb->settings['hideip_attach_enabled'])
{
// Ocultar adjuntos en los mensajes...
$msg = "
".$lang->hideip_hide_attach."
";
eval("\$post['attachments'] = \"".$templates->get("hideip_box",1,0)."\";");
$message = preg_replace("#\[attachment=(.*?)\]#is",$box,$message);
}
$done = true;
}
}
//Se ejecuta al citar un tema, si ya has respondido podrás citar los contenidos, de otra forma, no puedes citar ninguna url
//ya sea contenida de un video, imagen, etc, ya que por defecto en el parse_quoted, toma los contenidos directamente.
function hideip_quote(&$quoted_post)
{
global $mybb, $db, $session, $templates,$lang,$thread,$post,$attachcache, $fid, $tid;
$fids = explode(",", $mybb->settings['hideip_fid_exclude']);
$groups = explode(",", $mybb->settings['hideip_gid_exclude']);
if($mybb->settings['hideip_enabled'] == "0" || in_array($fid, $fids))
{
return false;
}
if($tid == '' || $tid == 0)
{
$query = $db->simple_select("posts", "tid", "pid ={$post['pid']}");
$thread = $db->fetch_array($query);
$tid = $thread['tid'];
}
$lang->load("hideip");
// Solo se efectua cuando vamos a responder al tema.
if ($mybb->user['uid'] != $post['uid'] && hideip_validate($post['fid'])){
if(hideip_count($mybb->input['tid'],$mybb->user['uid']) || in_array($mybb->user['usergroup'], $groups))
{
// Se muestra el contenido si has respondido al tema, o tienes permisos para ello
$quoted_post['message'] = $quoted_post['message'];
}
else
{
if($mybb->settings['hideip_hide_enabled'])
{
$quoted_post['message'] = preg_replace('#\[hide\](.*?)\[/hide\]#is', "", $quoted_post['message']);
}
if($mybb->settings['hideip_link_enabled'])
{
//Creamos el bucle de engaño, para pasar los enlaces a urls y de ahi luego eliminarlos en la siguiente sentencia xD...
$quoted_post['message'] = preg_replace("#(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)#is","[url]$1[/url]",$quoted_post['message']);
$quoted_post['message'] = preg_replace('#\[img\]\[url\](.*?)\[/url\]\[/img\]#is', "[img]$1[/img]", $quoted_post['message']);
$quoted_post['message'] = preg_replace('#\[video=(.*?)\]\[url\](.*?)\[/video\]\[/url\]#is', "[video=$1]$2$3[/video]", $quoted_post['message']);
}
$quoted_post['message'] = preg_replace('#\[url\](.*?)\[/url\]#is', "", $quoted_post['message']);
$quoted_post['message'] = preg_replace('#\[url=(.*?)\](.*?)\[/url\]#is', "", $quoted_post['message']);
}
}
}
//Sucede cuando buscamos los adjuntos en los temas para ocultarlos o mostrarlos, dependiendo de los criterios establecidos
function hideip_clear(&$post)
{
global $mybb,$attachcache,$templates, $lang;
$lang->load("hideip");
$fids = explode(",", $mybb->settings['hideip_fid_exclude']);
if($mybb->settings['hideip_enabled'] == "0" || in_array($fid, $fids))
{
return false;
}
if($mybb->settings['hideip_attach_enabled'] && is_array($attachcache[$post['pid']]) && $mybb->user['uid'] != $post['uid'] && hideip_validate($post['fid']))
{
if(!hideip_count($mybb->input['tid'],$mybb->user['uid']))
{
$mybburl = $mybb->settings['bburl'];
$msg = "