Enlaces automáticos y menciones [Act. 04/10]

Perfil del autor

Iniciado por Miguel92
En Plugins Más de 4 meses


Público Privacidad
Normal Tipo
4 Respuestas
99 Visitas
2 Puntos
Miguel92 Fundador 181 14
Topics 27
Respuestas 95
Miguel92 Fundador
Más de 4 meses
Bueno como dice el titulo esto hará 2 cosas:
1 - En el caso que se mencione a un o más usuarios se creará el enlace correspondiente
2 - En el caso que se pegue el link en texto plano(sin link), es transformarlo a un enlace funcional

Tienen 2 opciones: Pegarlo en c.core.php o c.posts.php
Cita:

si se usa en c.core.php, lo podrán usar de forma global!

A - En caso que sea en c.core.php, buscan la última llave } pegan esto
/* Menciones & Enlaces automáticos */
function getLinkPost($urlUserLink) {
global $tsUser;
# Buscamos a todos los usuarios que lleven @
preg_match_all('/\B@([a-zA-Z0-9_-]{4,16}+)\b/', $urlUserLink, $users);
# Lo pasamos por variable
$menciones = $users[1];
foreach ($menciones as $k => $user) {
# Obtenemos la id del usuario
$uid = $tsUser->getUserID($user);
# En el caso que no exista, no hará nada
if(!empty($uid)) {
$reemplazar = '<a href="'.$this->settings['url'].'/perfil/'.$user.'" title="Ir a su perfil" class="font-weight-bolder">'.$user.'</a> ';
$urlUserLink = str_replace($user, $reemplazar, $urlUserLink);
}
}
# Enlaces automáticos
$urlUserLink = preg_replace("#(^|[\n ])([\w]+?://[^ \"\n\r\t<]*)#is", "\\1<a href=\"\\2\" target=\"_blank\">\\2</a>", $urlUserLink);
$urlUserLink = preg_replace("#(^|[\n ])((www|ftp)\.[^ \"\t\n\r<]*)#is", "\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>", $urlUserLink);
return $urlUserLink;
}

B - En el caso que sea en c.posts.php buscan class tsPosts { y debajo pegan esto
/* Menciones & Enlaces automáticos */
function getLinkPost($urlUserLink) {
global $tsCore, $tsUser;
# Buscamos a todos los usuarios que lleven @
preg_match_all('/\B@([a-zA-Z0-9_-]{4,16}+)\b/', $urlUserLink, $users);
# Lo pasamos por variable
$menciones = $users[1];
foreach ($menciones as $k => $user) {
# Obtenemos la id del usuario
$uid = $tsUser->getUserID($user);
# En el caso que no exista, no hará nada
if(!empty($uid)) {
$reemplazar = '<a href="'.$tsCore->settings['url'].'/perfil/'.$user.'" title="Ir a su perfil" class="font-weight-bolder">'.$user.'</a> ';
$urlUserLink = str_replace($user, $reemplazar, $urlUserLink);
}
}
# Enlaces automáticos
$urlUserLink = preg_replace("#(^|[\n ])([\w]+?://[^ \"\n\r\t<]*)#is", "\\1<a href=\"\\2\" target=\"_blank\">\\2</a>", $urlUserLink);
$urlUserLink = preg_replace("#(^|[\n ])((www|ftp)\.[^ \"\t\n\r<]*)#is", "\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>", $urlUserLink);
return $urlUserLink;
}

Luego en c.posts.php buscan 
$postData['user_firma'] = $tsCore->parseBadWords($tsCore->parseBBCodeFirma($postData['user_firma']), true);

y debajo pegan, si esta en c.posts.php
// Enlaces automatico
$postData['post_body'] = $this->getLinkPost($postData['post_body']);

o si esta en c.core.php
// Enlaces automatico
$postData['post_body'] = $tsCore->getLinkPost($postData['post_body']);

Porque no se usar setMenciones($html)?
La razón por la que no se usa, es que solo creará el enlace de un usuario.
Ejemplo hay 4 usuarios que tienen que ser mencionados, pero solo uno tendrá el enlace.

NOTA: Esta función no enviará ninguna notificación a los usuarios mencionados en el post!

2 puntos
4
Loading...

¿Como comentar?

Para poder comentar necesitas estar Registrado.


Si ya eres miembro ingresa a tu cuenta.