Changeset 101782 in spip-zone for _plugins_/motpasseexpirable/genie


Ignore:
Timestamp:
Jan 17, 2017, 9:51:32 AM (4 years ago)
Author:
erational@…
Message:

Comme beaucoup de plugins (contact par ex.) detournent les statuts auteurs.
S'assurer qu'on ré-initialise uniquement les auteurs éditoriaux.
Un menu de configuration permet de choisir quels statuts, on désire ré-initialiser (par défaut Admin & rédactteur)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/motpasseexpirable/genie/motpasseexpirable.php

    r99504 r101782  
    44 *
    55 * @plugin     Mots de passe expirables
    6  * @copyright  2016
     6 * @copyright  2017
    77 * @author     erational
    88 * @licence    GNU/GPL
     
    1414function genie_motpasseexpirable_dist($t){
    1515
    16   // etape 1: mettre à jour la date expiration des comptes nouvellement crées
    17   $date = date("Y-m-d H:i:s");
    18   sql_updateq('spip_auteurs', array('pass_maj' => $date), "pass_maj='0000-00-00 00:00:00'");
     16        // etape 1: mettre à jour la date expiration des comptes nouvellement crées
     17        $date = date('Y-m-d H:i:s');
     18        sql_updateq('spip_auteurs', array('pass_maj' => $date), "pass_maj='0000-00-00 00:00:00'");
    1919
    20   // etape 2: recherche les comptes périmées
    21   include_spip('inc/config');
    22   $delai_expiration = lire_config('motpasseexpirable/delai',30);
    23   $delai_expiration = intval($delai_expiration);
    24   if ($delai_expiration<1)
    25                         $delai_expiration = 1; 
    26   $date_expiration = date("Y-m-d H:i:s", time() - $delai_expiration * 24 * 3600);                     
    27  
    28   $result = sql_select('id_auteur,email', "spip_auteurs", "pass_maj<'$date_expiration'");
    29   while ($row = sql_fetch($result)){
    30        $id_auteur = $row['id_auteur'];
    31        $email = $row['email'];
    32        sql_updateq('spip_auteurs', array('pass' => '*','pass_maj'=>$date), "id_auteur=$id_auteur");
    33        
    34        // notifications
    35        // inspi:  squelettes-idst/formulaires/oubli.php
    36        include_spip('inc/filtres'); # pour email_valide()
    37              if (email_valide($email)) {       
    38             include_spip('inc/texte'); # pour corriger_typo
    39      
    40                         include_spip('action/inscrire_auteur');
    41                         $cookie = auteur_attribuer_jeton($id_auteur);
    42        
    43                         $msg = recuperer_fond(
    44                                 "prive/modeles/mail_motpasseexpirable",
    45                                 array(
    46                                         'url_reset'=>generer_url_public('spip_pass',"p=$cookie", true, false)
    47                                 )
    48                         );
    49                         include_spip("inc/notifications");
    50                         notifications_envoyer_mails($email, $msg);
    51            
    52        }
     20        // etape 2: recherche les comptes périmés
     21        include_spip('inc/config');
     22        $delai_expiration = lire_config('motpasseexpirable/delai', 30);
     23        $delai_expiration = intval($delai_expiration);
     24        if ($delai_expiration < 1) {
     25                $delai_expiration = 1;
     26        }
     27        $date_expiration = date("Y-m-d H:i:s", time() - $delai_expiration * 24 * 3600);
    5328
    54   }
    55   return 1;
     29        $statuts = lire_config('motpasseexpirable/statuts', array('0minirezo', '1comite'));
     30        foreach ($statuts as $k=>$val) {
     31                $statuts[$k] = "'$val'";
     32        }
     33        $statuts = implode(',', $statuts);
     34        $where_sql = array(
     35                "pass_maj < '$date_expiration'",
     36                "statut IN ($statuts)",
     37                // "email != ''",
     38        );
     39        $result = sql_select('id_auteur, email', 'spip_auteurs', $where_sql );
     40
     41        while ($row = sql_fetch($result)){
     42                $id_auteur = $row['id_auteur'];
     43                $email = $row['email'];
     44                spip_log("reset auteur id: $id_auteur / $email ", "motpasseexpirable");
     45                sql_updateq('spip_auteurs', array('pass' => '*', 'pass_maj' => $date), 'id_auteur='.$id_auteur);
     46
     47                // notifications
     48                // inspi: squelettes-dist/formulaires/oubli.php
     49                include_spip('inc/filtres'); # pour email_valide()
     50                if (email_valide($email)) {
     51                                include_spip('inc/texte'); # pour corriger_typo
     52
     53                                include_spip('action/inscrire_auteur');
     54                                $cookie = auteur_attribuer_jeton($id_auteur);
     55
     56                                $msg = recuperer_fond(
     57                                        'prive/modeles/mail_motpasseexpirable',
     58                                        array(
     59                                                'url_reset'=>generer_url_public('spip_pass', 'p='.$cookie, true, false)
     60                                        )
     61                                );
     62                                include_spip('inc/notifications');
     63                                notifications_envoyer_mails($email, $msg);
     64                }
     65        }
     66        return 1;
    5667}
    57 
Note: See TracChangeset for help on using the changeset viewer.