[Ayuda]  ¿Donde se encuentran las sentencias sql?
Saludos amigos... Necesito hacer una modificación en los insert de los mensajes en la base de datos... pero no los encuentro... :huh: ¿alguien me pu...

Saludos amigos...

Necesito hacer una modificación en los insert de los mensajes en la base de datos... pero no los encuentro... Huh ¿alguien me puede decir donde están?

Graciassss
e.e estamos iguales pero yo cuando no encuentro uno en especifico lo creo
Antes de ponerte a tocar las sentencias, primero asegurate de que lo que quieres hacer se tiene que hacer mediante ellas.
Lo que quiero es hacer un redireccionador de enlaces externos en los post.

Tengo varias opciones, una de ellas es modificar el enlace antes de meter el post en la base de datos. Pero no encuentro donde están las sentencias mysql Sad
Lo mejor es modificar el mensaje antes de que se muestre al usuario, nunca modifiques datos antes de insertar a la BD.

La hook que ocupas es parse_message_start o parse_message_end.
{SIGNATURE_IMAGE}
(27 Feb, 2015, 12:45 am)Omar G. escribió: Lo mejor es modificar el mensaje antes de que se muestre al usuario, nunca modifiques datos antes de insertar a la BD.

La hook que ocupas es parse_message_start o parse_message_end.

Saludos..... Voy a hacerte caso y no tocar la base de datos.

Resulta que los contenidos de los post se encuentra en el array $post['message'] , el cual lo crea en inc/functions_post.php.

Tocando ese archivo de momento he conseguido para hacer pruebas, con la función str_replace, cambiar caracteres en los post, he cambiado las "a" por "c".

Ahora intentaré con la función preg_replace cambiar el contenido de los enlaces que se encuentran en los post.

Lo que quiero es que los enlaces que apuntan fuera de mi página primero pasen por una página de redirección.

Iré diciendo avances Confused
Ahmm, si entiendo bien, ¿quieres que los links que se publican en tu foro sean redireccionados a una página especial?

Edito: Ya he entendido, de hecho existe un plugin para hacer lo que quieres, se llama 'SafeLink'.

Saludos.
Última modificación: 27 Feb, 2015, 3:49 am por AndresXZ09.
(27 Feb, 2015, 3:45 am)AndresXZ09 escribió: Ahmm, si entiendo bien, ¿quieres que los links que se publican en tu foro sean redireccionados a una página especial?

Edito: Ya he entendido, de hecho existe un plugin para hacer lo que quieres, se llama 'SafeLink'.

Saludos.

Gracias por la información Wink , pero como soy de culo inquieto y me gusta trastearlo todo, pues eso, que voy a intentar hacerlo yo.

Si no lo consigo seguiré tu información. Smile
El sindrome de querer inventar lo que ya esta inventado es normal, pero no muy sano: http://community.mybb.com/mods.php?action=view&pid=318

Hook:
Código PHP:
$plugins->add_hook("parse_message_end""nombreplugin_safelink");//1 

Funcion:
Código PHP:
function nombreplugin_safelink($message){ //2
global $mybb;
$script $mybb->settings['bburl'].'script-redireccion.php?url='//3
$message str_replace('href="''href="$script'$message); 
return 
$message;


1. El hook que ira dentro del plugin que se supone que has creado para tal fin, con la funcion a llamar.
2. La funcion. No hace falta declarar $post['message'] porque ya viene en el argumento $message.
3. Aqui defines el archivo que (se supone) que has creado para la redireccion. La url a redirigir pasara por el parametro $_GET['url'].

Para diferenciar entre los externos, ya te dejo a ti que uses la imaginación.

Si no quieres hacer un plugin, utiliza este codigo:
Abre el archivo inc/class_parser.php. Busca esto:
Código PHP:
$name preg_replace("#&\#([0-9]+);#si""&#$1;"$name); // Fix & but allow unicode
$link "<a href=\"$fullurl\" target=\"_blank\"{$nofollow}>$name</a>";
return 
$link

Y cambialo por esto:
Código PHP:
/* Codigo original:

    $name = preg_replace("#&amp;\#([0-9]+);#si", "&#$1;", $name); // Fix & but allow unicode
    $link = "<a href=\"$fullurl\" target=\"_blank\"{$nofollow}>$name</a>";
    return $link;
    */

 
   global $mybb$settings;
 
   $script $mybb->settings['bburl'].'script-redireccion.php?url='//3
 
   $urldelforo $settings['bburl'];
 
   $buscar_procedencia strpos($fullurl$urldelforo);
 
   $name preg_replace("#&amp;\#([0-9]+);#si""&#$1;"$name);
 
   if ($buscar_procedencia === false) {
 
   $link "<a href=\"".$script."".$fullurl."\" target=\"_blank\"{$nofollow}>$name</a>";
 
   return $link;
 
   } else {
 
   $link "<a href=\"$fullurl\" target=\"_blank\">$name</a>";
 
   return $link;
 
           }
 
   /* Safelink */ 

Yo lo intente hacer para un futuro plugin, y es dificil. Tienes que codificar los enlaces porque los caracteres especiales no funcionan bien.

Suerte.
  • Temas personalizados (HTML5, flat, responsive, SEO Friendly, etc)
  • Plugins y sistemas personalizados (Galería de imagenes, Bolsa de Trabajo, etc)
(27 Feb, 2015, 7:37 am)BitLiberal escribió: El sindrome de querer inventar lo que ya esta inventado es normal, pero no muy sano: http://community.mybb.com/mods.php?action=view&pid=318

Hook:



Código PHP:
$plugins->add_hook("parse_message_end""nombreplugin_safelink");//1 

Funcion:



Código PHP:
function nombreplugin_safelink($message){ //2
global $mybb;
$script $mybb->settings['bburl'].'script-redireccion.php?url='//3
$message str_replace('href="''href="$script'$message); 
return 
$message;


1. El hook que ira dentro del plugin que se supone que has creado para tal fin, con la funcion a llamar.
2. La funcion. No hace falta declarar $post['message'] porque ya viene en el argumento $message.
3. Aqui defines el archivo que (se supone) que has creado para la redireccion. La url a redirigir pasara por el parametro $_GET['url'].

Para diferenciar entre los externos, ya te dejo a ti que uses la imaginación.

Si no quieres hacer un plugin, utiliza este codigo:
Abre el archivo inc/class_parser.php. Busca esto:



Código PHP:
$name preg_replace("#&amp;\#([0-9]+);#si""&#$1;"$name); // Fix & but allow unicode
$link "<a href=\"$fullurl\" target=\"_blank\"{$nofollow}>$name</a>";
return 
$link

Y cambialo por esto:



Código PHP:
/* Codigo original:

    $name = preg_replace("#&amp;\#([0-9]+);#si", "&#$1;", $name); // Fix & but allow unicode
    $link = "<a href=\"$fullurl\" target=\"_blank\"{$nofollow}>$name</a>";
    return $link;
    */

 
   global $mybb$settings;
 
   $script $mybb->settings['bburl'].'script-redireccion.php?url='//3
 
   $urldelforo $settings['bburl'];
 
   $buscar_procedencia strpos($fullurl$urldelforo);
 
   $name preg_replace("#&amp;\#([0-9]+);#si""&#$1;"$name);
 
   if ($buscar_procedencia === false) {
 
   $link "<a href=\"".$script."".$fullurl."\" target=\"_blank\"{$nofollow}>$name</a>";
 
   return $link;
 
   } else {
 
   $link "<a href=\"$fullurl\" target=\"_blank\">$name</a>";
 
   return $link;
 
           }
 
   /* Safelink */ 

Yo lo intente hacer para un futuro plugin, y es dificil. Tienes que codificar los enlaces porque los caracteres especiales no funcionan bien.

Suerte.


Saludos.... Parece que he hecho algo que funciona, por lo menos en localhost, tendré que probarlo en el de verdad  Confused  y tengo que trastearlo a fondo.

De las tres lineas que me pasaste de class_parser.php
Código:
$name = preg_replace("#&amp;\#([0-9]+);#si", "&#$1;", $name); // Fix & but allow unicode
$link = "<a href=\"$fullurl\" target=\"_blank\"{$nofollow}>$name</a>";
return $link;

Unicamente he tocado una
Código:
$link = "<a href=\"$fullurl\" target=\"_blank\"{$nofollow}>$name</a>";

y la he cambiado por
Código:
$link = "<a href=\"redireccionador.php?id=$fullurl\" target=\"_blank\"{$nofollow}>$name</a>";

He creado una pagina redireccionador.php en el directorio raiz y me pasa la dirección por la url, que el redireccionador me la coge y pasado 5 segundos te manda a la dirección que había en el post.

Veremos si después de trastearlo no da problemas.