martes, 10 de mayo de 2011

phplist: Añadir de forma manual usuarios a la lista negra o "blacklist"

La aplicación para la gestión de listas de correo phplist tiene en todas sus versiones una carencia importante que es la de poder incluir en su blacklist de forma manual direcciones de email.

Oficialmente eso se puede hacer desde el formulario de des-suscripción del usuario pero el sistema notifica al usuario la baja por email y esto puede no interesar al administrador de la lista para determinados usuarios de tipo competencia, etc.

También hay que tener en cuenta otra carencia importante que es el que no se puedan añadir direcciones en masa a la lista negra, ya que solo hay la posibilidad de hacerlo una a una.

Con esta pequeña modificación del archivo /admin/massunconfirm.php podemos hacer que desde el menú de gestión de usuarios manage users > mass uncorfirm users se pueda además de des-confirmar usuarios incluirlos en la lista negra.

Hay que tener en cuenta que según la configuración del sistema, pueden tardar un tiempo en aparecer en la blacklist los usuarios, por lo que la revisión la deberemos hacer pasados unos minutos.

Esto es lo que tendrá que contener el archivo /admin/massunconfirm.php

<?phprequire_once dirname(__FILE__).'/accesscheck.php';
//userlib for blacklist functioninclude_once dirname(__FILE__).'/commonlib/lib/userlib.php';$massblacklist = $_POST["massblacklist"];
if (!$_SESSION['logindetails']['superuser']) {  print $GLOBALS['I18N']->get('Sorry, this page can only be used by super admins');  return;}
if ($_POST['unsubscribe']) {  $emails = explode("\n",$_POST['unsubscribe']);  $count = 0;  $unsubbed = 0;  $blacklisted = 0;     foreach ($emails as $email) {    $email = trim($email);    $count++;
   if ($massblacklist == true) {       //added user to the blacklist if massblacklist checkbox is true;       addUserToBlackList($email, 'Admin Blacklisted');       $blacklisted++;         }      else {      Sql_Query(sprintf('update %s set confirmed = 0 where email =                  "%s"',$GLOBALS['tables']['user'],$email));    $unsubbed += Sql_Affected_Rows();   }
  }  printf($GLOBALS['I18N']->get('All done, %d emails processed, %d emails marked unconfirmed, %d emails blacklisted<br/>'),$count,$unsubbed,$blacklisted);  return;}?>
<form method=post action=""><h1><?php echo $GLOBALS['I18N']->get('Mass unconfirm email addresses')?></h1><p><?php echo $GLOBALS['I18N']->get('Paste the emails to mark unconfirmed in this box, and click continue')?></p><p><?php echo $GLOBALS['I18N']->get('MassBlacklist:')?><input type="checkbox" value="massblacklist" name="massblacklist[]"></p><input type=submit name="go" value="<?php echo $GLOBALS['I18N']->get('Continue')?>"><br/><textarea name="unsubscribe" rows=30 cols=40></textarea></form>


Esta modificación ha sido probada y funciona correctamente al menos en las siguientes versiones de esta aplicación:

  • phplist 2.10.9 
  • phplist 2.10.10
  • phplist 2.10.11
  • phplist 2.10.12
  • phplist 2.10.13


No hay comentarios:

Publicar un comentario