Deprecated: str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated in /var/www/mybb-es.com/html/inc/class_language.php on line 201
¿Donde se encuentran las sentencias sql?
Páginas (2): 1 2   
chujalt   26 Feb, 2015, 4:56 am
#1
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
TaurusZDK   26 Feb, 2015, 1:45 pm
#2
e.e estamos iguales pero yo cuando no encuentro uno en especifico lo creo
AndresXZ09   26 Feb, 2015, 3:18 pm
#3
Antes de ponerte a tocar las sentencias, primero asegurate de que lo que quieres hacer se tiene que hacer mediante ellas.
chujalt   26 Feb, 2015, 10:54 pm
#4
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
Omar G.   27 Feb, 2015, 12:45 am
#5
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.
chujalt   27 Feb, 2015, 3:35 am
#6
(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
AndresXZ09   27 Feb, 2015, 3:45 am
#7
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.
chujalt   27 Feb, 2015, 4:02 am
#8
(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
BitLiberal   27 Feb, 2015, 7:37 am
#9
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:
<?php 
$plugins
->add_hook("parse_message_end", "nombreplugin_safelink");//1

Funcion:
Código PHP:
<?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:
<?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:
<?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)
chujalt   27 Feb, 2015, 1:15 pm
#10
(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:
<?php 
$plugins
->add_hook("parse_message_end", "nombreplugin_safelink");//1

Funcion:



Código PHP:
<?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:
<?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:
<?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.
Páginas (2): 1 2   
  
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.