[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:

Código PHP:
<?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?
{SIGNATURE_IMAGE}
(17 Dec, 2012, 8:58 pm)Omar 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é.

(17 Dec, 2012, 8:58 pm)Omar 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?

[Imagen: yUIeE.png]
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.
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.

Código PHP:
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.
{SIGNATURE_IMAGE}