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:
$plugins->add_hook("parse_message_end", "nombreplugin_safelink");//1
Funcion:
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:
$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:
/* 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.