Changeset 31548 in spip-zone
- Timestamp:
- Sep 13, 2009, 5:31:28 PM (11 years ago)
- Location:
- _plugins_/nospam
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
_plugins_/nospam/inc/nospam.php
r31180 r31548 54 54 } 55 55 56 57 /** 58 * Compte le nombre de caracteres d'une chaine, 59 * mais en supprimant tous les liens 60 * (qu'ils soient ou non ecrits en raccourcis SPIP) 61 * ainsi que tous les espaces en trop 62 * 63 * @param string $texte texte d'entree 64 * @return int compte du texte nettoye 65 */ 66 function compter_caracteres_utiles($texte, $propre=true) { 67 if ($propre) $texte = propre($texte); 68 // regarder si il y a du contenu en dehors des liens ! 69 $texte = PtoBR($texte); 70 $texte = preg_replace(',<a.*</a>,Uims','',$texte); 71 $texte = trim(preg_replace(',[\W]+,uims',' ',$texte)); 72 return strlen($texte); 73 } 74 75 76 /** 77 * Retourne un tableau d'analyse du texte transmis 78 * Cette analyse concerne principalement des statistiques sur les liens 79 * 80 * @param string $texte texte d'entree 81 * @return array rapport d'analyse 82 */ 83 function analyser_spams($texte) { 84 $infos = array( 85 'caracteres_utiles' => 0, // nombre de caracteres sans les liens 86 'nombre_liens' => 0, // nombre de liens 87 'caracteres_texte_lien_min' => 0, // nombre de caracteres du plus petit titre de lien 88 ); 89 90 if (!$texte) return $infos; 91 92 $texte = propre($texte); 93 94 // caracteres_utiles 95 $infos['caracteres_utiles'] = compter_caracteres_utiles($texte, false); 96 97 // nombre de liens 98 $liens = extraire_balises($texte,'a'); 99 $infos['nombre_liens'] = count($liens); 100 101 // taille du titre de lien minimum 102 if (count($liens)) { 103 // supprimer_tags() s'applique a tout le tableau, 104 // mais attention a verifier dans le temps que ca continue a fonctionner 105 # $titres_liens = array_map('supprimer_tags', $liens); 106 $titres_liens = supprimer_tags($liens); 107 $titres_liens = array_map('strlen', $titres_liens); 108 $infos['caracteres_texte_lien_min'] = min($titres_liens); 109 spip_log($infos,'liens'); 110 } 111 return $infos; 112 } 113 114 115 56 116 ?> -
_plugins_/nospam/nospam_pipelines.php
r31394 r31548 74 74 if (!isset($flux['data']['texte']) 75 75 AND $GLOBALS['meta']['forums_texte'] == 'oui'){ 76 include_spip("inc/nospam"); 76 77 // regarder si il y a du contenu en dehors des liens ! 77 $texte = PtoBR(propre(_request('texte'))); 78 $texte = preg_replace(',<a.*</a>,Uims','',$texte); 79 $texte = trim(preg_replace(',[\W]+,uims',' ',$texte)); 80 if (strlen($texte) < 10){ 78 $caracteres = compter_caracteres_utiles(_request('texte')); 79 if ($caracteres < 10){ 81 80 $flux['data']['texte'] = _T('forum_attention_dix_caracteres'); 82 81 unset($flux['data']['previsu']); … … 102 101 include_spip('inc/autoriser'); 103 102 if ($flux['data']['statut'] == 'publie' 104 103 AND (!isset($GLOBALS['visiteur_session']['id_auteur']) OR !autoriser('modererforum'))){ 105 104 106 105 $email = strlen($flux['data']['email_auteur']) ? " OR email_auteur=".sql_quote($flux['data']['email_auteur']):""; … … 125 124 126 125 $seuils = $spammeur_connu?$seuils['spammeur']:$seuils[0]; 127 foreach($flux['data'] as $champ=>$valeur){ 128 $valeur = propre($valeur); // on passe propre a chaque fois, ce qui recupere aussi les adresse de site non linkees 129 if (($liens = count(extraire_balises($valeur,'a')))>0){ 126 include_spip("inc/nospam"); // pour analyser_spams() 127 foreach($flux['data'] as $champ=>$valeur) { 128 $infos = analyser_spams($valeur); 129 if ($infos['nombre_liens'] > 0) { 130 // si un lien a un titre de moins de 3 caracteres, c'est louche... 131 if ($infos['caracteres_texte_lien_min'] < 3) { 132 $flux['data']['statut'] = 'prop'; // en dur en attendant une idee plus generique 133 } 134 130 135 if (isset($seuils[$champ])) 131 136 $seuil = $seuils[$champ]; … … 134 139 135 140 foreach($seuil as $s=>$stat) 136 if ($ liens>=$s)141 if ($infos['nombre_liens'] >= $s) 137 142 $flux['data']['statut'] = $stat; 138 143 } -
_plugins_/nospam/plugin.xml
r31394 r31548 4 4 <icon>img_pack/nospam.png</icon> 5 5 <licence>(c) 2008 GPL</licence> 6 <version>0. 5</version>6 <version>0.6</version> 7 7 <etat>stable</etat> 8 8 <description>Halte au spam ! Filtrez les spams dans les messages, sans nuisance pour les utilisateurs honnêtes.</description>
Note: See TracChangeset
for help on using the changeset viewer.