[Desarrollo MyBB]  Número Aleatorio con mycode
Pues lo que necesito es hacer un bbcode/plugin que si un usuario pone un bbcode en el post se genere el número aliatorio y salga en el post. Que el ...

Pues lo que necesito es hacer un bbcode/plugin que si un usuario pone un bbcode en el post se genere el número aliatorio y salga en el post.

Que el número se guarde en un campo de la base de datos correpondiente al pid del post.

Que no cambie, una vez enviado ya no cambia aunque se edite.

Esto es lo que yo tengo, lo que me falta es lo de la base de datos, creo.

Código PHP:
<?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.");
}

$plugins->add_hook("parse_message""mydados");
function 
mydados_info()
{
    return array(
        
"name"                => "MyCode: MyDados"// Nombre del plugin.
        
"description"        => "Permite realizar una tirada de dados"// Descripción del plugin.
        
"website"            => "http://www.foro.skylium.com/"// Sitio web del plugin.
        
"author"            => "<b>Juliens</b></a> para <a href=\"http://www.foro.skylium.com\"><b>Skylium Network</b></a>"// Autor del plugin.
        
"authorsite"        => "http://www.juliohurtado.com/"// Sitio web del autor.
        
"version"            => "1"// Versión del plugin.
        
"guid"                => ""// ID del plugin de MyBB.
        
"compatibility"        => "14*,16*"// Compatibilidad del plugin.
    
);
}

function 
mydados_activate()
{

}

function 
mydados_deactivate()
{

}

function 
mydados($mensaje)
{
    
$patron='/\[dado=([0-9]+)\]/is';
    
    if(
preg_match_all($patron$mensaje,$coincidencias,PREG_SET_ORDER))
    {
        foreach (
$coincidencias as $valor) {
                
//if campo columna de la fila pid#3333 está vacía hacer:
                
$numrand=mt_rand(1,$valor[1]);
                
//Grabar eso en una fila de la base de datos
                //sino hacer_
                
$reem='Dado Lanzado: '.$numrand//en lugar de tomar el 
                
$mensajepreg_replace($patron,$reem,$mensaje);
        }
    }
    return 
$mensaje;
}
?>

Me olvidaba, el plugin debería tomar solo el primer bbcode e ignora si es que hay otro
Equipo de Desarrollo de Skylium Network




Última modificación: 26 Jan, 2013, 12:00 pm por 1s44c.
(26 Jan, 2013, 11:58 am)Juliens escribió: Pues lo que necesito es hacer un bbcode/plugin que si un usuario pone un bbcode en el post se genere el número aliatorio y salga en el post.

Que el número se guarde en un campo de la base de datos correpondiente al pid del post.

Que no cambie, una vez enviado ya no cambia aunque se edite.

Esto es lo que yo tengo, lo que me falta es lo de la base de datos, creo.

Código PHP:
<?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.");
}

$plugins->add_hook("parse_message""mydados");
function 
mydados_info()
{
    return array(
        
"name"                => "MyCode: MyDados"// Nombre del plugin.
        
"description"        => "Permite realizar una tirada de dados"// Descripción del plugin.
        
"website"            => "http://www.foro.skylium.com/"// Sitio web del plugin.
        
"author"            => "<b>Juliens</b></a> para <a href=\"http://www.foro.skylium.com\"><b>Skylium Network</b></a>"// Autor del plugin.
        
"authorsite"        => "http://www.juliohurtado.com/"// Sitio web del autor.
        
"version"            => "1"// Versión del plugin.
        
"guid"                => ""// ID del plugin de MyBB.
        
"compatibility"        => "14*,16*"// Compatibilidad del plugin.
    
);
}

function 
mydados_activate()
{

}

function 
mydados_deactivate()
{

}

function 
mydados($mensaje)
{
    
$patron='/\[dado=([0-9]+)\]/is';
    
    if(
preg_match_all($patron$mensaje,$coincidencias,PREG_SET_ORDER))
    {
        foreach (
$coincidencias as $valor) {
                
//if campo columna de la fila pid#3333 está vacía hacer:
                
$numrand=mt_rand(1,$valor[1]);
                
//Grabar eso en una fila de la base de datos
                //sino hacer_
                
$reem='Dado Lanzado: '.$numrand//en lugar de tomar el 
                
$mensajepreg_replace($patron,$reem,$mensaje);
        }
    }
    return 
$mensaje;
}
?>

Me olvidaba, el plugin debería tomar solo el primer bbcode e ignora si es que hay otro

Si quieres que una ves enviado ya no se edite entonces debes hacer esto al validar el tema no en el postbit ya que sera mas dificil y consumiras mas recursos si lo haces con el postbit!
entonces al validarlo haces sto y lo guardas en la db (por ejemplo en el campo dado) y en el postbit sin hacer consulta extra ni nada solo lo mostrarias asi $post['dado']
El numero debes generarlo antes de que se inserte el mensaje en la DB (datahandler_post_insert_post y datahandler_post_insert_thread_post) como dice Edson. Luego en postbit reemplazas el MyCode.
{SIGNATURE_IMAGE}