[Desarrollo MyBB]  Esta correcta la estructura hasta ahora? Como agregar cosas nuevas?
Buenas estoy creando un plugin, digamos que bastante interesante a mi parecer, este usa la API de GTmetrix y quisiera saber si voy bien hasta el mome...

Buenas estoy creando un plugin, digamos que bastante interesante a mi parecer, este usa la API de GTmetrix y quisiera saber si voy bien hasta el momento.

La API de GTmetrix es bastante sencilla, así que en eso no hay complicaciones, si no lo que me complica es mostrar los resultados de este en el plugin.

Aquí va:

<?php
if(!defined("IN_MYBB"))
	die("This file cannot be accessed directly.");

$plugins->add_hook('admin_load', 'gtmetrix_admin');
$plugins->add_hook('admin_tools_menu', 'gtmetrix_admin_tools_menu');
$plugins->add_hook('admin_tools_action_handler', 'gtmetrix_admin_tools_action_handler');
$plugins->add_hook('admin_tools_permissions', 'gtmetrix_admin_permissions');

function gtmetrixformybb_info()
{
	return array(
		"name"			=> "GTmetrix for MyBB",
		"description"	=> "This plugin helps in development and a faster experience for your forum with GTMetrix",
		"website"		=> "http://hasaezs.com",
		"author"		=> "Steeep",
		"authorsite"	=> "http://hasaezs.com",
		"version"		=> "1.0",
		"guid" 			=> "",
		"compatibility"	=> "16*"
	);
}

function gtmetrixformybb_activate()
{
	global $db;
	
	$insertarray = array(
		'name' => 'gtmetrix', 
		'title' => 'GTmetrix', 
		'description' => "Settings for GTmetrix", 
		'disporder' => 100, 
	);
	$gid = $db->insert_query("settinggroups", $insertarray);


	$setting0 = array(
		"name"			=> "gtmetrix_email",
		"title"			=> "Mail of GTmetrix",
		"description"	=> "Enter here the email used in GTMetrix",
		"optionscode"	=> "text",
		"value"			=> "",
		"disporder"		=> 1,
		"gid"			=> $gid
	);
	$db->insert_query("settings", $setting0);
	
	$setting1 = array(
		"name"			=> "gtmetrix_api_key",
		"title"			=> "API key of GTmetrix",
		"description"	=> "Enter here the API key used in GTMetrix",
		"optionscode"	=> "text",
		"value"			=> "",
		"disporder"		=> 2,
		"gid"			=> $gid
	);
	$db->insert_query("settings", $setting1);
	
	rebuild_settings();
}

function gtmetrixformybb_deactivate()
{
	global $db;

	$query = $db->query("SELECT gid FROM ".TABLE_PREFIX."settinggroups WHERE name='gtmetrix'");
	$g = $db->fetch_array($query);
	$db->query("DELETE FROM ".TABLE_PREFIX."settinggroups WHERE gid='{$g['gid']}'");
	$db->query("DELETE FROM ".TABLE_PREFIX."settings WHERE gid='{$g['gid']}'");

    rebuild_settings();
}

function gtmetrix_admin_tools_menu(&$sub_menu)
{
	$sub_menu[] = array('id' => 'gtmetrix', 'title' => 'GTmetrix', 'link' => 'index.php?module=tools-gtmetrix');
}

function gtmetrix_admin_tools_action_handler(&$actions)
{
	$actions['gtmetrix'] = array('active' => 'gtmetrix', 'file' => 'gtmetrix');
}

function gtmetrix_admin_permissions(&$admin_permissions)
{
	$admin_permissions['gtmetrix'] = "Can manage GTMetrix?";
}

function gtmetrix_admin()
{
	global $page, $run_module, $action_file;
	
	if($run_module == 'tools' && $action_file == 'gtmetrix')
	{
		$page->add_breadcrumb_item('GTmetrix', 'index.php?module=tools-gtmetrix');
		$page->output_header('GTmetrix');
		
		$page->output_footer();
		exit;
	}
}

Mientras vaya desarrollándolo y se me vayan ocurriendo nuevas ideas iré preguntando Big Grin

Saludos.
Si recuerdo bien tu estuviste usando PluginLibrary, debes saber que solo deberías eliminar información de la DB en _uninstall, ya sean configuraciones, tablas, o columnas.

El resto, en realidad no veo mucho que comentar, me parece muy incompleto considerando que mencionas la API es muy sencilla, ¿O querías ayuda para implementarla?
Omar G.
Omar G.
17 Dec, 2012, 8:58 pmOmar G. escribió:
Si recuerdo bien tu estuviste usando PluginLibrary, debes saber que solo deberías eliminar información de la DB en _uninstall, ya sean configuraciones, tablas, o columnas.
No sabía que eso iba a hay, ahora ya lo sé.

Omar G.
17 Dec, 2012, 8:58 pmOmar G. escribió:
El resto, en realidad no veo mucho que comentar, me parece muy incompleto considerando que mencionas la API es muy sencilla, ¿O querías ayuda para implementarla?
Claro es muy sencilla, solo que por ejemplo me gustaría saber como agregar estos menús & el código para acceder a estos, creo que se puede hacer con $mybb->input['action'] o no?

si... $mybb->input['action'] == "add"
ovio al agragar el tab pones en el link ?action=add
Última modificación: 17 Dec, 2012, 9:22 pm por Pomelete.
O, quieres saber esa parte, lee mis plugins:
https://github.com/Sama34/OUGC-Awards/tr...ter/Upload
https://github.com/Sama34/OUGC-Custom-Re...ter/Upload
https://github.com/PirataNervo/newpoints...ter/Upload
https://github.com/Sama34/OUGC-Announcem...ter/Upload

Básicamente debes crear un archivo para la pagina, no como lo estas haciendo, por que ese código se cargara en todas las paginas cuando no es necesario.
Omar G.
Todo lo que llevo lo hice basándome en el plugin de Pirata Nervo, MyPermissions.
Ya que solo usa un archivo, & por lo que veo es que este no sé ejecuta en todo lados ahora explico porque, si me equivoco dímelo.

if($run_module == 'tools' && $action_file == 'gtmetrix')
    {
        $page->add_breadcrumb_item('GTmetrix', 'index.php?module=tools-gtmetrix');
        $page->output_header('GTmetrix');
        
        $page->output_footer();
        exit;
    }

Esta claro el condicional cierto? $run_module, así como también $action_file. Se supone que el código se carga solo cuando se cumple estas dos condiciones.

No veo donde se carga en todas la páginas, o tal vez donde se llama en el gancho (Hook) admin_load, pero aún así esta el condicional.
Me refiero a que se carga todo el codigo, MyBB podría ser escrito en un solo archivo pero no seria optimo, a eso me refiero.
Omar G.
Colaboradores
Omar G. Edson Ordaz
This forum uses Lukasz Tkacz MyBB addons.