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

Last change on this file since 120875 was 97004, checked in by kent1@…, 5 years ago

PSR SPIP

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