Changeset 97004 in spip-zone
- Timestamp:
- May 6, 2016, 11:43:42 AM (5 years ago)
- Location:
- _plugins_/trad-lang/trunk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
_plugins_/trad-lang/trunk/tradlang_administrations.php
r93933 r97004 17 17 * @param unknown_type $version_cible 18 18 */ 19 function tradlang_upgrade($nom_meta_base_version, $version_cible){19 function tradlang_upgrade($nom_meta_base_version, $version_cible) { 20 20 $current_version = 0.0; 21 21 $maj = array(); … … 30 30 ); 31 31 $maj['0.3.2'] = array( 32 array('sql_alter', "TABLE spip_tradlang_modules CHANGE nom_mod nom_mod VARCHAR(32) NOT NULL"),33 array('sql_alter', "TABLE spip_tradlang_modules CHANGE lang_prefix lang_prefix VARCHAR(32) NOT NULL")32 array('sql_alter','TABLE spip_tradlang_modules CHANGE nom_mod nom_mod VARCHAR(32) NOT NULL'), 33 array('sql_alter','TABLE spip_tradlang_modules CHANGE lang_prefix lang_prefix VARCHAR(32) NOT NULL') 34 34 ); 35 35 $maj['0.3.3'] = array( … … 54 54 ); 55 55 $maj['0.3.9'] = array( 56 array('sql_alter', "TABLE spip_tradlang_modules DROP INDEX nom_mod"),57 array('sql_alter', "TABLE spip_tradlang_modules CHANGE nom_mod nom_mod text DEFAULT '' NOT NULL"),58 array('sql_alter', "TABLE spip_tradlang_modules ADD INDEX `nom_mod` ( `nom_mod` ( 255 ) )")56 array('sql_alter','TABLE spip_tradlang_modules DROP INDEX nom_mod'), 57 array('sql_alter','TABLE spip_tradlang_modules CHANGE nom_mod nom_mod text DEFAULT "" NOT NULL'), 58 array('sql_alter','TABLE spip_tradlang_modules ADD INDEX `nom_mod` ( `nom_mod` ( 255 ) )') 59 59 ); 60 60 $maj['0.4.0'] = array( 61 array('maj_tables', array('spip_auteurs'))61 array('maj_tables', array('spip_auteurs')) 62 62 ); 63 63 $maj['0.4.1'] = array( 64 array('sql_alter', "TABLE spip_tradlang DROP maj"),65 array('sql_alter', "TABLE spip_tradlang CHANGE ts maj timestamp(14) NOT NULL"),64 array('sql_alter', 'TABLE spip_tradlang DROP maj'), 65 array('sql_alter', 'TABLE spip_tradlang CHANGE ts maj timestamp(14) NOT NULL'), 66 66 ); 67 67 $maj['0.4.2'] = array( 68 array('sql_alter', "TABLE spip_tradlang RENAME spip_tradlangs")68 array('sql_alter', 'TABLE spip_tradlang RENAME spip_tradlangs') 69 69 ); 70 70 $maj['0.4.3'] = array( 71 array('maj_tables', array('spip_auteurs'))71 array('maj_tables', array('spip_auteurs')) 72 72 ); 73 73 $maj['0.4.4'] = array( 74 array('maj_tables', array('spip_tradlang_modules'))74 array('maj_tables', array('spip_tradlang_modules')) 75 75 ); 76 76 $maj['0.4.5'] = array( 77 array('sql_alter', "TABLE spip_tradlangs ADD INDEX id_tradlang_module (id_tradlang_module)"),77 array('sql_alter', 'TABLE spip_tradlangs ADD INDEX id_tradlang_module (id_tradlang_module)'), 78 78 ); 79 79 $maj['0.4.6'] = array( 80 array('sql_alter', "TABLE spip_tradlangs ADD INDEX statut (statut)"),80 array('sql_alter', 'TABLE spip_tradlangs ADD INDEX statut (statut)'), 81 81 ); 82 82 $maj['0.5.0'] = array( … … 95 95 96 96 /** 97 * Fonction d'import de l'ancien tradlang 97 * Fonction d'import de l'ancien tradlang 98 98 * Ne devrait être utile que sur spip.net mais sais t on jamais 99 99 */ 100 function tradlang_import_ancien_tradlang($affiche =false){100 function tradlang_import_ancien_tradlang($affiche = false) { 101 101 /** 102 102 * On insère les modules 103 103 */ 104 $modules = sql_select('*', 'trad_lang','', array('module'));105 while ($module=sql_fetch($modules)){106 $id_module = sql_insertq('spip_tradlang_modules', array('module'=>$module['module'],'nom_mod' =>$module['module']));104 $modules = sql_select('*', 'trad_lang', '', array('module')); 105 while ($module=sql_fetch($modules)) { 106 $id_module = sql_insertq('spip_tradlang_modules', array('module' => $module['module'], 'nom_mod' => $module['module'])); 107 107 /** 108 108 * On insére les anciens tradlang 109 109 */ 110 110 //$docs = array_map('reset',sql_allfetsel('id_document','spip_documents',"statut='0'",'','',"0,100")); 111 $strings = sql_allfetsel('id,module,lang,str,comm,status,traducteur,ts,md5,orig,date_modif', 'trad_lang',"module=".sql_quote($module['module']). " AND orig!='2'",'','',"0,100");111 $strings = sql_allfetsel('id,module,lang,str,comm,status,traducteur,ts,md5,orig,date_modif', 'trad_lang', 'module = ' . sql_quote($module['module']). ' AND orig!="2"', '', '', '0,100'); 112 112 $count = 0; 113 while (count($strings)) {114 foreach ($strings as $id => $string){113 while (count($strings)) { 114 foreach ($strings as $id => $string) { 115 115 $string['titre'] = $string['id'].' : '.$string['module'].' - '.$string['lang']; 116 if (!$string['md5'])116 if (!$string['md5']) { 117 117 $string['md5'] = md5($string['str']); 118 } 118 119 $string['langue_choisie'] = 'non'; 119 120 $string['id_tradlang_module'] = $id_module; … … 122 123 unset($string['ts']); 123 124 unset($string['status']); 124 sql_insertq('spip_tradlangs',$string); 125 sql_updateq('trad_lang',array('orig' => 2),'str='.sql_quote($string['str']).' AND lang='.sql_quote($string['lang'])); 126 } 127 if ($affiche) echo " ."; 125 sql_insertq('spip_tradlangs', $string); 126 sql_updateq('trad_lang', array('orig' => 2), 'str=' . sql_quote($string['str']) . ' AND lang= ' . sql_quote($string['lang'])); 127 } 128 if ($affiche) { 129 echo ' .'; 130 } 128 131 $count = $count+count($strings); 129 spip_log($count,'tradlang'); 130 $strings = sql_allfetsel('id,module,lang,str,comm,status,traducteur,ts,md5,orig,date_modif','trad_lang',"module=".sql_quote($module['module']). " AND orig!='2'",'','',"0,100"); 131 } 132 } 133 } 134 function tradlang_maj_id_tradlang_modules($affiche = false){ 135 $strings = array_map('reset',sql_allfetsel('id_tradlang','spip_tradlangs',"id_tradlang_module='0'",'','',"0,100")); 136 while (count($strings)){ 137 foreach($strings as $id_tradlang){ 138 $module = sql_getfetsel('module','spip_tradlangs','id_tradlang='.intval($id_tradlang)); 139 $id_tradlang_module = sql_getfetsel('id_tradlang_module','spip_tradlang_modules','module='.sql_quote($module)); 140 sql_updateq('spip_tradlangs',array('id_tradlang_module' => $id_tradlang_module),'id_tradlang='.intval($id_tradlang)); 141 } 142 if ($affiche) echo " ."; 143 $strings = array_map('reset',sql_allfetsel('id_tradlang','spip_tradlangs',"id_tradlang_module='0'",'','',"0,100")); 144 } 145 } 146 147 function tradlang_maj_tradlang_titre($affiche = false){ 148 $strings = array_map('reset',sql_allfetsel('id_tradlang','spip_tradlangs',"titre=''",'','',"0,500")); 149 while (count($strings)){ 150 foreach($strings as $id_tradlang){ 151 $tradlang = sql_fetsel('*','spip_tradlangs','id_tradlang='.intval($id_tradlang)); 132 spip_log($count, 'tradlang'); 133 $strings = sql_allfetsel('id,module,lang,str,comm,status,traducteur,ts,md5,orig,date_modif', 'trad_lang', 'module = ' . sql_quote($module['module']). ' AND orig!="2"', '', '', '0,100'); 134 } 135 } 136 } 137 function tradlang_maj_id_tradlang_modules($affiche = false) { 138 $strings = array_map('reset', sql_allfetsel('id_tradlang', 'spip_tradlangs', 'id_tradlang_module=0', '', '', '0,100')); 139 while (count($strings)) { 140 foreach ($strings as $id_tradlang) { 141 $module = sql_getfetsel('module', 'spip_tradlangs', 'id_tradlang = ' . intval($id_tradlang)); 142 $id_tradlang_module = sql_getfetsel('id_tradlang_module', 'spip_tradlang_modules', 'module = ' . sql_quote($module)); 143 sql_updateq('spip_tradlangs', array('id_tradlang_module' => $id_tradlang_module), 'id_tradlang = ' . intval($id_tradlang)); 144 } 145 if ($affiche) { 146 echo ' .'; 147 } 148 $strings = array_map('reset', sql_allfetsel('id_tradlang', 'spip_tradlangs', 'id_tradlang_module=0', '', '', '0,100')); 149 } 150 } 151 152 function tradlang_maj_tradlang_titre($affiche = false) { 153 $strings = array_map('reset', sql_allfetsel('id_tradlang', 'spip_tradlangs', 'titre=""', '', '', '0,500')); 154 while (count($strings)) { 155 foreach ($strings as $id_tradlang) { 156 $tradlang = sql_fetsel('*', 'spip_tradlangs', 'id_tradlang = ' . intval($id_tradlang)); 152 157 $titre = $tradlang['id'].' : '.$tradlang['module'].' - '.$tradlang['lang']; 153 sql_updateq('spip_tradlangs',array('titre' => $titre),'id_tradlang='.intval($id_tradlang)); 154 } 155 if ($affiche) echo " ."; 156 $strings = array_map('reset',sql_allfetsel('id_tradlang','spip_tradlangs',"titre=''",'','',"0,500")); 157 } 158 } 159 160 function tradlang_maj_modules($affiche=false){ 161 $tradlang_verifier_langue_base = charger_fonction('tradlang_verifier_langue_base','inc'); 158 sql_updateq('spip_tradlangs', array('titre' => $titre), 'id_tradlang='.intval($id_tradlang)); 159 } 160 if ($affiche) { 161 echo ' .'; 162 } 163 $strings = array_map('reset', sql_allfetsel('id_tradlang', 'spip_tradlangs', 'titre=""', '', '', '0,500')); 164 } 165 } 166 167 function tradlang_maj_modules($affiche = false) { 168 $tradlang_verifier_langue_base = charger_fonction('tradlang_verifier_langue_base', 'inc'); 162 169 /** 163 170 * On update les modules 164 171 */ 165 $modules = sql_select('*','spip_tradlang_modules','module NOT LIKE "attic%" AND module !='.sql_quote('attic')); 166 167 while($module = sql_fetch($modules)){ 168 spip_log($module['module'],'tradlang'); 169 if ($affiche) echo " ."; 170 $langues = sql_select('lang','spip_tradlangs','id_tradlang_module='.intval($module['id_tradlang_module']).' AND lang!='.sql_quote($module['lang_mere']), array('lang')); 171 while($lang = sql_fetch($langues)){ 172 $modules = sql_select('*', 'spip_tradlang_modules', 'module NOT LIKE "attic%" AND module !=' . sql_quote('attic')); 173 174 while ($module = sql_fetch($modules)) { 175 spip_log($module['module'], 'tradlang'); 176 if ($affiche) { 177 echo ' .'; 178 } 179 $langues = sql_select('lang', 'spip_tradlangs', 'id_tradlang_module = ' . intval($module['id_tradlang_module']).' AND lang!='.sql_quote($module['lang_mere']), array('lang')); 180 while ($lang = sql_fetch($langues)) { 172 181 $modifs = $tradlang_verifier_langue_base($module['module'],$lang['lang']); 173 182 } … … 176 185 177 186 /** 178 * On remet les traducteurs des locutions 179 */ 180 function tradlang_maj_traducteurs($affiche =false){181 $chaines_traducteurs = sql_select('*', 'trad_lang','status = "" AND traducteur != ""');182 while ($traduction = sql_fetch($chaines_traducteurs)){183 sql_updateq('spip_tradlangs', array('traducteur'=>$traduction['traducteur']),'module = '.sql_quote($traduction['module']).' AND id='.sql_quote($traduction['id']).' AND lang='.sql_quote($traduction['lang']));184 } 185 186 $chaines_traducteurs_modif = sql_select('*', 'trad_lang','status = "MODIF" AND traducteur != ""');187 while ($traduction = sql_fetch($chaines_traducteurs_modif)){188 sql_updateq('spip_tradlangs', array('traducteur'=>$traduction['traducteur']),'module = '.sql_quote($traduction['module']).' AND id='.sql_quote($traduction['id']).' AND lang='.sql_quote($traduction['lang']));187 * On remet les traducteurs des locutions 188 */ 189 function tradlang_maj_traducteurs($affiche = false) { 190 $chaines_traducteurs = sql_select('*', 'trad_lang', 'status = "" AND traducteur != ""'); 191 while ($traduction = sql_fetch($chaines_traducteurs)) { 192 sql_updateq('spip_tradlangs', array('traducteur' => $traduction['traducteur']), 'module = '.sql_quote($traduction['module']).' AND id = ' . sql_quote($traduction['id']) . ' AND lang = ' . sql_quote($traduction['lang'])); 193 } 194 195 $chaines_traducteurs_modif = sql_select('*', 'trad_lang', 'status = "MODIF" AND traducteur != ""'); 196 while ($traduction = sql_fetch($chaines_traducteurs_modif)) { 197 sql_updateq('spip_tradlangs', array('traducteur' => $traduction['traducteur']), 'module = '.sql_quote($traduction['module']).' AND id='.sql_quote($traduction['id']).' AND lang='.sql_quote($traduction['lang'])); 189 198 } 190 199 } … … 193 202 * On crée les bilans de chaque langue de chaque module 194 203 */ 195 function tradlang_maj_bilans($affiche =false){196 $modules = sql_select('id_tradlang_module, module,lang_mere','spip_tradlang_modules');197 204 function tradlang_maj_bilans($affiche = false) { 205 $modules = sql_select('id_tradlang_module, module, lang_mere', 'spip_tradlang_modules'); 206 198 207 /** 199 208 * On passe d'abord les modules un par un 200 209 * On récupère $total qui est le total des chaines de la langue mère 201 210 */ 202 while ($module = sql_fetch($modules)){211 while ($module = sql_fetch($modules)) { 203 212 /** 204 213 * Si on n'est pas dans un module type attic 205 214 */ 206 if (substr($module['module'],0,5) != 'attic'){207 $total = sql_countsel('spip_tradlangs', 'module='.sql_quote($module['module']).' AND lang='.sql_quote($module['lang_mere']));208 $langues_base = sql_select('lang', 'spip_tradlangs','module='.sql_quote($module['module']),'lang');215 if (substr($module['module'], 0, 5) != 'attic') { 216 $total = sql_countsel('spip_tradlangs', 'module = ' . sql_quote($module['module']) . ' AND lang = ' . sql_quote($module['lang_mere'])); 217 $langues_base = sql_select('lang', 'spip_tradlangs', 'module = ' . sql_quote($module['module']), 'lang'); 209 218 /** 210 219 * On passe ensuite chaque langue de ce module en revue 211 220 * On insère une entrée pour chaque langue de chaque module 212 221 */ 213 while ($langue = sql_fetch($langues_base)){222 while ($langue = sql_fetch($langues_base)) { 214 223 $lang = $langue['lang']; 215 $chaines_ok = sql_countsel('spip_tradlangs', 'module='.sql_quote($module['module']).' AND lang='.sql_quote($lang).' AND statut="OK"');216 $chaines_relire = sql_countsel('spip_tradlangs', 'module='.sql_quote($module['module']).' AND lang='.sql_quote($lang).' AND statut="RELIRE"');217 $chaines_modif = sql_countsel('spip_tradlangs', 'module='.sql_quote($module['module']).' AND lang='.sql_quote($lang).' AND statut="MODIF"');218 $chaines_new = sql_countsel('spip_tradlangs', 'module='.sql_quote($module['module']).' AND lang='.sql_quote($lang).' AND statut="NEW"');224 $chaines_ok = sql_countsel('spip_tradlangs', 'module=' . sql_quote($module['module']).' AND lang='.sql_quote($lang).' AND statut="OK"'); 225 $chaines_relire = sql_countsel('spip_tradlangs', 'module='.sql_quote($module['module']).' AND lang='.sql_quote($lang).' AND statut="RELIRE"'); 226 $chaines_modif = sql_countsel('spip_tradlangs', 'module='.sql_quote($module['module']).' AND lang='.sql_quote($lang).' AND statut="MODIF"'); 227 $chaines_new = sql_countsel('spip_tradlangs', 'module='.sql_quote($module['module']).' AND lang='.sql_quote($lang).' AND statut="NEW"'); 219 228 $infos_bilan = array( 220 229 'id_tradlang_module' => $module['id_tradlang_module'], … … 227 236 'chaines_new' => $chaines_new 228 237 ); 229 sql_insertq('spip_tradlangs_bilans', $infos_bilan);230 } 231 } 232 } 233 } 234 235 function tradlang_maj_attic($affiche =false){238 sql_insertq('spip_tradlangs_bilans', $infos_bilan); 239 } 240 } 241 } 242 } 243 244 function tradlang_maj_attic($affiche = false) { 236 245 /** 237 246 * Dans un premier temps, on supprimer les attics qui ont un statut NEW, 238 247 * il ne serviront jamaiscar même récupérés, ils ne sont pas traduit 239 248 */ 240 sql_delete('spip_tradlangs','module LIKE "attic%" AND statut="NEW"'); 241 $select_attic_id_module = sql_select('*','spip_tradlangs','module LIKE "attic%"','id_tradlang_module'); 242 while($id_module = sql_fetch($select_attic_id_module)){ 243 $module = sql_getfetsel('module','spip_tradlang_modules','id_tradlang_module='.intval($id_module['id_tradlang_module'])); 244 if($module){ 245 $attics_module = sql_select('id_tradlang,id,module,lang','spip_tradlangs','id_tradlang_module='.intval($id_module['id_tradlang_module']).' AND module LIKE "attic%"'); 246 while($id_tradlang = sql_fetch($attics_module)){ 247 if(!sql_getfetsel('id_tradlang','spip_tradlangs','id='.sql_quote($id_tradlang['id']).' AND module='.sql_quote($id_tradlang['module']).' AND lang='.sql_quote($id_tradlang['lang']))) 248 sql_updateq('spip_tradlangs',array('statut'=>'attic','module'=>$module),'id_tradlang='.intval($id_tradlang['id_tradlang'])); 249 else 250 sql_delete('spip_tradlangs','id_tradlang='.intval($id_tradlang['id_tradlang'])); 251 } 252 } 253 } 254 sql_delete('spip_tradlang_modules','module LIKE "attic%"'); 249 sql_delete('spip_tradlangs', 'module LIKE "attic%" AND statut="NEW"'); 250 $select_attic_id_module = sql_select('*', 'spip_tradlangs', 'module LIKE "attic%"', 'id_tradlang_module'); 251 while ($id_module = sql_fetch($select_attic_id_module)) { 252 $module = sql_getfetsel('module', 'spip_tradlang_modules', 'id_tradlang_module = ' . intval($id_module['id_tradlang_module'])); 253 if ($module) { 254 $attics_module = sql_select('id_tradlang,id,module,lang', 'spip_tradlangs', 'id_tradlang_module = ' . intval($id_module['id_tradlang_module']) . ' AND module LIKE "attic%"'); 255 while ($id_tradlang = sql_fetch($attics_module)) { 256 if (!sql_getfetsel('id_tradlang', 'spip_tradlangs', 'id = ' . sql_quote($id_tradlang['id']).' AND module = ' . sql_quote($id_tradlang['module']).' AND lang = ' . sql_quote($id_tradlang['lang']))) { 257 sql_updateq('spip_tradlangs', array('statut' => 'attic', 'module' => $module), 'id_tradlang = ' . intval($id_tradlang['id_tradlang'])); 258 } else { 259 sql_delete('spip_tradlangs', 'id_tradlang = ' . intval($id_tradlang['id_tradlang'])); 260 } 261 } 262 } 263 } 264 sql_delete('spip_tradlang_modules', 'module LIKE "attic%"'); 255 265 } 256 266 /** … … 265 275 */ 266 276 function tradlang_vider_tables($nom_meta_base_version) { 267 sql_drop_table( "spip_tradlangs");268 sql_drop_table( "spip_tradlang_modules");269 sql_drop_table( "spip_tradlangs_bilans");270 sql_delete('spip_versions', 'objet='.sql_quote('tradlang'));271 sql_delete('spip_versions_fragments', 'objet='.sql_quote('tradlang'));277 sql_drop_table('spip_tradlangs'); 278 sql_drop_table('spip_tradlang_modules'); 279 sql_drop_table('spip_tradlangs_bilans'); 280 sql_delete('spip_versions', 'objet = ' . sql_quote('tradlang')); 281 sql_delete('spip_versions_fragments', 'objet = ' . sql_quote('tradlang')); 272 282 effacer_meta($nom_meta_base_version); 273 283 } 274 ?> -
_plugins_/trad-lang/trunk/tradlang_autoriser.php
r93933 r97004 4 4 * Plugin SPIP de traduction de fichiers de langue 5 5 * © Florent Jugla, Fil, kent1 6 * 6 * 7 7 * Fichier des autorisations spécifiques du plugin 8 * 8 * 9 9 * @package SPIP\Tradlang\Autorisations 10 10 */ … … 20 20 * @return 21 21 */ 22 function tradlang_autoriser(){} 22 function tradlang_autoriser() { 23 } 23 24 24 25 /** 25 26 * Renvoie la liste des auteurs ou des statuts autorises pour une action donnee 26 * 27 * @param string $action 27 * 28 * @param string $action 28 29 * L'action que l'on souhaite faire 29 30 * @param boolean $utiliser_defaut [optional] 30 31 * @return array, boolean 31 */ 32 function definir_autorisations_tradlang($action, $utiliser_defaut=true){32 */ 33 function definir_autorisations_tradlang($action, $utiliser_defaut = true) { 33 34 $aut = null; 34 35 35 switch (strtolower($action)){36 switch (strtolower($action)) { 36 37 case 'configurer': 37 38 $define = (defined('_TRADLANG_AUTORISATION_CONFIGURER')) ? _TRADLANG_AUTORISATION_CONFIGURER : false; … … 45 46 } 46 47 47 if ($define){48 if ($define) { 48 49 $liste = explode(':', $define); 49 if (in_array('webmestre', $liste)) 50 if (in_array('webmestre', $liste)) { 50 51 $aut['auteur'] = explode(':', _ID_WEBMESTRES); 51 else if (in_array('0minirezo', $liste))52 } elseif (in_array('0minirezo', $liste)) { 52 53 $aut['statut'] = array('0minirezo'); 53 else if (in_array('1comite', $liste))54 } elseif (in_array('1comite', $liste)) { 54 55 $aut['statut'] = array('0minirezo', '1comite'); 55 else56 } else { 56 57 $aut['auteur'] = $liste; 58 } 57 59 return $aut; 58 60 } 59 61 60 62 return false; 61 63 } … … 63 65 /** 64 66 * Autorisation de configurer et d'administrer trad-lang 65 * Permet de : 67 * Permet de : 66 68 * - importer un nouveau module de langue 67 69 * - créer une nouvelle version dans une langue 68 70 * - synchroniser les fichiers de langue avec la base 69 71 * - traduire des locutions 70 * 72 * 71 73 * @param string $faire 72 74 * @param string $type … … 76 78 * @return boolean 77 79 */ 78 function autoriser_tradlang_configurer_dist($faire, $type, $id, $qui, $opt) {80 function autoriser_tradlang_configurer_dist($faire, $type, $id, $qui, $opt) { 79 81 $autorise = false; 80 82 $utiliser_defaut = true; 81 83 82 if(!function_exists('lire_config')) 83 include_spip('inc/config'); 84 if (!function_exists('lire_config')) { 85 include_spip('inc/config'); 86 } 84 87 85 88 $type = lire_config('tradlang/autorisations/configurer_type'); 86 if ($type){87 switch ($type) {89 if ($type) { 90 switch ($type) { 88 91 case 'webmestre': 89 92 // Webmestres uniquement … … 92 95 case 'par_statut': 93 96 // Traitement spécifique pour la valeur 'tous' 94 if (in_array('tous',lire_config('tradlang/autorisations/configurer_statuts',array('0minirezo'))))97 if (in_array('tous', lire_config('tradlang/autorisations/configurer_statuts', array('0minirezo')))) { 95 98 return true; 99 } 96 100 // Autorisation par statut 97 $autorise = in_array($qui['statut'], lire_config('tradlang/autorisations/configurer_statuts', array()));101 $autorise = in_array($qui['statut'], lire_config('tradlang/autorisations/configurer_statuts', array())); 98 102 break; 99 103 case 'par_auteur': 100 104 // Autorisation par id d'auteurs 101 $autorise = in_array($qui['id_auteur'], lire_config('tradlang/autorisations/configurer_auteurs', array()));102 break; 103 } 104 if ($autorise == true)105 $autorise = in_array($qui['id_auteur'], lire_config('tradlang/autorisations/configurer_auteurs', array())); 106 break; 107 } 108 if ($autorise == true) { 105 109 return $autorise; 110 } 106 111 $utiliser_defaut = false; 107 112 } … … 110 115 * Si pas de CFG ou pas autorise dans le cfg => on teste les define 111 116 */ 112 $liste = definir_autorisations_tradlang('configurer', $utiliser_defaut);113 if ($liste){114 if ($liste['statut']) 117 $liste = definir_autorisations_tradlang('configurer', $utiliser_defaut); 118 if ($liste) { 119 if ($liste['statut']) { 115 120 $autorise = in_array($qui['statut'], $liste['statut']); 116 else if ($liste['auteur'])121 } elseif ($liste['auteur']) { 117 122 $autorise = in_array($qui['id_auteur'], $liste['auteur']); 123 } 118 124 return $autorise; 119 } 120 /** 121 * Si vraiment on n'a rien, on utilise une fonction par défaut 122 */ 123 else 125 } else { 126 /** 127 * Si vraiment on n'a rien, on utilise une fonction par défaut 128 */ 124 129 return autoriser('configurer', 'lang'); 130 } 125 131 } 126 132 127 133 /** 128 134 * Autorisation de modification des locution dans tradlang 129 * 135 * 130 136 * @param string $faire 131 137 * @param string $type … … 134 140 * @param array $opt 135 141 * @return boolean 136 */ 137 function autoriser_tradlang_modifier_dist($faire, $type, $id, $qui, $opt) {142 */ 143 function autoriser_tradlang_modifier_dist($faire, $type, $id, $qui, $opt) { 138 144 $autorise = false; 139 145 $utiliser_defaut = true; 140 146 141 if ($qui['webmestre'] == 'oui')147 if ($qui['webmestre'] == 'oui') { 142 148 return true; 149 } 143 150 /** 144 151 * Retourner false si c'est une chaîne de la langue mère 145 152 */ 146 if (intval($id) > 0){147 $infos_chaine = sql_fetsel('lang,module', 'spip_tradlangs','id_tradlang='.intval($id));148 $lang_mere = sql_getfetsel('lang_mere', 'spip_tradlang_modules','module='.sql_quote($infos_chaine['module']));149 if ($infos_chaine['lang'] == $lang_mere)153 if (intval($id) > 0) { 154 $infos_chaine = sql_fetsel('lang,module', 'spip_tradlangs', 'id_tradlang = ' . intval($id)); 155 $lang_mere = sql_getfetsel('lang_mere', 'spip_tradlang_modules', 'module = ' . sql_quote($infos_chaine['module'])); 156 if ($infos_chaine['lang'] == $lang_mere) { 150 157 return false; 151 } 152 158 } 159 } 160 153 161 /** 154 162 * Si on est autoriser à configurer tradlang, on est autorisé à modifier la chaîne 155 163 */ 156 if (autoriser_tradlang_configurer_dist($faire, $type, $id, $qui, $opt))164 if (autoriser_tradlang_configurer_dist($faire, $type, $id, $qui, $opt)) { 157 165 return autoriser_tradlang_configurer_dist($faire, $type, $id, $qui, $opt); 158 159 if(!function_exists('lire_config')) 166 } 167 168 if (!function_exists('lire_config')) { 160 169 include_spip('inc/config'); 170 } 161 171 162 172 $type = lire_config('tradlang/modifier_type'); 163 if ($type){164 switch ($type) {173 if ($type) { 174 switch ($type) { 165 175 case 'webmestre': 166 176 // Webmestres uniquement … … 169 179 case 'par_statut': 170 180 // Traitement spécifique pour la valeur 'tous' 171 if (in_array('tous',lire_config('tradlang/modifier_statuts',array())))181 if (in_array('tous', lire_config('tradlang/modifier_statuts', array()))) { 172 182 return true; 183 } 173 184 // Autorisation par statut 174 $autorise = in_array($qui['statut'], lire_config('tradlang/modifier_statuts', array('0minirezo')));185 $autorise = in_array($qui['statut'], lire_config('tradlang/modifier_statuts', array('0minirezo'))); 175 186 break; 176 187 case 'par_auteur': 177 188 // Autorisation par id d'auteurs 178 $autorise = in_array($qui['id_auteur'], lire_config('tradlang/modifier_auteurs', array()));179 break; 180 } 181 if ($autorise == true)189 $autorise = in_array($qui['id_auteur'], lire_config('tradlang/modifier_auteurs', array())); 190 break; 191 } 192 if ($autorise == true) { 182 193 return $autorise; 183 194 } 195 184 196 $utiliser_defaut = false; 185 197 } 186 198 187 199 // Si $utiliser_defaut = true, on utilisera les valeurs par défaut 188 200 // Sinon on ajoute la possibilité de régler par define 189 $liste = definir_autorisations_tradlang('modifier', $utiliser_defaut);190 if ($liste['statut']) 201 $liste = definir_autorisations_tradlang('modifier', $utiliser_defaut); 202 if ($liste['statut']) { 191 203 $autorise = in_array($qui['statut'], $liste['statut']); 192 else if ($liste['auteur'])204 } elseif ($liste['auteur']) { 193 205 $autorise = in_array($qui['id_auteur'], $liste['auteur']); 206 } 194 207 return $autorise; 195 208 } … … 198 211 * Autorisation de modification des modules dans tradlang 199 212 * Utilisée aussi par le crayon d'édition multiple 200 * 213 * 201 214 * @param string $faire 202 215 * @param string $type … … 205 218 * @param array $opt 206 219 * @return boolean 207 */ 208 function autoriser_tradlangmodule_modifier_dist($faire, $type, $id, $qui, $opt) {220 */ 221 function autoriser_tradlangmodule_modifier_dist($faire, $type, $id, $qui, $opt) { 209 222 $autorise = false; 210 223 $utiliser_defaut = true; 211 224 212 225 /** 213 226 * Si on est autoriser à configurer tradlang, on est autorisé à modifier la chaîne 214 227 */ 215 if (autoriser_tradlang_configurer_dist($faire, $type, $id, $qui, $opt))228 if (autoriser_tradlang_configurer_dist($faire, $type, $id, $qui, $opt)) { 216 229 return autoriser_tradlang_configurer_dist($faire, $type, $id, $qui, $opt); 217 218 if(!function_exists('lire_config')) 230 } 231 232 if (!function_exists('lire_config')) { 219 233 include_spip('inc/config'); 220 234 } 235 221 236 $type = lire_config('tradlang/modifier_type'); 222 if ($type){223 switch ($type) {237 if ($type) { 238 switch ($type) { 224 239 case 'webmestre': 225 240 // Webmestres uniquement … … 228 243 case 'par_statut': 229 244 // Traitement spécifique pour la valeur 'tous' 230 if (in_array('tous',lire_config('tradlang/modifier_statuts',array())))245 if (in_array('tous', lire_config('tradlang/modifier_statuts', array()))) { 231 246 return true; 247 } 232 248 // Autorisation par statut 233 $autorise = in_array($qui['statut'], lire_config('tradlang/modifier_statuts', array('0minirezo')));249 $autorise = in_array($qui['statut'], lire_config('tradlang/modifier_statuts', array('0minirezo'))); 234 250 break; 235 251 case 'par_auteur': 236 252 // Autorisation par id d'auteurs 237 $autorise = in_array($qui['id_auteur'], lire_config('tradlang/modifier_auteurs', array()));238 break; 239 } 240 if ($autorise == true)253 $autorise = in_array($qui['id_auteur'], lire_config('tradlang/modifier_auteurs', array())); 254 break; 255 } 256 if ($autorise == true) { 241 257 return $autorise; 242 258 } 259 243 260 $utiliser_defaut = false; 244 261 } 245 262 246 263 // Si $utiliser_defaut = true, on utilisera les valeurs par défaut 247 264 // Sinon on ajoute la possibilité de régler par define 248 $liste = definir_autorisations_tradlang('modifier', $utiliser_defaut);249 if ($liste['statut']) 265 $liste = definir_autorisations_tradlang('modifier', $utiliser_defaut); 266 if ($liste['statut']) { 250 267 $autorise = in_array($qui['statut'], $liste['statut']); 251 else if ($liste['auteur'])268 } elseif ($liste['auteur']) { 252 269 $autorise = in_array($qui['id_auteur'], $liste['auteur']); 270 } 253 271 return $autorise; 254 272 } … … 256 274 /** 257 275 * Autorisation de voir l'interface de tradlang 258 * 276 * 259 277 * @param string $faire 260 278 * @param string $type … … 264 282 * @return boolean 265 283 */ 266 function autoriser_tradlang_voir_dist($faire, $type, $id, $qui, $opt) {284 function autoriser_tradlang_voir_dist($faire, $type, $id, $qui, $opt) { 267 285 $autorise = false; 268 286 $utiliser_defaut = true; 269 287 270 if (autoriser_tradlang_modifier_dist($faire, $type, $id, $qui, $opt))288 if (autoriser_tradlang_modifier_dist($faire, $type, $id, $qui, $opt)) { 271 289 return autoriser_tradlang_modifier_dist($faire, $type, $id, $qui, $opt); 272 273 if(!function_exists('lire_config')) 290 } 291 292 if (!function_exists('lire_config')) { 274 293 include_spip('inc/config'); 294 } 275 295 276 296 $type = lire_config('tradlang/voir_type'); 277 if ($type){278 switch ($type) {297 if ($type) { 298 switch ($type) { 279 299 case 'webmestre': 280 300 // Webmestres uniquement … … 283 303 case 'par_statut': 284 304 // Traitement spécifique pour la valeur 'tous' 285 if (in_array('tous',lire_config('tradlang/voir_statuts',array())))305 if (in_array('tous', lire_config('tradlang/voir_statuts', array()))) { 286 306 return true; 307 } 287 308 // Autorisation par statut 288 $autorise = in_array($qui['statut'], lire_config('tradlang/voir_statuts', array('0minirezo','1comite')));309 $autorise = in_array($qui['statut'], lire_config('tradlang/voir_statuts', array('0minirezo', '1comite'))); 289 310 break; 290 311 case 'par_auteur': 291 312 // Autorisation par id d'auteurs 292 $autorise = in_array($qui['id_auteur'], lire_config('tradlang/voir_auteurs', array()));293 break; 294 } 295 if ($autorise == true)313 $autorise = in_array($qui['id_auteur'], lire_config('tradlang/voir_auteurs', array())); 314 break; 315 } 316 if ($autorise == true) { 296 317 return $autorise; 297 318 } 319 298 320 $utiliser_defaut = false; 299 321 } 300 322 301 323 /** 302 324 * Si pas de CFG ou pas autorise dans le cfg => on teste les define 303 325 */ 304 $liste = definir_autorisations_tradlang('voir', $utiliser_defaut);305 if ($liste){306 if ($liste['statut']) 326 $liste = definir_autorisations_tradlang('voir', $utiliser_defaut); 327 if ($liste) { 328 if ($liste['statut']) { 307 329 $autorise = in_array($qui['statut'], $liste['statut']); 308 else if ($liste['auteur'])330 } elseif ($liste['auteur']) { 309 331 $autorise = in_array($qui['id_auteur'], $liste['auteur']); 310 } 311 /** 312 * Si vraiment on n'a rien, on utilise une fonction par défaut 313 */ 314 else 315 return autoriser('voir','lang'); 332 } 333 return $autorise; 334 } else { 335 /** 336 * Si vraiment on n'a rien, on utilise une fonction par défaut 337 */ 338 return autoriser('voir', 'lang'); 339 } 316 340 } 317 341 … … 319 343 * Autorisation à créer un module de langue 320 344 * Renvoit false, pour l'instant on force l'usage de salvatore 321 * 345 * 322 346 * @param string $faire 323 347 * @param string $type … … 327 351 * @return boolean false 328 352 */ 329 function autoriser_tradlangmodule_creer_dist($faire, $type, $id, $qui, $opt) {353 function autoriser_tradlangmodule_creer_dist($faire, $type, $id, $qui, $opt) { 330 354 return false; 331 355 } … … 334 358 * Autorisation à créer une chaine de langue 335 359 * Renvoit false, pour l'instant on force l'usage de salvatore 336 * 360 * 337 361 * @param string $faire 338 362 * @param string $type … … 342 366 * @return boolean false 343 367 */ 344 function autoriser_tradlang_creer_dist($faire, $type, $id, $qui, $opt) {368 function autoriser_tradlang_creer_dist($faire, $type, $id, $qui, $opt) { 345 369 return false; 346 370 } 347 ?> -
_plugins_/trad-lang/trunk/tradlang_fonctions.php
r93933 r97004 1 1 <?php 2 2 /** 3 * 3 * 4 4 * Trad-lang v2 5 5 * Plugin SPIP de traduction de fichiers de langue 6 6 * © Florent Jugla, Fil, kent1 7 * 7 * 8 8 * Fichier des fonctions spécifiques du plugin 9 * 9 * 10 10 * @package SPIP\Tradlang\Fonctions 11 11 */ 12 12 13 13 if (!defined('_ECRIRE_INC_VERSION')) { 14 14 return; … … 17 17 /** 18 18 * Retourne les modules disponibles en base sous la forme d'un array complet 19 * 19 * 20 20 * @return array $ret 21 21 * Un array complet des modules en base 22 22 */ 23 function tradlang_getmodules_base() {23 function tradlang_getmodules_base() { 24 24 $ret = array(); 25 25 … … 27 27 * Sélection de tous les modules de langue 28 28 */ 29 $res = sql_allfetsel( "module,id_tradlang_module","spip_tradlang_modules");30 if (is_array($res)) {31 foreach ($res as $row){32 $module = $row[ "module"];29 $res = sql_allfetsel('module, id_tradlang_module', 'spip_tradlang_modules'); 30 if (is_array($res)) { 31 foreach ($res as $row) { 32 $module = $row['module']; 33 33 $ret[$module] = $row; 34 34 35 35 /** 36 * Récupération des différentes langues et calcul du nom des 36 * Récupération des différentes langues et calcul du nom des 37 37 * fichiers de langue 38 38 */ 39 $res2 = sql_allfetsel( "DISTINCT lang","spip_tradlangs","id_tradlang_module=".intval($row['id_tradlang_module']));40 foreach ($res2 as $row2){41 $lg = $row2[ "lang"];42 $ret[$module][ "langue_".$lg] = $row["lang_prefix"]."_".$lg.".php";39 $res2 = sql_allfetsel('DISTINCT lang', 'spip_tradlangs', 'id_tradlang_module=' . intval($row['id_tradlang_module'])); 40 foreach ($res2 as $row2) { 41 $lg = $row2['lang']; 42 $ret[$module]['langue_' . $lg] = $row['lang_prefix'].'_'.$lg.'.php'; 43 43 } 44 44 } … … 50 50 * Teste la synchro du fichier de la base avec le fichier de langue en se basant 51 51 * sur une ligne ajoutée lors de l'import si possible 52 * 53 * @param array $id_tradlang_module 52 * 53 * @param array $id_tradlang_module 54 54 * L'identifiant numérique du module 55 * @param string $lang 55 * @param string $lang 56 56 * Le code de langue à vérifier 57 * @return 58 */ 59 function tradlang_testesynchro($id_tradlang_module, $lang) {57 * @return 58 */ 59 function tradlang_testesynchro($id_tradlang_module, $lang) { 60 60 $dir_lang = tradlang_dir_lang(); 61 61 62 $module = sql_getfetsel('module', 'spip_tradlang_modules','id_tradlang_module='.intval($id_tradlang_module));62 $module = sql_getfetsel('module', 'spip_tradlang_modules', 'id_tradlang_module=' . intval($id_tradlang_module)); 63 63 64 64 $modules = tradlang_getmodules_base(); 65 65 $modok = $modules[$module]; 66 66 67 $getmodules_fics = charger_fonction('tradlang_getmodules_fics', 'inc');67 $getmodules_fics = charger_fonction('tradlang_getmodules_fics', 'inc'); 68 68 $modules2 = $getmodules_fics($dir_lang,$module); 69 69 $modok2 = $modules2[$module]; 70 70 71 71 // union entre modok et modok2 72 if (is_array($modok2)){73 foreach ($modok2 as $cle=>$item){74 if (strncmp($cle, "langue_", 7) == 0){75 $sel = "";76 $lang = substr($cle, 7);77 if (!array_key_exists($lang, $modok)) {78 $module_final[ "langue_".$lang] = $item;72 if (is_array($modok2)) { 73 foreach ($modok2 as $cle => $item) { 74 if (strncmp($cle, 'langue_', 7) == 0) { 75 $sel = ''; 76 $lang = substr($cle, 7); 77 if (!array_key_exists($lang, $modok)) { 78 $module_final['langue_' . $lang] = $item; 79 79 } 80 80 } … … 82 82 } 83 83 // Le fichier n'existe pas 84 if (!$module_final["langue_".$lang]){84 if (!$module_final['langue_' . $lang]) { 85 85 return false; 86 86 } 87 87 88 88 // lit le timestamp fichier 89 $fic = $dir_lang ."/".$module_final["langue_".$lang];89 $fic = $dir_lang . '/' . $module_final['langue_' . $lang]; 90 90 include($fic); 91 91 $chs = $GLOBALS[$GLOBALS['idx_lang']]; 92 $tsf = $chs[ "zz_timestamp_nepastraduire"];92 $tsf = $chs['zz_timestamp_nepastraduire']; 93 93 unset($GLOBALS[$GLOBALS['idx_lang']]); 94 94 95 95 96 96 // lit le timestamp base 97 $tsb = sql_getfetsel( "maj","spip_tradlangs","module =".sql_quote($module)." AND lang=".sql_quote($lang),"","maj DESC","0,1");97 $tsb = sql_getfetsel('maj', 'spip_tradlangs', 'module = ' . sql_quote($module) . ' AND lang=' . sql_quote($lang), '', 'maj DESC', '0,1'); 98 98 99 99 return ($tsb == $tsf); 100 100 } 101 101 102 function tradlang_dir_lang() {102 function tradlang_dir_lang() { 103 103 global $dossier_squelettes; 104 if (!$dossier_squelettes && !is_dir(_DIR_RACINE.'squelettes'))104 if (!$dossier_squelettes and !is_dir(_DIR_RACINE.'squelettes')) { 105 105 return false; 106 else106 } else { 107 107 $squelettes = $dossier_squelettes ? $dossier_squelettes : 'squelettes'; 108 109 if(!is_dir($dir_lang=_DIR_RACINE.$squelettes.'/lang')) 108 } 109 110 if (!is_dir($dir_lang = _DIR_RACINE.$squelettes.'/lang')) { 110 111 return false; 112 } 111 113 112 114 return $dir_lang; … … 115 117 /** 116 118 * Filtre spip pour utiliser arsort sur un array 117 * 119 * 118 120 * @param array $array 119 121 */ 120 function langues_sort($array, $defaut=null){121 if (is_array($array)){122 function langues_sort($array, $defaut = null) { 123 if (is_array($array)) { 122 124 arsort($array); 123 if (isset($defaut)){125 if (isset($defaut)) { 124 126 $langue_defaut = array($defaut => $array[$defaut]); 125 127 unset($array[$defaut]); 126 $array = array_merge($langue_defaut, $array);128 $array = array_merge($langue_defaut, $array); 127 129 } 128 130 return $array; … … 136 138 function boucle_TRADLANG_MODULES_dist($id_boucle, &$boucles) { 137 139 $boucle = &$boucles[$id_boucle]; 138 140 139 141 /** 140 142 * Par défaut on tri par priorité et nom_mod 141 143 */ 142 if (!isset($boucle->modificateur['par']) 143 &&!isset($boucle->modificateur['tri'])) {144 if (!isset($boucle->modificateur['par']) 145 and !isset($boucle->modificateur['tri'])) { 144 146 $id_table = $boucle->id_table; 145 147 $boucle->order[] = "'$id_table." ."priorite'"; … … 154 156 function boucle_TRADLANGS_dist($id_boucle, &$boucles) { 155 157 $boucle = &$boucles[$id_boucle]; 156 if (isset($boucle->nom) && ($boucle->nom == 'calculer_langues_utilisees') && $boucle->id_boucle == 'tradlang'){158 if (isset($boucle->nom) and ($boucle->nom == 'calculer_langues_utilisees') and $boucle->id_boucle == 'tradlang') { 157 159 $id_table = $boucle->id_table; 158 160 array_unshift($boucle->where,array("'='", "'$id_table." ."id_tradlang'", "'0'")); … … 163 165 /** 164 166 * Le critère des langues préférées {langues_preferees}... 165 * 166 * {langues_preferees} : Sur une table avec le champ lang retourne uniquement les résultats dans les 167 * 168 * {langues_preferees} : Sur une table avec le champ lang retourne uniquement les résultats dans les 167 169 * langues préférées des utilisateurs, si aucune langue préférée, ne retourne rien 168 * {!langues_preferees} : Sur une table avec le champ lang retourne uniquement les résultats dans les 170 * {!langues_preferees} : Sur une table avec le champ lang retourne uniquement les résultats dans les 169 171 * langues non préférées des utilisateurs, si aucune langue préférée, renverra tout 170 * 171 * Le critère est sessionné ... Le résultat des boucles l'utilisant est donc modifié en fonction de la session utilisateur 172 */ 173 function critere_langues_preferees_dist($idb,&$boucles,$crit){ 172 * 173 * Le critère est sessionné ... 174 * Le résultat des boucles l'utilisant est donc modifié en fonction de la session utilisateur 175 */ 176 function critere_langues_preferees_dist($idb, &$boucles, $crit) { 174 177 $boucle = &$boucles[$idb]; 175 178 $id_table = $boucle->id_table; 176 179 $not = ($crit->not ? '' : 'NOT'); 177 180 $primary = 'lang'; 178 $c = "sql_in('" .$id_table.'.'.$primary."', prepare_langues_preferees()".($not=='NOT' ? "" : ",'NOT'").")";181 $c = "sql_in('" . $id_table . '.' . $primary."', prepare_langues_preferees()".($not=='NOT' ? "" : ",'NOT'") . ")"; 179 182 $boucle->where[] = $c; 180 183 /** … … 186 189 /** 187 190 * Fonction de préparation de la sélection des langues préférées 188 * 191 * 189 192 * Les langues préférées d'un utilisateur sont stockées dans un array serialisé dans la table 190 193 * spip_auteurs (c'est le champ "langues_preferees") 191 * 194 * 192 195 * Si un auteur est identifié, on regarde en base si langue_preferees est rempli sinon on retourne toutes les 193 196 * langues de la liste de ecrire/inc/lang_liste.php 194 * 195 * @param return array 197 * 198 * @param return array 196 199 * L'array des langues préférées ou toutes les langues possibles 197 200 */ 198 201 function prepare_langues_preferees() { 199 202 include_spip('inc/lang_liste'); 200 if (isset($GLOBALS['visiteur_session']['id_auteur']) && $GLOBALS['visiteur_session']['id_auteur'] >= 1){201 $langues_preferees = sql_getfetsel('langues_preferees', 'spip_auteurs','id_auteur='.intval($GLOBALS['visiteur_session']['id_auteur']));202 if ($langues_preferees && count(unserialize($langues_preferees)) > 0)203 if (isset($GLOBALS['visiteur_session']['id_auteur']) and $GLOBALS['visiteur_session']['id_auteur'] >= 1) { 204 $langues_preferees = sql_getfetsel('langues_preferees', 'spip_auteurs', 'id_auteur='.intval($GLOBALS['visiteur_session']['id_auteur'])); 205 if ($langues_preferees and count(unserialize($langues_preferees)) > 0) { 203 206 $langues_array = unserialize($langues_preferees); 204 else207 } else { 205 208 $langues_array = array_keys($GLOBALS['codes_langues']); 206 }else 209 } 210 } else { 207 211 $langues_array = array_keys($GLOBALS['codes_langues']); 212 } 208 213 return $langues_array; 209 214 } 210 215 211 216 /** 212 * Critère sélectionnant les langues complêtement traduites d'un module 217 * Critère sélectionnant les langues complêtement traduites d'un module 213 218 * soit dans l'environnement soit passé en paramètre 214 * 219 * 215 220 * Ce critère doit être utiliser dans une boucle (TRADLANGS) 216 * 217 * Utilisations : 221 * 222 * Utilisations : 218 223 * {langue_complete} ou {langue_complete #ID_TRADLANG_MODULE} 219 224 */ 220 function critere_langue_complete_dist($id_boucle, &$boucles, $crit) {225 function critere_langue_complete_dist($id_boucle, &$boucles, $crit) { 221 226 $boucle = &$boucles[$id_boucle]; 222 227 $id_table = $boucle->id_table; 223 if ($id_table == 'tradlangs'){224 if (isset($crit->param[0][0]))228 if ($id_table == 'tradlangs') { 229 if (isset($crit->param[0][0])) { 225 230 $id_module = calculer_liste(array($crit->param[0][0]), array(), $boucles, $boucles[$id_boucle]->id_parent); 226 else231 } else { 227 232 $id_module = calculer_argument_precedent($id_boucle, 'id_tradlang_module', $boucles); 228 233 } 234 229 235 $boucle->hash .= ' 230 236 $prepare_module = charger_fonction(\'prepare_module_langue_complete\', \'inc\'); … … 232 238 '; 233 239 234 array_unshift($boucle->where, array("'='", "'$id_table." ."statut'", "'\"OK\"'"));240 array_unshift($boucle->where, array("'='", "'$id_table." ."statut'", "'\"OK\"'")); 235 241 $boucles[$id_boucle]->group[] = "$id_table.lang"; 236 242 $boucles[$id_boucle]->having[] = "\n\t\t".'$module_having'; 237 } else243 } else { 238 244 return (array('zbug_critere_inconnu', array('table' => $crit->op.' ?'))); 239 } 245 } 246 } 240 247 241 248 /** 242 249 * Fonction de préparation du critère {langue_complete} 243 * 250 * 244 251 * @param int $id_module 245 252 * L'identifiant numérique du module … … 248 255 * La clause having à utiliser par le critère 249 256 */ 250 function inc_prepare_module_langue_complete_dist($id_module, $serveur='') {257 function inc_prepare_module_langue_complete_dist($id_module, $serveur = '') { 251 258 /** 252 259 * On récupère la langue mère du module 253 260 */ 254 $langue_mere = sql_getfetsel('lang_mere','spip_tradlang_modules','id_tradlang_module='.intval($id_module)); 255 /** 256 * On compte le nombre d'éléments de la langue mère ce qui correspond au nombre total d'éléments à traduire pour un module 257 */ 258 $count = sql_countsel('spip_tradlangs','id_tradlang_module='.$id_module.' AND statut="OK" AND lang='.sql_quote($langue_mere)); 261 $langue_mere = sql_getfetsel('lang_mere', 'spip_tradlang_modules', 'id_tradlang_module='.intval($id_module)); 262 /** 263 * On compte le nombre d'éléments de la langue mère ce qui correspond au nombre total d'éléments 264 * à traduire pour un module 265 */ 266 $count = sql_countsel('spip_tradlangs', 'id_tradlang_module=' . $id_module.' AND statut="OK" AND lang='.sql_quote($langue_mere)); 259 267 /** 260 268 * On crée ainsi la clause $having qui sera utilisée dans la boucle … … 266 274 /** 267 275 * Convertie une chaîne de caractère en UTF-8 268 * 276 * 269 277 * @param string $str 270 278 * La chaîne à convertir … … 272 280 * La chaîne convertie en UTF-8 273 281 */ 274 function tradlang_utf8($str){ 275 $str = unicode_to_utf_8( 276 html_entity_decode( 277 preg_replace('/&([lg]t;)/S', '&\1', $str), 278 ENT_NOQUOTES, 'utf-8') 279 ); 282 function tradlang_utf8($str) { 283 $str = unicode_to_utf_8(html_entity_decode(preg_replace('/&([lg]t;)/S', '&\1', $str), ENT_NOQUOTES, 'utf-8')); 280 284 return $str; 281 285 } … … 283 287 /** 284 288 * Fonction qui vérifie que le code de langue spécifié en paramètre est utilisable 285 * 289 * 286 290 * Les codes de langue acceptés sont ceux du fichier ecrire/inc/lang.php (s'il n'est pas surchargé) 287 * 291 * 288 292 * @param string $lang 289 293 * Le code de lang à tester … … 291 295 * true si ok, false sinon 292 296 */ 293 function langue_possible($lang) {297 function langue_possible($lang) { 294 298 include_spip('inc/lang'); 295 299 $langues = $GLOBALS['codes_langues']; 296 if (key_exists($lang,$langues))300 if (key_exists($lang, $langues)) { 297 301 return true; 302 } 298 303 299 304 return false; 300 305 } 301 ?> -
_plugins_/trad-lang/trunk/tradlang_options.php
r93933 r97004 4 4 * Plugin SPIP de traduction de fichiers de langue 5 5 * © Florent Jugla, Fil, kent1 6 * 6 * 7 7 * Fichier des options spécifiques du plugin 8 * 8 * 9 9 * @package SPIP\Tradlang\Options 10 10 */ … … 22 22 * surchargeable dans un fichier config/mes_options.php 23 23 */ 24 if(!defined('_TRAD_PRIORITES')) 25 define('_TRAD_PRIORITES','10. core;20. extensions;25. community sites;30. contribs'); 24 if (!defined('_TRAD_PRIORITES')) { 25 define('_TRAD_PRIORITES', '10. core;20. extensions;25. community sites;30. contribs'); 26 } 26 27 27 28 /** … … 29 30 * surchargeable dans un fichier config/mes_options.php 30 31 */ 31 if(!defined('_TRAD_PRIORITE_DEFAUT')) 32 define('_TRAD_PRIORITE_DEFAUT','30. contribs'); 32 if (!defined('_TRAD_PRIORITE_DEFAUT')) { 33 define('_TRAD_PRIORITE_DEFAUT', '30. contribs'); 34 } 33 35 34 function str_statut_revision($id_tradlang, $c=false){36 function str_statut_revision($id_tradlang, $c = false) { 35 37 include_spip('action/editer_tradlang'); 36 return tradlang_set($id_tradlang, $c);38 return tradlang_set($id_tradlang, $c); 37 39 } 38 ?> -
_plugins_/trad-lang/trunk/tradlang_pipelines.php
r93933 r97004 4 4 * Plugin SPIP de traduction de fichiers de langue 5 5 * © Florent Jugla, Fil, kent1 6 * 6 * 7 7 * Fichier des pipelines utilisés par le plugin 8 * 8 * 9 9 * @package SPIP\Tradlang\Pipelines 10 10 */ … … 16 16 /** 17 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 18 * 19 * On ajoute une tache cron toutes les 4 minutes afin de créer les premières révisions des 20 20 * tradlang pour éviter de perdre du temps par la suite. 21 21 * Une autre tâche CRON "maintenance" toutes les 24h pour diverses opérations. 22 * 22 * 23 23 * @param array $taches_generales 24 24 * Le tableau des taches à réaliser … … 33 33 /** 34 34 * Insertion dans le pipeline pre_edition (SPIP) 35 * 35 * 36 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 37 * Si quelque chose est sélectionné, on le serialize pour le mettre en base, sinon on serialize un array 38 38 * pour toujours avoir quelquechose 39 * 39 * 40 40 * @param array $flux 41 41 * Le contexte du pipeline … … 43 43 * Le contexte du pipeline auquel on a ajouté ce que l'on souhaite 44 44 */ 45 function tradlang_pre_edition($flux) {45 function tradlang_pre_edition($flux) { 46 46 if ($flux['args']['table'] == 'spip_auteurs') { 47 if (is_array($langues_preferees = _request('langues_preferees'))) 47 if (is_array($langues_preferees = _request('langues_preferees'))) { 48 48 $flux['data']['langues_preferees'] = serialize($langues_preferees); 49 else49 } else { 50 50 $flux['data']['langues_preferees'] = serialize(array()); 51 } 51 52 } 52 53 return $flux; … … 55 56 /** 56 57 * Insertion dans le pipeline post_edition (SPIP) 57 * 58 * 58 59 * Si configuré comme tel on regénère les fichiers à chaque modification de chaine de langue 59 60 * On n'agit que sur les conditions suivantes : … … 61 62 * -* on a activé la sauvegarde locale 62 63 * -* on a activé la sauvegarde locale au moment de la post-edition 63 * 64 * 64 65 * @param array $flux 65 66 * Le contexte du pipeline … … 67 68 * Le contexte du pipeline qui n'est jamais modifié 68 69 */ 69 function tradlang_post_edition($flux) {70 if ($flux['args']['table'] == "spip_tradlangs"){70 function tradlang_post_edition($flux) { 71 if ($flux['args']['table'] == 'spip_tradlangs') { 71 72 include_spip('inc/config'); 72 73 $config = lire_config('tradlang'); 73 if (!is_array($config)) 74 if (!is_array($config)) { 74 75 return $flux; 75 if(($config['sauvegarde_locale'] == 'on') && ($config['sauvegarde_post_edition'] == 'on')){76 } elseif (($config['sauvegarde_locale'] == 'on') and ($config['sauvegarde_post_edition'] == 'on')) { 76 77 include_spip('tradlang_fonctions'); 77 if ($dir_lang = tradlang_dir_lang()){78 $infos = sql_fetsel('lang,module', $flux['args']['table'],'id_tradlang='.intval($flux['args']['id_objet']));79 $module = sql_fetsel('*', 'spip_tradlang_modules','module='.sql_quote($infos['module']));80 $sauvegarder_module = charger_fonction('tradlang_sauvegarde_module', 'inc');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'); 81 82 $sauvegarder_module($module['module'],$infos['lang'],$dir_lang); 82 83 } … … 88 89 /** 89 90 * Insertion dans le pipeline pre_boucle (SPIP) 90 * 91 * Si on est dans la boucle calculer_langues_utilisees (utilisée dans un formulaire de configuration de l'espace privé), 91 * 92 * Si on est dans la boucle calculer_langues_utilisees (utilisée dans un formulaire de configuration de l'espace privé), 92 93 * on ne renvoit pas les langues des tradlangs pour éviter de bloquer ces langues dans la configuration du multilinguisme 93 * 94 * 94 95 * @param object $boucle 95 96 * @return object $boucle 96 97 */ 97 function tradlang_pre_boucle($boucle){ 98 if(isset($boucle->nom) && ($boucle->nom == 'calculer_langues_utilisees') && ($boucle->id_boucle == 'tradlangs')) 99 array_unshift($boucle->where,array("'='", "'$id_table." ."id_tradlang'", "'0'")); 98 function 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 } 100 102 return $boucle; 101 103 } … … 103 105 /** 104 106 * Insertion dans le pipeline affiche_milieu (SPIP) 105 * 107 * 106 108 * Sur la fiche des auteurs, on ajoute la liste des révisions de chaines de l'auteur 107 * 109 * 108 110 * @param array $flux 109 111 * Le contexte du pipeline … … 111 113 * Le contexte modifié si besoin 112 114 */ 113 function tradlang_affiche_milieu($flux) {114 if (($flux['args']['exec'] == 'auteur') && (intval($flux['args']['id_auteur']) > 0)) {115 function tradlang_affiche_milieu($flux) { 116 if (($flux['args']['exec'] == 'auteur') && (intval($flux['args']['id_auteur']) > 0)) { 115 117 $texte = recuperer_fond( 116 118 'prive/objets/liste/versions', … … 127 129 /** 128 130 * Insertion dans le pipeline editer_contenu_objet (SPIP) 129 * 131 * 130 132 * Ajouter un champ langues préférées sur le formulaire CVT editer_auteur 131 133 * … … 133 135 * @return array 134 136 */ 135 function tradlang_editer_contenu_objet($flux) {137 function tradlang_editer_contenu_objet($flux) { 136 138 if ($flux['args']['type']=='auteur') { 137 139 $langue_preferee = recuperer_fond('formulaires/inc-langues_preferees', $flux['args']['contexte']); … … 143 145 /** 144 146 * Insertion dans le pipeline formulaire_charger (SPIP) 145 * 147 * 146 148 * Ajouter la valeur langues_preferees dans la liste des champs de la fiche auteur 147 149 * … … 151 153 * Le contexte du pipeline modifié 152 154 */ 153 function tradlang_formulaire_charger($flux) {155 function tradlang_formulaire_charger($flux) { 154 156 // si le charger a renvoye false ou une chaine, ne rien faire 155 if (is_array($flux['data']) && ($flux['args']['form']=='editer_auteur')){157 if (is_array($flux['data']) and ($flux['args']['form'] == 'editer_auteur')) { 156 158 $flux['data']['langues_preferees'] = ''; 157 if ($id_auteur = intval($flux['data']['id_auteur'])) 158 $flux['data']['langues_preferees'] = sql_getfetsel('langues_preferees','spip_auteurs','id_auteur='.intval($id_auteur)); 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 } 159 162 } 160 163 return $flux; … … 164 167 * Insertion dans le pipeline forum_objets_depuis_env (Plugin Forum) 165 168 * On ajoute la possibilité d'avoir des forums sur les chaines de langue 166 * 169 * 167 170 * @param array $array 168 171 * @return array $array 169 172 */ 170 function tradlang_forum_objets_depuis_env($array) {173 function tradlang_forum_objets_depuis_env($array) { 171 174 $array['tradlang'] = id_table_objet('tradlang'); 172 175 return $array; … … 176 179 * Insertion dans le pipeline revisions_chercher_label (Plugin révisions) 177 180 * Utiliser de bons labels pour nos champs sous révision 178 * 181 * 179 182 * @param array $flux 180 183 * Le contexte du pipeline … … 182 185 * Le contexte du pipeline modifié 183 186 */ 184 function tradlang_revisions_chercher_label($flux) {185 if ($flux['args']['objet'] == 'tradlang' && in_array($flux['args']['champ'],array('str','traducteur','statut')))187 function tradlang_revisions_chercher_label($flux) { 188 if ($flux['args']['objet'] == 'tradlang' and in_array($flux['args']['champ'], array('str', 'traducteur', 'statut'))) { 186 189 $flux['data'] = 'tradlang:info_'.$flux['args']['champ']; 190 } 187 191 return $flux; 188 192 } 189 193 190 function tradlang_grappes_objets_lies($flux) {191 if (is_array($flux) && !isset($flux['tradlang_modules']))194 function tradlang_grappes_objets_lies($flux) { 195 if (is_array($flux) and !isset($flux['tradlang_modules'])) { 192 196 $flux['tradlang_modules'] = _T('tradlang:item_groupes_association_modules'); 197 } 193 198 return $flux; 194 199 } 195 ?>
Note: See TracChangeset
for help on using the changeset viewer.