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

Last change on this file since 70522 was 9379, checked in by cedric@…, 13 years ago

gerer l'install, et mises a jour pour la 192

File size: 3.3 KB
Line 
1<?php
2
3include_spip('inc/indexation');
4include_spip('base/checklink');
5include_spip('inc/checklink');
6include_spip('inc/texte');
7
8function checklink_ajouter_boutons($boutons_admin) {
9        // si on est admin
10        if ($GLOBALS['connect_statut'] == "0minirezo" && $GLOBALS["connect_toutes_rubriques"]
11        AND $GLOBALS["options"]=="avancees") {
12          // on voit le bouton dans la barre "forum_admin"
13                $boutons_admin['forum']->sousmenu["liens_tous"]= new Bouton(
14                _DIR_PLUGIN_CHECKLINK."/img_pack/checklink-24.png",  // icone
15                _T("sites_web") //titre
16                );
17        }
18        return $boutons_admin;
19}
20
21function checklink_post_edition($flux){
22        static $objet_traite=array();
23        if (!isset($flux['args']['id_objet']) || !isset($flux['args']['table']))
24                return; // rien a faire ici ...
25        // renseigner la table
26        $id_objet = $flux['args']['id_objet'];
27        $table = $flux['args']['table'];
28        $id_table = id_index_table($table);
29       
30        // si on a pas commence a traiter cet objet, marquer tous ses liens existants comme obsolete
31        if (!isset($objet_traite[$id_table]) OR !isset($objet_traite[$id_table][$id_objet]) ){
32                if (count($flux['data'])>=0.5*count($flux['args']['champs'])){
33                        spip_query("UPDATE spip_liens SET obsolete='oui' WHERE id_table=$id_table AND id_objet=$id_objet");
34                        $objet_traite[$id_table][$id_objet] = true;
35                }
36        }
37       
38        // passer le contenu dans propre pour transformer les liens internes et les modeles eventuels
39        $letexte = propre(join(' ',$flux['data']));
40        checklink_extrait_liens($id_table,$id_objet,$letexte);
41        return $flux;
42}
43
44function checklink_post_propre($flux){
45        // recuperer les liens des balises a et img
46        if (preg_match_all(
47        ',<(a) [^>]*>,UimsS',
48        $flux, $regs, PREG_SET_ORDER)) {
49                $a_tag=array();$a_tag_repl=array();     
50                foreach ($regs as $reg) {
51                        if (strtolower($reg[1])=='a')
52                                $url = extraire_attribut($reg[0], 'href');
53                        if (strtolower($reg[1])=='img'){
54                                $url = extraire_attribut($reg[0], 'src');
55                                if (!preg_match(',^http://,',$url)) $url = null;
56                        }
57                        // filtrer les ancres et les mailto:
58                        if ($url){
59                                $url = trim($url);
60                                if (preg_match(',^(#|mailto:),',$url)) $url = null;
61                        }
62                        if ($url){
63                                $tag_repl = $tag = $reg[0];
64                                // prevoir les liens dont les attributs ont pu etre renseignes a la main
65                                $titre = extraire_attribut($reg[0], 'title');
66                                $lang = extraire_attribut($reg[0], 'lang');
67                                $titre_auto = strlen($titre)?'non':'oui';
68                                $lang_auto = strlen($lang)?'non':'oui';
69                               
70                                if ($titre_auto=='oui' OR $lang_auto=='oui')
71                                        if ($row = spip_fetch_array(spip_query("SELECT * FROM spip_liens WHERE url=".spip_abstract_quote($url)." AND titre_auto='$titre_auto' AND lang_auto='$lang_auto'"))){
72                                                if ($row['statut']=='sus' OR $row['statut']=='off'){
73                                                        $class = extraire_attribut($tag_repl,'class');
74                                                        $tag_repl = inserer_attribut($tag_repl,'class',"$class spip_url_obsolete");
75                                                        $tag_repl = inserer_attribut($tag_repl,'title',_T('syndic_lien_obsolete'));
76                                                }
77                                                else{
78                                                        if ($titre_auto=='oui' AND strlen($row['titre']))
79                                                                $tag_repl = inserer_attribut($tag_repl,'title',$row['titre']);
80                                                        if ($lang_auto=='oui' AND strlen($row['lang']))
81                                                                $tag_repl = inserer_attribut($tag_repl,'hreflang',$row['lang']);
82                                                }
83                                                if ($tag_repl!=$tag){
84                                                        $a_tag[] = $tag;
85                                                        $a_tag_repl[] = $tag_repl;
86                                                }
87                                        }
88                        }
89                }
90                $flux = str_replace($a_tag,$a_tag_repl,$flux);
91        }
92        return $flux;
93}
94
95?>
Note: See TracBrowser for help on using the repository browser.