source: spip-zone/_plugins_/hashtags/trunk/hashtags_pipelines.php @ 107913

Last change on this file since 107913 was 96092, checked in by pierre.laszczak@…, 5 years ago

Utilisation du pipeline post_typo plus adapter que nettoyer_raccourcis

File size: 3.1 KB
Line 
1<?php
2
3if (!defined('_ECRIRE_INC_VERSION')) return;
4
5function hashtags_post_edition($flux){
6
7        $cfg = lire_config('cfg_hashtags');
8
9        $table_objet = $flux['args']['table_objet'];                // 'articles',
10        $objet = $flux['args']['type'];                             // 'article'
11        $id_objet = $flux['args']['id_objet'];                      // '23'
12
13        if ( isset($table_objet) || array_key_exists($table_objet,$cfg) ) {
14
15                # Patterns Hashtags!
16                $pattern = "~#(!->|->|!)*(\\w|\\')+(?![^<]*[]>|[^<>]*<\\/)~u";
17
18                foreach ($cfg[$table_objet]['champs'] as $champ){
19
20                        if ( preg_match_all($pattern, $flux['data'][$champ], $matches) ) {
21
22                                # Déclarer le tableau de mots à lier
23                                $id_mots = array();
24
25                                # Récuperer les tags contenus  dans le texte et supprimer les doublons éventuels
26                                $tags = array_unique($matches['0']);
27                                $tags = preg_replace('`#(!->|!|->)*`','',$tags);
28
29                                # Verifier si les mots clef n'existent pas déjà sur le groupe demandé
30                                if ($req = sql_allfetsel('titre, id_mot', 'spip_mots', sql_in('titre', $tags))) {
31                                                foreach ($req as $ligne => $champ) {
32                                                        $tagsConnus[] = $champ['titre'];
33                                                        $id_mots[] = $champ['id_mot'];
34                                                }
35                                }
36
37                                $tagsACreer = ($tagsConnus)
38                                        ? array_diff($tags, $tagsConnus) : $tags;
39
40                                # Création des mots clefs inexistants et recuperation de leur id respectif
41                                if (count($tagsACreer)) {
42
43                                        $grpmot = sql_fetsel('titre', 'spip_groupes_mots');
44
45                                        $ins = array();
46                                        foreach ($tagsACreer as $titre)
47                                                $ins[] = array(
48                                                        'titre' => $titre,
49                                                        'id_groupe' => $cfg[$table_objet]['groupes'],
50                                                        'type' => $grpmot['titre'] );
51
52                                        # Inserer tous les mots puis récuperer les ids ...
53                                        if (count($ins))
54                                                if (sql_insertq_multi("spip_mots", $ins))
55                                                        if ($req = sql_allfetsel('id_mot', 'spip_mots', sql_in('titre', $tagsACreer)))
56                                                                foreach ($req as $ligne => $champ)
57                                                                        $id_mots[] = $champ['id_mot'];
58                                }
59
60                                # Charger l'api d édition de liens
61                                include_spip('action/editer_liens');
62
63                                # Associer les mots clefs a l'objet!
64                                if (count($id_mots))
65                                        objet_associer(array("mot" => $id_mots), array($objet => $id_objet));
66                        }
67                }
68        }
69
70        return $flux;
71}
72
73function hashtags_declarer_tables_interfaces($interfaces){
74
75        # Ajouter les traitements qui vont biens en fonction de la config des mots-clés
76        if (isset($GLOBALS['meta']['cfg_hashtags']) AND $cfg_hashtags = $GLOBALS['meta']['cfg_hashtags'])
77                foreach (unserialize($cfg_hashtags) as $k => $v)
78                        foreach ($v['champs'] as $champ)
79                                $interfaces['table_des_traitements'][strtoupper($champ)][$k] =
80                                        isset ( $interfaces['table_des_traitements'][strtoupper($champ)][$k] )
81                                                ? str_replace(  "%s",
82                                                                                "traitements_hashtags(%s, $v[groupes])",
83                                                                                $interfaces['table_des_traitements'][strtoupper($champ)][$k])
84                                                : str_replace(  "%s",
85                                                                                "traitements_hashtags(%s, $v[groupes])",
86                                                                                $interfaces['table_des_traitements'][strtoupper($champ)][0]);
87
88        return $interfaces;
89}
90
91# Nettoyage de la synatxe hashtag en particulier pour INTRODUCTION...
92function hashtags_post_typo($flux){
93    return  nettoyer_raccourcis_hashtags($flux);
94}
Note: See TracBrowser for help on using the repository browser.