Skip to content
Extraits de code Groupes Projets
Valider fbea3543 rédigé par kent1@arscenic.info's avatar kent1@arscenic.info
Parcourir les fichiers

Exporter en CSV

utiliser sql_allfetsel + foreach au lieur de sql_select + while + sql_fetch

Petites améliorations
parent 61919000
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -10,6 +10,7 @@ action/tradlang_verifier_langue_base.php -text ...@@ -10,6 +10,7 @@ action/tradlang_verifier_langue_base.php -text
base/tradlang.php -text base/tradlang.php -text
controleurs/str_statut.html -text controleurs/str_statut.html -text
controleurs/tradlang_tous.html -text controleurs/tradlang_tous.html -text
export_lang/csv.php -text
export_lang/po.php -text export_lang/po.php -text
export_lang/spip.php -text export_lang/spip.php -text
formulaires/configurer_tradlang.html -text formulaires/configurer_tradlang.html -text
......
...@@ -41,6 +41,8 @@ function action_tradlang_exporter_langue_dist(){ ...@@ -41,6 +41,8 @@ function action_tradlang_exporter_langue_dist(){
case 'po': case 'po':
header('Content-Type: application/x-gettext;'); header('Content-Type: application/x-gettext;');
break; break;
case 'csv';
header('Content-type: text/csv');
default: default:
header('Content-Type: application/x-httpd-php;'); header('Content-Type: application/x-httpd-php;');
} }
......
<?php
/**
*
* Trad-lang v2
* Plugin SPIP de traduction de fichiers de langue
* © Florent Jugla, Fil, kent1
*
* Fichier d'export d'un module de langue en .csv
*/
if (!defined("_ECRIRE_INC_VERSION")) return;
/**
* Fonction d'export d'une langue d'un module en .csv
*
* @param string $module
* Le module à exporter (le champ "module" dans la base)
* @param string $langue
* La langue à exporter
* @param string $dir_lang
* Le répertoire où stocker les fichiers de langue
* @return string $fichier
* Le fichier final
*/
function export_lang_csv_dist($module,$langue,$dir_lang){
$chaines_csv=$tous=array();
/**
* Le fichier final
* local/cache-lang/module_lang.csv
*/
$fichier = $dir_lang."/".$module."_".$langue.".csv";
/**
* Les informations du module
*/
$info_module = sql_fetsel('id_tradlang_module,lang_mere,nom_mod','spip_tradlang_modules','module='.sql_quote($module));
/**
* Les chaines
*/
$res=sql_allfetsel("id,str,statut,comm","spip_tradlangs","id_tradlang_module=".intval($info_module['id_tradlang_module'])." AND lang=".sql_quote($langue)." AND statut != 'attic'","id");
foreach($res as $row){
$tous[$row['id']] = $row;
}
ksort($tous);
foreach ($tous as $id => $row) {
$str = $row['str'];
$oldmd5 = md5($str);
$str = str_replace("\r\n", "\n", unicode_to_utf_8(
html_entity_decode(
preg_replace('/&([lg]t;)/S', '&amp;\1', $str),
ENT_NOQUOTES, 'utf-8')
));
$newmd5 = md5($str);
if ($oldmd5 !== $newmd5) sql_updateq("spip_tradlangs",array('md5'=>$newmd5), "md5=".sql_quote($oldmd5)." AND id_tradlang_module=".intval($info_module['id_tradlang_module']));
$str_original = sql_getfetsel('str','spip_tradlangs','id ='.sql_quote($id).' AND id_tradlang_module='.intval($info_module['id_tradlang_module']).' AND lang='.sql_quote($info_module['lang_mere']));
$chaine = array('id' => $row['id'],'str_orig'=>$str_original,'str'=>$str,'statut'=>$row['statut'],'comm'=>$row['comm']);
$chaines_csv[] = $chaine;
unset($tous[$id]);
}
$fp = fopen($fichier, 'w');
foreach ($chaines_csv as $fields) {
fputcsv($fp, $fields);
}
fclose($fp);
return $fichier;
}
?>
\ No newline at end of file
...@@ -38,7 +38,8 @@ function export_lang_po_dist($module,$langue,$dir_lang){ ...@@ -38,7 +38,8 @@ function export_lang_po_dist($module,$langue,$dir_lang){
/** /**
* Les informations du module * Les informations du module
*/ */
$info_module = sql_fetsel('*','spip_tradlang_modules','module='.sql_quote($module)); $info_module = sql_fetsel('id_tradlang_module,lang_mere,nom_mod','spip_tradlang_modules','module='.sql_quote($module));
$url_trad = url_absolue(parametre_url(generer_url_entite($info_module['id_tradlang_module'],'tradlang_module'),'lang_cible',$langue)); $url_trad = url_absolue(parametre_url(generer_url_entite($info_module['id_tradlang_module'],'tradlang_module'),'lang_cible',$langue));
/** /**
...@@ -49,17 +50,17 @@ function export_lang_po_dist($module,$langue,$dir_lang){ ...@@ -49,17 +50,17 @@ function export_lang_po_dist($module,$langue,$dir_lang){
*/ */
$last_auteur = array(); $last_auteur = array();
if($langue != $info_module['lang_mere']){ if($langue != $info_module['lang_mere']){
$traducteur = sql_fetsel('id_tradlang,traducteur','spip_tradlangs',"module=".sql_quote($module)." AND lang=".sql_quote($langue),"",'maj DESC','0,1'); $traducteur = sql_fetsel('id_tradlang,traducteur','spip_tradlangs',"id_tradlang_module=".intval($info_module['id_tradlang_module'])." AND lang=".sql_quote($langue),"",'maj DESC','0,1');
if(is_numeric($traducteur['traducteur'])) if(is_numeric($traducteur['traducteur']))
$id_auteur = $traducteur['traducteur']; $id_auteur = $traducteur['traducteur'];
else else
$id_auteur = sql_select('id_auteur','spip_versions','objet="tradlang" AND id_objet='.intval($traducteur['id_tradlang']),"",'id_version DESC','0,1'); $id_auteur = sql_getfetsel('id_auteur','spip_versions','objet="tradlang" AND id_objet='.intval($traducteur['id_tradlang']),"",'id_version DESC','0,1');
$last_auteur = sql_fetsel('nom,email','spip_auteurs','id_auteur='.intval($id_auteur)); $last_auteur = sql_fetsel('nom,email','spip_auteurs','id_auteur='.intval($id_auteur));
$traducteurs[$lang] = array(); $traducteurs[$lang] = array();
$people_unique = array(); $people_unique = array();
$liste_traducteurs = sql_select('DISTINCT(traducteur)','spip_tradlangs','module='.sql_quote($module)." and lang=".sql_quote($langue)); $liste_traducteurs = sql_select('DISTINCT(traducteur)','spip_tradlangs','id_tradlang_module='.intval($info_module['id_tradlang_module'])." and lang=".sql_quote($langue));
while ($t = sql_fetch($liste_traducteurs)){ while ($t = sql_fetch($liste_traducteurs)){
$traducteurs_lang = explode(',',$t['traducteur']); $traducteurs_lang = explode(',',$t['traducteur']);
foreach($traducteurs_lang as $traducteur){ foreach($traducteurs_lang as $traducteur){
...@@ -123,13 +124,13 @@ msgstr "" ...@@ -123,13 +124,13 @@ msgstr ""
* msgid "Item dans la langue originale" * msgid "Item dans la langue originale"
* msgstr "Item dans la langue actuelle (traduit), si non traduit, vide" * msgstr "Item dans la langue actuelle (traduit), si non traduit, vide"
*/ */
$res=sql_select("id,str,comm,statut","spip_tradlangs","module=".sql_quote($module)." AND lang=".sql_quote($langue),"id"); $res=sql_allfetsel("*","spip_tradlangs","id_tradlang_module=".intval($info_module['id_tradlang_module'])." AND lang=".sql_quote($langue)." AND statut != 'attic'","id");
while ($row=sql_fetch($res)) { foreach($res as $row){
$tous[$row['id']] = $row; $tous[$row['id']] = $row;
} }
ksort($tous); ksort($tous);
foreach ($tous as $row) { foreach ($tous as $id => $row) {
if (trim($row['comm'])) $row['comm']=" # ".trim($row['comm']); // on rajoute les commentaires ? if (trim($row['comm'])) $row['comm']=" # ".trim($row['comm']); // on rajoute les commentaires ?
$str = $row['str']; $str = $row['str'];
...@@ -142,15 +143,15 @@ msgstr "" ...@@ -142,15 +143,15 @@ msgstr ""
); );
$newmd5 = md5($str); $newmd5 = md5($str);
if ($oldmd5 !== $newmd5) sql_updateq("spip_tradlangs",array('md5'=>$newmd5), "md5=".sql_quote($oldmd5)." AND module=".sql_quote($module)); if ($oldmd5 !== $newmd5) sql_updateq("spip_tradlangs",array('md5'=>$newmd5), "md5=".sql_quote($oldmd5)." AND id_tradlang_module=".intval($info_module['id_tradlang_module']));
$str_original = sql_getfetsel('str','spip_tradlangs','id ='.sql_quote($row['id']).' AND module='.sql_quote($module).' AND lang='.sql_quote($info_module['lang_mere'])); $str_original = sql_getfetsel('str','spip_tradlangs','id ='.sql_quote($id).' AND id_tradlang_module='.intval($info_module['id_tradlang_module']).' AND lang='.sql_quote($info_module['lang_mere']));
$x[]=($row['comm'] ? "#".$row['comm']."\n" : ""). $x[]=($row['comm'] ? "#".$row['comm']."\n" : "").
" "
#, ".(($row['statut'] == 'MODIF') ? "fuzzy, php-format" : "php-format")." #, ".(($row['statut'] == 'MODIF') ? "fuzzy, php-format" : "php-format")."
#| msgid \"".$row['id']."\" #| msgid \"".$row['id']."\"
msgid \"".str_replace('"','\"',$str_original)."\" msgid \"".str_replace('"','\"',$str_original)."\"
msgstr \"".(($row['statut'] == 'NEW') ? '' : str_replace('"','\"',$str))."\""; msgstr \"".(($row['statut'] == 'NEW') ? '' : str_replace('"','\"',$str))."\"";
unset($tous[$id]);
} }
$contenu .= str_replace("\r\n", "\n", join("\n",$x)); $contenu .= str_replace("\r\n", "\n", join("\n",$x));
......
...@@ -35,11 +35,11 @@ function export_lang_spip_dist($module,$langue,$dir_lang,$tout=false){ ...@@ -35,11 +35,11 @@ function export_lang_spip_dist($module,$langue,$dir_lang,$tout=false){
$where = "module=".sql_quote($module)." AND lang=".sql_quote($langue); $where = "module=".sql_quote($module)." AND lang=".sql_quote($langue);
if(!$tout) if(!$tout)
$where .= " AND statut IN ('OK','MODIF')"; $where .= " AND statut IN ('OK','MODIF')";
$res=sql_select("id,str,comm,statut","spip_tradlangs",$where,"id"); $res=sql_allfetsel("id,str,comm,statut","spip_tradlangs",$where,"id");
$x=array(); $x=array();
$prev=""; $prev="";
$tous = $lorigine; // on part de l'origine comme ca on a tout meme si c'est pas dans la base de donnees (import de salvatore/lecteur.php) $tous = $lorigine; // on part de l'origine comme ca on a tout meme si c'est pas dans la base de donnees (import de salvatore/lecteur.php)
while ($row=sql_fetch($res)) { foreach ($res as $row){
$tous[$row['id']] = $row; $tous[$row['id']] = $row;
} }
ksort($tous); ksort($tous);
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter