source: spip-zone/_plugins_/trad-lang/trunk/tradlang_pipelines.php @ 90095

Last change on this file since 90095 was 77188, checked in by kent1@…, 8 years ago

Faire fonctionner les grappes avec les modules de langue

File size: 6.4 KB
Line 
1<?php
2/**
3 * Trad-lang v2
4 * Plugin SPIP de traduction de fichiers de langue
5 * © Florent Jugla, Fil, kent1
6 *
7 * Fichier des pipelines utilisés par le plugin
8 *
9 * @package SPIP\Tradlang\Pipelines
10 */
11
12if (!defined("_ECRIRE_INC_VERSION")) return;
13
14/**
15 * Insertion dans le pipelines taches_generales_cron (SPIP)
16 *
17 * On ajoute une tache cron toutes les 4 minutes afin de créer les premières révisions des
18 * tradlang pour éviter de perdre du temps par la suite.
19 * Une autre tâche CRON "maintenance" toutes les 24h pour diverses opérations.
20 *
21 * @param array $taches_generales
22 *              Le tableau des taches à réaliser
23 * @return array $taches_generales
24 *              Le tableau des taches complété
25 */
26function tradlang_taches_generales_cron($taches_generales) {
27        $taches_generales['tradlang_verifier_versions'] = 240;
28        $taches_generales['tradlang_maintenance'] = 24*3600;
29        return $taches_generales;
30}
31/**
32 * Insertion dans le pipeline pre_edition (SPIP)
33 *
34 * Ajouter les langues_preferees soumises lors de la soumission du formulaire CVT editer_auteur
35 * Si quelque chose est sélectionné, on le serialize pour le mettre en base, sinon on serialize un array
36 * pour toujours avoir quelquechose
37 *
38 * @param array $flux
39 *              Le contexte du pipeline
40 * @return array $flux
41 *              Le contexte du pipeline auquel on a ajouté ce que l'on souhaite
42 */
43function tradlang_pre_edition($flux){
44        if ($flux['args']['table'] == 'spip_auteurs') {
45                if (is_array($langues_preferees = _request('langues_preferees')))
46                        $flux['data']['langues_preferees'] = serialize($langues_preferees);
47                else
48                        $flux['data']['langues_preferees'] = serialize(array());
49        }
50        return $flux;
51}
52
53/**
54 * Insertion dans le pipeline post_edition (SPIP)
55 *
56 * Si configuré comme tel on regénère les fichiers à chaque modification de chaine de langue
57 * On n'agit que sur les conditions suivantes :
58 * -* on modifier la table spip_tradlangs
59 * -* on a activé la sauvegarde locale
60 * -* on a activé la sauvegarde locale au moment de la post-edition
61 *
62 * @param array $flux
63 *              Le contexte du pipeline
64 * @return array $flux
65 *              Le contexte du pipeline qui n'est jamais modifié
66 */
67function tradlang_post_edition($flux){
68        if($flux['args']['table'] == "spip_tradlangs"){
69                include_spip('inc/config');
70                $config = lire_config('tradlang');
71                if (!is_array($config))
72                        return $flux;
73                if(($config['sauvegarde_locale'] == 'on') && ($config['sauvegarde_post_edition'] == 'on')){
74                        include_spip('tradlang_fonctions');
75                        if($dir_lang = tradlang_dir_lang()){
76                                $infos = sql_fetsel('lang,module',$flux['args']['table'],'id_tradlang='.intval($flux['args']['id_objet']));
77                                $module = sql_fetsel('*','spip_tradlang_modules','module='.sql_quote($infos['module']));
78                                $sauvegarder_module = charger_fonction('tradlang_sauvegarde_module','inc');
79                                $sauvegarder_module($module['module'],$infos['lang'],$dir_lang);
80                        }
81                }
82        }
83        return $flux;
84}
85
86/**
87 * Insertion dans le pipeline pre_boucle (SPIP)
88 *
89 * Si on est dans la boucle calculer_langues_utilisees (utilisée dans un formulaire de configuration de l'espace privé),
90 * on ne renvoit pas les langues des tradlangs pour éviter de bloquer ces langues dans la configuration du multilinguisme
91 *
92 * @param object $boucle
93 * @return object $boucle
94 */
95function tradlang_pre_boucle($boucle){
96        if(isset($boucle->nom) && ($boucle->nom == 'calculer_langues_utilisees') && ($boucle->id_boucle == 'tradlangs'))
97                array_unshift($boucle->where,array("'='", "'$id_table." ."id_tradlang'", "'0'"));
98        return $boucle;
99}
100
101/**
102 * Insertion dans le pipeline affiche_milieu (SPIP)
103 *
104 * Sur la fiche des auteurs, on ajoute la liste des révisions de chaines de l'auteur
105 *
106 * @param array $flux
107 *              Le contexte du pipeline
108 * @return array $flux
109 *              Le contexte modifié si besoin
110 */
111function tradlang_affiche_milieu($flux){
112        if (($flux['args']['exec'] == 'auteur') && (intval($flux['args']['id_auteur']) > 0)){
113                $texte = recuperer_fond(
114                        'prive/objets/liste/versions',
115                        array(
116                                'objet'=>'tradlang',
117                                'id_auteur'=>intval($flux['args']['id_auteur'])
118                        )
119                );
120                $flux['data'] .= $texte;
121        }
122        return $flux;
123}
124
125/**
126 * Insertion dans le pipeline editer_contenu_objet (SPIP)
127 *
128 * Ajouter un champ langues préférées sur le formulaire CVT editer_auteur
129 *
130 * @param array $flux
131 * @return array
132 */
133function tradlang_editer_contenu_objet($flux){
134        if ($flux['args']['type']=='auteur') {
135                $langue_preferee = recuperer_fond('formulaires/inc-langues_preferees', $flux['args']['contexte']);
136                $flux['data'] = preg_replace('%(<li class=["\'][^"\']*editer_bio(.*?)</li>)%is', "\n".$langue_preferee."\n".'$1', $flux['data']);
137        }
138        return $flux;
139}
140
141/**
142 * Insertion dans le pipeline formulaire_charger (SPIP)
143 *
144 * Ajouter la valeur langues_preferees dans la liste des champs de la fiche auteur
145 *
146 * @param array $flux
147 *              Le contexte du pipeline
148 * @return array $flux
149 *              Le contexte du pipeline modifié
150 */
151function tradlang_formulaire_charger($flux){
152        // si le charger a renvoye false ou une chaine, ne rien faire
153        if (is_array($flux['data']) && ($flux['args']['form']=='editer_auteur')){
154                $flux['data']['langues_preferees'] = '';
155                if ($id_auteur = intval($flux['data']['id_auteur']))
156                        $flux['data']['langues_preferees'] = sql_getfetsel('langues_preferees','spip_auteurs','id_auteur='.intval($id_auteur));
157        }
158        return $flux;
159}
160
161/**
162 * Insertion dans le pipeline forum_objets_depuis_env (Plugin Forum)
163 * On ajoute la possibilité d'avoir des forums sur les chaines de langue
164 *
165 * @param array $array
166 * @return array $array
167 */
168function tradlang_forum_objets_depuis_env($array){
169        $array['tradlang'] = id_table_objet('tradlang');
170        return $array;
171}
172
173/**
174 * Insertion dans le pipeline revisions_chercher_label (Plugin révisions)
175 * Utiliser de bons labels pour nos champs sous révision
176 *
177 * @param array $flux
178 *              Le contexte du pipeline
179 * @return array $flux
180 *              Le contexte du pipeline modifié
181 */
182function tradlang_revisions_chercher_label($flux){
183        if($flux['args']['objet'] == 'tradlang' && in_array($flux['args']['champ'],array('str','traducteur','statut')))
184                $flux['data'] = 'tradlang:info_'.$flux['args']['champ'];
185        return $flux;
186}
187
188function tradlang_grappes_objets_lies($flux){
189        if(is_array($flux) && !isset($flux['tradlang_modules']))
190                $flux['tradlang_modules'] = _T('tradlang:item_groupes_association_modules');
191        return $flux;
192}
193?>
Note: See TracBrowser for help on using the repository browser.