fix: Notices diverses, simplification de code

master 4.0.0
Matthieu Marcillaud 3 weeks ago
parent 35c68e4b52
commit cf576ec047

@ -32,35 +32,22 @@ function action_tradlang_exporter_langue_dist() {
$tradlang_sauvegarde_module = charger_fonction('tradlang_sauvegarde_module', 'inc');
$fichier = $tradlang_sauvegarde_module($module, $lang_cible, false, $type, $tout);
if (file_exists($fichier)) {
// supprimer et vider les buffers qui posent des problemes de memory limit
// http://www.php.net/manual/en/function.readfile.php#81032
// Copie du plugin acces restreint action/api_docrestreint.php
@ini_set('zlib.output_compression', '0'); // pour permettre l'affichage au fur et a mesure
@ini_set('output_buffering', 'off');
@ini_set('implicit_flush', 1);
@ob_implicit_flush(1);
while ($level--) {
@ob_end_clean();
}
switch ($type) {
case 'po':
header('Content-Type: application/x-gettext;');
$content_type = 'application/x-gettext';
break;
case 'csv':
header('Content-type: text/csv');
$content_type = 'text/csv';
break;
case 'php':
$content_type = 'application/x-httpd-php';
break;
default:
header('Content-Type: application/x-httpd-php;');
$content_type = 'application/octet-stream';
break;
}
header('Content-Length: ' . filesize($fichier));
header('Content-Transfer-Encoding: binary');
header('Pragma: public'); // required
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: private', false); // required for certain browsers
header('Content-Disposition: attachment; filename="' . basename($fichier) . '"');
readfile($fichier);
include_spip('inc/livrer_fichier');
spip_livrer_fichier($fichier, $content_type);
die();
} else {
include_spip('inc/minipres');

@ -30,7 +30,6 @@ if (!defined('_ECRIRE_INC_VERSION')) {
*/
function export_lang_po_dist($module, $langue, $dir_lang) {
$traducteurs = [];
$lang = null;
$x = $tous = [];
$contenu = '';
@ -64,22 +63,30 @@ function export_lang_po_dist($module, $langue, $dir_lang) {
$last_auteur = sql_fetsel('nom,email', 'spip_auteurs', 'id_auteur=' . (int) $id_auteur);
$traducteurs[$lang] = [];
$traducteurs[$langue] = [];
$people_unique = [];
$liste_traducteurs = sql_select('DISTINCT(traducteur)', 'spip_tradlangs', 'id_tradlang_module = ' . (int) $info_module['id_tradlang_module'] . ' AND lang = ' . sql_quote($langue));
while ($t = sql_fetch($liste_traducteurs)) {
$liste_traducteurs = sql_allfetsel(
'DISTINCT(traducteur)',
'spip_tradlangs',
[
'id_tradlang_module = ' . (int) $info_module['id_tradlang_module'],
'lang = ' . sql_quote($langue),
'traducteur IS NOT NULL'
]
);
foreach ($liste_traducteurs as $t) {
$traducteurs_lang = explode(',', $t['traducteur']);
foreach ($traducteurs_lang as $traducteur) {
if (!in_array($traducteur, $people_unique)) {
if (is_numeric($traducteur) && ($id_auteur = (int) $traducteur)) {
$traducteur_supp['nom'] = extraire_multi(sql_getfetsel('nom', 'spip_auteurs', 'id_auteur = ' . $id_auteur));
$traducteur_supp['lien'] = url_absolue(generer_objet_url($id_auteur, 'auteur'), $url_site);
$traducteur_supp['lien'] = url_absolue(generer_objet_url($id_auteur, 'auteur'));
} elseif (trim(strlen($traducteur)) > 0) {
$traducteur_supp['nom'] = trim($traducteur);
$traducteur_supp['lien'] = '';
}
if (isset($traducteur_supp['nom'])) {
$traducteurs[$lang][] = $traducteur_supp;
$traducteurs[$langue][] = $traducteur_supp;
}
unset($traducteur_supp);
$people_unique[] = $traducteur;

@ -43,14 +43,7 @@ function export_lang_spip_dist($module, $langue, $dir_lang, $tout = false) {
$res = sql_allfetsel('id,str,comm,statut', 'spip_tradlangs', $where, 'id');
$x = [];
$prev = '';
/**
* 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;
foreach ($res as $row) {
$tous[$row['id']] = $row;
}
$tous = array_column($res, null, 'id');
ksort($tous);
foreach ($tous as $row) {
if ($prev !== strtoupper($row['id'][0])) {

Loading…
Cancel
Save