Changeset 31548 in spip-zone for _plugins_/nospam/nospam_pipelines.php


Ignore:
Timestamp:
Sep 13, 2009, 5:31:28 PM (10 years ago)
Author:
marcimat@…
Message:

Nouvelle fonction dans l'api : analyser_spams($texte) qui retourne un tableau de description du texte, enfin surtout de ses liens... Pourra être complété au besoin, ou transformé en classe PHP ?

Nouveau principe : un lien dont le texte fait moins de 3 caractères est passé en proposé par défaut aussi.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/nospam/nospam_pipelines.php

    r31394 r31548  
    7474                if (!isset($flux['data']['texte'])
    7575                        AND $GLOBALS['meta']['forums_texte'] == 'oui'){
     76                        include_spip("inc/nospam");
    7677                        // 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){
    8180                                $flux['data']['texte'] = _T('forum_attention_dix_caracteres');
    8281                                unset($flux['data']['previsu']);
     
    102101                include_spip('inc/autoriser');
    103102          if ($flux['data']['statut'] == 'publie'
    104                   AND (!isset($GLOBALS['visiteur_session']['id_auteur']) OR !autoriser('modererforum'))){
     103          AND (!isset($GLOBALS['visiteur_session']['id_auteur']) OR !autoriser('modererforum'))){
    105104
    106105                        $email = strlen($flux['data']['email_auteur']) ? " OR email_auteur=".sql_quote($flux['data']['email_auteur']):"";
     
    125124
    126125                        $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                                       
    130135                                        if (isset($seuils[$champ]))
    131136                                                $seuil = $seuils[$champ];
     
    134139
    135140                                        foreach($seuil as $s=>$stat)
    136                                                 if ($liens>=$s)
     141                                                if ($infos['nombre_liens'] >= $s)
    137142                                                        $flux['data']['statut'] = $stat;
    138143                                }
Note: See TracChangeset for help on using the changeset viewer.