(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("#&\#([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("#&\#([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("#&\#([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
y tengo que trastearlo a fondo.
De las tres lineas que me pasaste de class_parser.php
Código:
$name = preg_replace("#&\#([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.