source: spip-zone/_plugins_/checklink/checklink_pipelines.php @ 5233

Last change on this file since 5233 was 5233, checked in by cedric@…, 15 years ago

le debut du plugin checklink qui recence, stocke et check les link (du bel anglicisme qui fera plaisir a certains)...

File size: 2.7 KB
Line 
1<?php
2
3include_spip('inc/indexation');
4include_spip('base/checklink');
5include_spip('inc/checklink');
6include_spip('inc/texte');
7
8function checklink_pre_enregistre_contenu($flux){
9        static $objet_traite=array();
10        if (!isset($flux['args']['id_objet']) || !isset($flux['args']['table']))
11                return; // rien a faire ici ...
12        // renseigner la table
13        $id_objet = $flux['args']['id_objet'];
14        $table = $flux['args']['table'];
15        $id_table = id_index_table($table);
16       
17        // si on a pas commence a traiter cet objet, marquer tous ses liens existants comme obsolete
18        if (!count($objet_traite)) checklink_verifier_base();
19        if (!isset($objet_traite[$id_table]) OR !isset($objet_traite[$id_table][$id_objet]) ){
20                spip_query("UPDATE spip_liens SET obsolete='oui' WHERE id_table=$id_table AND id_objet=$id_objet");
21                $objet_traite[$id_table][$id_objet] = true;
22        }
23       
24        // passer le contenu dans propre pour transformer les liens internes et les modeles eventuels
25        $letexte = propre($flux['data']);
26        // recuperer les liens des balises a
27        if (preg_match_all(
28        ',<a [^>]*>,UimsS',
29        $letexte, $regs, PREG_SET_ORDER)) {
30                foreach ($regs as $reg) {
31                        $url = extraire_attributs($reg[0], 'href');
32                        // prevoir les liens dont les attributs ont pu etre renseignes a la main
33                        $titre = extraire_attributs($reg[0], 'title');
34                        $lang = extraire_attributs($reg[0], 'lang');
35                        $titre_auto = strlen($titre)?'non':'oui';
36                        $lang_auto = strlen($lang)?'non':'oui';
37                       
38                        // regarder si le lien est deja reference
39                        // et le creer eventuellement pour cet objet
40                        if ($row = spip_fetch_array(spip_query("SELECT FROM spip_liens WHERE url=".spip_abstract_quote($url)))){
41                                if ($row['id_objet']!=$id_objet OR $row['id_table']!=$id_table){
42                                        $id_lien = spip_abstract_insert("spip_liens","(url,id_table,id_objet)",
43                                                "(".spip_abstract_quote($url).",".spip_abstract_quote($id_table).",".spip_abstract_quote($id_objet).")");
44                                }
45                                else 
46                                        $id_lien = $row['id_lien'];
47                        }
48                        if (($titre_auto=='oui') AND (isset($row['titre'])))
49                                        $titre = $row['titre'];
50                        if (($lang_auto=='oui') AND (isset($row['lang'])))
51                                        $lang = $row['lang'];
52                        if (isset($row['statut'])){
53                                $statut = $row['statut'];
54                                $verification = $row['verification'];
55                                $date_verif = $row['date_verif'];
56                        }
57                        else {
58                                $statut = '';
59                                $verification = '1';
60                                $date_verif='';
61                        }
62                       
63                        spip_query("UPDATE spip_liens (titre,lang,maj,statut,verification,date_verif,obsolete,titre_auto,lang_auto)
64                                VALUES (".spip_abstract_quote($titre).",".spip_abstract_quote($lang).", NOW(),".spip_abstract_quote($statut).","
65                                .spip_abstract_quote($verification).",".spip_abstract_quote($date_verif).", 'non' ,"
66                                .spip_abstract_quote($titre_auto).",".spip_abstract_quote($lang_auto).")");
67                }
68        }
69        return $flux;
70       
71}
72
73?>
Note: See TracBrowser for help on using the repository browser.