Definición de Plugin: escribió:Los plugins son básicamente funciones en PHP que son ejecutadas en ciertos puntos a lo largo de la ejecución de MyBB.*Extraido de la wiki de MyBB.
Estos "ciertos puntos" -llamados hooks- estan ubicados sobre la mayor parte de archivos de MyBB (Ver lista completa).
Un plugin normalmente realiza dos cosas:
- Enlaza funciones a determinados hooks
- Edita los templates del theme para editar el "Look & Feel" del diseño.
Que son los templates? escribió:Los templates son pequeñas porciones de código HTML pero que pueden incluir variables (PHP). Puedes ver todos los templates existentes en:
Panel de Administración -> Plantillas y Estilos -> Plantillas -> Templates Predeterminados
<?php
if(!defined("IN_MYBB"))
{
die("Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined.");
}
function registrate_loco_info()
{
return array(
"name" => "Registrate loco",
"description" => "Muestra un mensaje a los usuarios no identificados invitando a que se registren o se identifiquen.",
"website" => "",
"author" => "Santiago Dimattia",
"authorsite" => "http://www.teleportz.com.ar",
"version" => "1.0",
"guid" => "",
"compatibility" => "16*"
);
}
?>
<?php
function registrate_loco_activate()
{
// Creamos el grupo de opciones
$query = $db->simple_select("settinggroups", "COUNT(*) as rows");
$rows = $db->fetch_field($query, "rows");
$new_groupconfig = array(
'name' => 'registrate_logo',
'title' => 'Registrate loco',
'description' => 'Opciones para cambiar el texto del aviso o activar y desactivar el plugin.',
'disporder' => $rows+1,
'isdefault' => 0
);
return true;
}
?>
<?php
function registrate_loco_activate()
{
// Creamos las opciones
$new_config = array();
$new_config[] = array(
'name' => 'registrate_loco_active',
'title' => 'Activar plugin',
'description' => 'Selecciona si deseas activar el plugin.',
'optionscode' => 'yesno',
'value' => '1',
'disporder' => 10,
'gid' => $group['gid']
);
$new_config[] = array(
'name' => 'registrate_loco_texto',
'title' => 'Texto del aviso',
'description' => 'Cambia el texto del aviso',
'optionscode' => 'textarea',
'value' => '<a href="member.php?action=register">Registate</a> ahora para poder participar del concurso de una vaca y poder postear en los foros! (Si! Una vaca!)',
'disporder' => 10,
'gid' => $group['gid']
);
foreach($new_config as $array => $content)
{
$db->insert_query("settings", $content);
}
return TRUE;
}
?>
<?php
function registrate_loco_activate()
{
// Editamos el template "header"
require MYBB_ROOT."/inc/adminfunctions_templates.php";
find_replace_templatesets('header', '#{\$unreadreports}#', '{$unreadreports}<!-- RegistrateLoco -->{$alerta_para_invitados}<!-- /RegistrateLoco -->');
return TRUE;
}
?>
<?php
function registrate_loco_activate()
{
// Creamos el grupo de opciones
$query = $db->simple_select("settinggroups", "COUNT(*) as rows");
$rows = $db->fetch_field($query, "rows");
$new_groupconfig = array(
'name' => 'registrate_logo',
'title' => 'Registrate loco',
'description' => 'Opciones para cambiar el texto del aviso o activar y desactivar el plugin.',
'disporder' => $rows+1,
'isdefault' => 0
);
// Creamos las opciones
$new_config = array();
$new_config[] = array(
'name' => 'registrate_loco_active',
'title' => 'Activar plugin',
'description' => 'Selecciona si deseas activar el plugin.',
'optionscode' => 'yesno',
'value' => '1',
'disporder' => 10,
'gid' => $group['gid']
);
$new_config[] = array(
'name' => 'registrate_loco_texto',
'title' => 'Texto del aviso',
'description' => 'Cambia el texto del aviso',
'optionscode' => 'textarea',
'value' => '<a href="member.php?action=register">Registate</a> ahora para poder participar del concurso de una vaca y poder postear en los foros! (Si! Una vaca!)',
'disporder' => 10,
'gid' => $group['gid']
);
foreach($new_config as $array => $content)
{
$db->insert_query("settings", $content);
}
// Editamos el template "header"
require MYBB_ROOT."/inc/adminfunctions_templates.php";
find_replace_templatesets('header', '#{\$unreadreports}#', '{$unreadreports}<!-- RegistrateLoco -->{$alerta_para_invitados}<!-- /RegistrateLoco -->');
return TRUE;
}
?>
// Para poder acceder a la base de datos:
global $db;
Devuelvo true (medio inútil... si)
return TRUE;
<?php
function registrate_loco_deactivate()
{
global $db;
// Borrar el grupo de opciones
$query = $db->simple_select("settinggroups", "gid", "name = \"registrate_loco\"");
$rows = $db->fetch_field($query, "gid");
$db->delete_query("settinggroups", "gid = {$rows}");
// Borrar las opciones
$db->delete_query("settings", "gid = {$rows}");
rebuild_settings();
// Editar el template header
require MYBB_ROOT."/inc/adminfunctions_templates.php";
find_replace_templatesets('header', '#' . preg_quote('<!-- RegistrateLoco -->{$alerta_para_invitados}<!-- /RegistrateLoco -->') . '#', '');
return TRUE;
}
?>
<?php
// Enlazamos la función al hook. Esta funcion 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('global_start', 'registrate_loco_mostrar_aviso');
function registrate_loco_mostrar_aviso()
{
global $mybb, $alerta_para_invitados;
// Si el plugin se encuentra desactivado, no hacemos nada.
if($mybb->settings['registrate_loco_active'] == '0')
{
return FALSE;
}
// Comprobamos si el usuario esta logueado
if($mybb->user['uid'] != 0)
{
// Si el uid del usuario es indistinto a cero, el usuario se encuentra identificado
$alerta_para_invitados = '';
}
else
{
// Si el uid es igual a 0, el usuario no se encuentra identificado
$alerta_para_invitados = $mybb->settings['registrate_loco_texto'];
}
}
?>
<?php
if(!defined("IN_MYBB"))
{
die("Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined.");
}
$plugins->add_hook('global_start', 'registrate_loco_mostrar_aviso');
function registrate_loco_info()
{
return array(
"name" => "Registrate loco",
"description" => "Muestra un mensaje a los usuarios no identificados invitando a que se registren o se identifiquen.",
"website" => "",
"author" => "Santiago Dimattia",
"authorsite" => "http://www.teleportz.com.ar",
"version" => "1.0",
"guid" => "",
"compatibility" => "16*"
);
}
function registrate_loco_activate()
{
global $db;
// Crear el grupo de opciones
$query = $db->simple_select("settinggroups", "COUNT(*) as rows");
$rows = $db->fetch_field($query, "rows");
$new_groupconfig = array(
'name' => 'registrate_logo',
'title' => 'Registrate loco',
'description' => 'Opciones para cambiar el texto del aviso o activar y desactivar el plugin.',
'disporder' => $rows+1,
'isdefault' => 0
);
$group['gid'] = $db->insert_query("settinggroups", $new_groupconfig);
// Crear las opciones
$new_config = array();
$new_config[] = array(
'name' => 'registrate_loco_active',
'title' => 'Activar plugin',
'description' => 'Selecciona si deseas activar el plugin.',
'optionscode' => 'yesno',
'value' => '1',
'disporder' => 10,
'gid' => $group['gid']
);
$new_config[] = array(
'name' => 'registrate_loco_texto',
'title' => 'Texto del aviso',
'description' => 'Cambia el texto del aviso',
'optionscode' => 'textarea',
'value' => '<a href="member.php?action=register">Registate</a> ahora para poder participar del concurso de una vaca y poder postear en los foros! (Si! Una vaca!)',
'disporder' => 10,
'gid' => $group['gid']
);
foreach($new_config as $array => $content)
{
$db->insert_query("settings", $content);
}
rebuild_settings();
// Editar el template header
require MYBB_ROOT."/inc/adminfunctions_templates.php";
find_replace_templatesets('header', '#{\$unreadreports}#', '{$unreadreports}<!-- RegistrateLoco -->{$alerta_para_invitados}<!-- /RegistrateLoco -->');
return TRUE;
}
function registrate_loco_deactivate()
{
global $db;
// Borrar el grupo de opciones
$query = $db->simple_select("settinggroups", "gid", "name = \"registrate_loco\"");
$rows = $db->fetch_field($query, "gid");
$db->delete_query("settinggroups", "gid = {$rows}");
// Borrar las opciones
$db->delete_query("settings", "gid = {$rows}");
rebuild_settings();
// Editar el template header
require MYBB_ROOT."/inc/adminfunctions_templates.php";
find_replace_templatesets('header', '#{\$unreadreports}#', '{$unreadreports}<!-- RegistrateLoco -->{$alerta_para_invitados}<!-- /RegistrateLoco -->');
return TRUE;
}
function registrate_loco_mostrar_aviso()
{
global $mybb, $alerta_para_invitados;
// Si el plugin se encuentra desactivado, no hacemos nada.
if($mybb->settings['registrate_loco_active'] == '0')
{
return FALSE;
}
// Comprobamos si el usuario esta logueado
if($mybb->user['uid'] != 0)
{
// Si el uid del usuario es indistinto a cero, el usuario se encuentra identificado
$alerta_para_invitados = '';
}
else
{
// Si el uid es igual a 0, el usuario no se encuentra identificado
$alerta_para_invitados = $mybb->settings['registrate_loco_texto'];
}
}
?>
<?php
$rows = $db->fetch_field($query, "rows");
<?php
$new_config = array();
<?php
$new_config[] = array(
<?php
foreach($new_config as $array => $content)
<?php
$db->insert_query("settings", $new_config);