Changeset 103850 in spip-zone


Ignore:
Timestamp:
Apr 9, 2017, 11:08:21 AM (2 years ago)
Author:
kent1@…
Message:

Enlever ce qui est commenté

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/linkcheck/trunk/action/linkcheck_parcours.php

    r103846 r103850  
    2323
    2424        if (autoriser('webmestre')) {
    25                 //si la fonction n'a pas encore été effectué completement |
    26                 //Dans le cas ou on ne peux effectuer cette action qu'une fois ...
    27                 //if(!lire_config('linkcheck_etat_parcours')){
     25                //on regarde si la fonction a déjà été effectuée partiellement en récupérant les ids de reprise
     26                $dio = lire_config('linkcheck_dernier_id_objet');
     27                $do = lire_config('linkcheck_dernier_objet');
     28                $etat = lire_config('linkcheck_etat_parcours');
    2829
    29                         //on regarde si la fonction a déjà été effectuée partiellement en récupérant les ids de reprise
    30                         $dio = lire_config('linkcheck_dernier_id_objet');
    31                         $do = lire_config('linkcheck_dernier_objet');
    32                         $etat = lire_config('linkcheck_etat_parcours');
     30                //si le parcours a déja été réalisé, on reinitialise les méta
     31                if ($etat) {
     32                        ecrire_config('linkcheck_dernier_id_objet', 0);
     33                        ecrire_config('linkcheck_dernier_objet', 0);
     34                }
    3335
    34                         //si le parcours a déja été réalisé, on reinitialise les méta
    35                         if ($etat) {
    36                                 ecrire_config('linkcheck_dernier_id_objet', 0);
    37                                 ecrire_config('linkcheck_dernier_objet', 0);
    38                         }
     36                //pour chaque tables
     37                $tables_a_traiter = linkcheck_tables_a_traiter();
     38                foreach ($tables_a_traiter as $key_table => $table) {
     39                        //si on en est bien a cette table
     40                        if (($do && $do<$key_table) || !$do) {
     41                                foreach ($table as $table_sql => $info_table) {
     42                                        if (in_array($table_sql, array('spip_plugins'))) {
     43                                                continue;
     44                                        }
     45                                        $nom_champ_id=id_table_objet($table_sql);
     46                                        // Récuperer la liste des champs suivant le type d'objet
     47                                        $tab_champs_a_traiter = linkcheck_champs_a_traiter($info_table);
     48                                        if (empty($tab_champs_a_traiter)) {
     49                                                continue;
     50                                        }
     51                                        $champs_a_traiter = is_array($tab_champs_a_traiter) ?
     52                                                implode(',', array_keys($tab_champs_a_traiter)) : '*';
    3953
    40                         //pour chaque tables
    41                         $tables_a_traiter = linkcheck_tables_a_traiter();
    42                         foreach ($tables_a_traiter as $key_table => $table) {
    43                                 //si on en est bien a cette table
    44                                 if (($do && $do<$key_table) || !$do) {
    45                                         foreach ($table as $table_sql => $info_table) {
    46                                                 if (in_array($table_sql, array('spip_plugins'))) {
    47                                                         continue;
     54                                        // Recommencer à l'endroit ou l'on s'est arrêté
     55                                        $where  = $nom_champ_id.'>'.intval($dio);
     56
     57                                        // Ne sélectionner que les objets dans la base qui contiennent des URLs
     58                                        // @todo Tester pour oracle et sqlite
     59                                        if ($db_ok['type'] === 'mysql') {
     60                                                /*$tab_expreg_mysql = array(
     61                                                        '(((https?|ftps?)://)|(((https?|ftps?)://)?[A-Za-z0-9\-]*\.))[A-Za-z0-9\-]+\.[a-zA-Z]{2,9}/?',
     62                                                        '->[^\]]\]');*/
     63                                                $classe_alpha = 'a-zA-Z0-9âäéèëêïîôöùüû²';
     64                                                $tab_expreg_mysql = array(
     65                                                        "(((http|https|ftp|ftps)://)?www\.)|((http|https|ftp|ftps)://([".$classe_alpha."\-]*\.)?))([".$classe_alpha."+\-]*\.)+[a-zA-Z0-9]{2,9}(/[".$classe_alpha."=.?&+\_\\@\:\,/%#\-]*)?)(\'|\"| |\.|\->|\]|,|;|\s)/?",
     66                                                        '(\->)([a-zA-Z]{3,10}[0-9]{1,})\]'
     67                                                );
     68
     69                                                $where_reg = array();
     70                                                foreach ($tab_champs_a_traiter as $nom_champs => $type_champs) {
     71                                                        if ($type_champs) {
     72                                                                foreach ($tab_expreg_mysql as $expreg) {
     73                                                                        $where_reg[] = $nom_champs . ' regexp(\'' . $expreg . '\')';
     74                                                                }
     75                                                        } else {
     76                                                                $where_reg[] = $nom_champs . ' <> \'\'';
     77                                                        }
    4878                                                }
    49                                                 $nom_champ_id=id_table_objet($table_sql);
    50                                                 // Récuperer la liste des champs suivant le type d'objet
    51                                                 $tab_champs_a_traiter = linkcheck_champs_a_traiter($info_table);
    52                                                 if (empty($tab_champs_a_traiter)) {
    53                                                         continue;
     79                                                $where .= (!empty($where_reg)) ? ' AND (' . implode(' or ', $where_reg) . ')' : '';
     80                                        }
     81                                        // On réduit la recherche à une branche du site
     82
     83                                        $where .= ($branche > 0) ?
     84                                                ' AND (id_rubrique IN(' . implode(',', linkcheck_marmots($branche)) . '))' : '';
     85
     86                                        if (isset($info_table['statut'][0]['previsu'])) {
     87                                                $statuts = explode(',', str_replace('/auteur', '', $info_table['statut'][0]['previsu']));
     88                                                foreach ($statuts as $key => $val) {
     89                                                        if ($val == '!') {
     90                                                                unset($statuts[$key]);
     91                                                        }
    5492                                                }
    55                                                 $champs_a_traiter = is_array($tab_champs_a_traiter) ?
    56                                                         implode(',', array_keys($tab_champs_a_traiter)) : '*';
     93                                                if (count($statuts) > 0) {
     94                                                        $where .= ' AND '.sql_in('statut', $statuts);
     95                                                }
     96                                        } elseif (isset($info_table['field']['statut'])) {
     97                                                // On exclus de la selection, les objet dont le status est refuse ou poubelle
     98                                                $where .= ' AND '.sql_in('statut', array('refuse', 'poubelle'), true);
     99                                        }
    57100
    58                                                 // Recommencer à l'endroit ou l'on s'est arrêté
    59                                                 $where  = $nom_champ_id.'>'.intval($dio);
     101                                        $sql = sql_allfetsel(
     102                                                $nom_champ_id.','.$champs_a_traiter,
     103                                                $table_sql,
     104                                                $where,
     105                                                '',
     106                                                $nom_champ_id.' ASC'
     107                                        );
    60108
    61                                                 // Ne sélectionner que les objets dans la base qui contiennent des URLs
    62                                                 // @todo Tester pour oracle et sqlite
    63                                                 if ($db_ok['type'] === 'mysql') {
    64                                                         /*$tab_expreg_mysql = array(
    65                                                                 '(((https?|ftps?)://)|(((https?|ftps?)://)?[A-Za-z0-9\-]*\.))[A-Za-z0-9\-]+\.[a-zA-Z]{2,9}/?',
    66                                                                 '->[^\]]\]');*/
    67                                                         $classe_alpha = 'a-zA-Z0-9âäéèëêïîôöùüû²';
    68                                                         $tab_expreg_mysql = array(
    69                                                                 "(((http|https|ftp|ftps)://)?www\.)|((http|https|ftp|ftps)://([".$classe_alpha."\-]*\.)?))([".$classe_alpha."+\-]*\.)+[a-zA-Z0-9]{2,9}(/[".$classe_alpha."=.?&+\_\\@\:\,/%#\-]*)?)(\'|\"| |\.|\->|\]|,|;|\s)/?",
    70                                                                 '(\->)([a-zA-Z]{3,10}[0-9]{1,})\]'
    71                                                         );
     109                                        //pour chaque objet
     110                                        $objet = objet_type($table_sql);
     111                                        foreach ($sql as $res) {
     112                                                //on créé les variables à envoyer
     113                                                $id_objet = $res[$nom_champ_id];
     114                                                unset($res[$nom_champ_id]);
    72115
    73                                                         $where_reg = array();
    74                                                         foreach ($tab_champs_a_traiter as $nom_champs => $type_champs) {
    75                                                                 if ($type_champs) {
    76                                                                         foreach ($tab_expreg_mysql as $expreg) {
    77                                                                                 $where_reg[] = $nom_champs . ' regexp(\'' . $expreg . '\')';
    78                                                                         }
    79                                                                 } else {
    80                                                                         $where_reg[] = $nom_champs . ' <> \'\'';
    81                                                                 }
    82                                                         }
    83                                                         $where .= (!empty($where_reg)) ? ' AND (' . implode(' or ', $where_reg) . ')' : '';
    84                                                 }
    85                                                 // On réduit la recherche à une branche du site
     116                                                //on liste les liens
     117                                                $tab_liens = linkcheck_lister_liens($res);
    86118
    87                                                 $where .= ($branche > 0) ?
    88                                                         ' AND (id_rubrique IN(' . implode(',', linkcheck_marmots($branche)) . '))' : '';
     119                                                // On regarde si l'objet parent est publie
     120                                                $objet_publie = objet_test_si_publie($objet, $id_objet);
    89121
    90                                                 if (isset($info_table['statut'][0]['previsu'])) {
    91                                                         $statuts = explode(',', str_replace('/auteur', '', $info_table['statut'][0]['previsu']));
    92                                                         foreach ($statuts as $key => $val) {
    93                                                                 if ($val == '!') {
    94                                                                         unset($statuts[$key]);
    95                                                                 }
    96                                                         }
    97                                                         if (count($statuts) > 0) {
    98                                                                 $where .= ' AND '.sql_in('statut', $statuts);
    99                                                         }
    100                                                 } else if (isset($info_table['field']['statut'])) {
    101                                                         // On exclus de la selection, les objet dont le status est refuse ou poubelle
    102                                                         $where .= ' AND '.sql_in('statut', array('refuse', 'poubelle'), true);
     122                                                if ($objet_publie) {
     123                                                        $publie = 'oui';
     124                                                } else {
     125                                                        $publie = 'non';
    103126                                                }
    104127
    105                                                 $sql = sql_allfetsel(
    106                                                         $nom_champ_id.','.$champs_a_traiter,
    107                                                         $table_sql,
    108                                                         $where,
    109                                                         '',
    110                                                         $nom_champ_id.' ASC'
    111                                                 );
     128                                                //on les insere dans la base
     129                                                linkcheck_ajouter_liens($tab_liens, $objet, $id_objet, $publie);
    112130
    113                                                 //pour chaque objet
    114                                                 $objet = objet_type($table_sql);
    115                                                 foreach ($sql as $res) {
    116                                                         //on créé les variables à envoyer
    117                                                         $id_objet = $res[$nom_champ_id];
    118                                                         unset($res[$nom_champ_id]);
    119 
    120                                                         //on liste les liens
    121                                                         $tab_liens = linkcheck_lister_liens($res);
    122 
    123                                                         // On regarde si l'objet parent est publie
    124                                                         $objet_publie = objet_test_si_publie($objet, $id_objet);
    125 
    126                                                         if ($objet_publie) {
    127                                                                 $publie = 'oui';
    128                                                         } else {
    129                                                                 $publie = 'non';
    130                                                         }
    131 
    132                                                         //on les insere dans la base
    133                                                         linkcheck_ajouter_liens($tab_liens, $objet, $id_objet, $publie);
    134 
    135                                                         //on renseigne les ids de reprise
    136                                                         ecrire_config('linkcheck_dernier_id_objet', $id_objet);
    137                                                 }
    138                                                 //on renseigne l'indice de la table
    139                                                 ecrire_config('linkcheck_dernier_objet', $key_table);
     131                                                //on renseigne les ids de reprise
     132                                                ecrire_config('linkcheck_dernier_id_objet', $id_objet);
    140133                                        }
     134                                        //on renseigne l'indice de la table
     135                                        ecrire_config('linkcheck_dernier_objet', $key_table);
    141136                                }
    142137                        }
     138                }
    143139
    144                         //quand la fonction a été executée en entier on renseigne la base
    145                         ecrire_config('linkcheck_etat_parcours', true);
    146 
    147                         //on lance analyse des liens trouvés
    148                         //queue_add_job('linkcheck_tests', 'Tests post parcours des liens de la base', '', 'inc/linkcheck_fcts');
    149 
    150                         //echo minipres('Parcours des liens', ("<p>Terminé !</p>\n<p style='text-align: right'> Vous pouvez maintenant <a href='" . generer_url_ecrire("linkcheck_tests"). "'> &gt;&gt; "._T('linkcheck:tester_liens_linkchecks')."</a></p>"));
    151 
    152                 //}
     140                //quand la fonction a été executée en entier on renseigne la base
     141                ecrire_config('linkcheck_etat_parcours', true);
    153142        }
    154143
Note: See TracChangeset for help on using the changeset viewer.