Overview
Comment: | Export CSV adapté à Excel, car c'est un logiciel de m**** |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk | stable |
Files: | files | file ages | folders |
SHA1: |
b0c5c88ec9994b93538307e8dd19c04f |
User & Date: | bohwaz on 2018-06-24 01:23:18 |
Other Links: | manifest | tags |
Context
2018-07-05
| ||
14:33 | Inclure le nom du plugin dans le message d'erreur check-in: 6dfbdc5d58 user: bohwaz tags: trunk, stable | |
2018-06-24
| ||
01:23 | Export CSV adapté à Excel, car c'est un logiciel de m**** check-in: b0c5c88ec9 user: bohwaz tags: trunk, stable | |
2018-06-22
| ||
00:57 | Amélioration galerie dynamique check-in: 6782dad4bf user: bohwaz tags: trunk, stable | |
Changes
Modified src/include/lib/Garradin/Membres/Import.php from [abd6fb1bd8] to [657b6765f3].
︙ | ︙ | |||
258 259 260 261 262 263 264 | $db->commit(); fclose($fp); return true; } | | > | | | 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 | $db->commit(); fclose($fp); return true; } public function toCSV($excel = false) { $db = DB::getInstance(); $champs = Config::getInstance()->get('champs_membres')->getKeys(); $champs = 'm.' . implode(', m.', $champs); $res = $db->prepare('SELECT ' . $champs . ', c.nom AS categorie FROM membres AS m LEFT JOIN membres_categories AS c ON m.id_categorie = c.id ORDER BY c.id;')->execute(); $fp = fopen('php://output', 'w'); fputs($fp, Utils::csv_header($excel)); $header = false; while ($row = $res->fetchArray(SQLITE3_ASSOC)) { unset($row->passe); if (!$header) { fputs($fp, Utils::row_to_csv(array_keys($row), $excel)); $header = true; } fputs($fp, Utils::row_to_csv($row, $excel)); } fclose($fp); return true; } } |
Modified src/include/lib/Garradin/Utils.php from [45da0b309d] to [56babf6e61].
︙ | ︙ | |||
719 720 721 722 723 724 725 | // Skip BOM if (fgets($fp, 4) !== chr(0xEF) . chr(0xBB) . chr(0xBF)) { fseek($fp, 0); } } | | > > > > > > > > > > > > > > > > > | | 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 | // Skip BOM if (fgets($fp, 4) !== chr(0xEF) . chr(0xBB) . chr(0xBF)) { fseek($fp, 0); } } static public function row_to_csv($row, $excel = false) { $row = (array) $row; $eol = "\r\n"; // Excel ne comprends pas les virgules en france, le c*****! $separator = $excel ? '";"' : '","'; array_walk($row, function ($field) { return strtr($field, ['"' => '""', "\r\n" => "\n"]); }); $out = '"' . implode($separator, $row) . '"' . $eol; return $out; } static public function csv_header($excel = false) { if ($excel) { // BOM spécifique pour Excel sinon il ne sait pas lire l'UTF8! return chr(0xEF) . chr(0xBB) . chr(0xBF); } return ''; } } |
Modified src/templates/admin/membres/import.tpl from [b30cfa5d1f] to [0e9a87ea52].
1 2 3 4 5 6 7 8 9 10 11 12 | {include file="admin/_head.tpl" title="Import & export des membres" current="membres" js=1} <ul class="actions"> <li class="current"><a href="{$admin_url}membres/import.php">Importer</a></li> <li><a href="{$admin_url}membres/import.php?export">Exporter en CSV</a></li> </ul> {form_errors} {if $ok} <p class="confirm"> L'import s'est bien déroulé. | > | 1 2 3 4 5 6 7 8 9 10 11 12 13 | {include file="admin/_head.tpl" title="Import & export des membres" current="membres" js=1} <ul class="actions"> <li class="current"><a href="{$admin_url}membres/import.php">Importer</a></li> <li><a href="{$admin_url}membres/import.php?export">Exporter en CSV</a></li> <li><a href="{$admin_url}membres/import.php?export=excel">Exporter en CSV (Excel)</a></li> </ul> {form_errors} {if $ok} <p class="confirm"> L'import s'est bien déroulé. |
︙ | ︙ |
Modified src/www/admin/membres/import.php from [729a351975] to [caede8a449].
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php namespace Garradin; require_once __DIR__ . '/_inc.php'; $session->requireAccess('membres', Membres::DROIT_ADMIN); $import = new Membres\Import; if (null !== qg('export')) { header('Content-type: application/csv'); header('Content-Disposition: attachment; filename="Export membres - ' . $config->get('nom_asso') . ' - ' . date('Y-m-d') . '.csv"'); | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?php namespace Garradin; require_once __DIR__ . '/_inc.php'; $session->requireAccess('membres', Membres::DROIT_ADMIN); $import = new Membres\Import; if (null !== qg('export')) { header('Content-type: application/csv'); header('Content-Disposition: attachment; filename="Export membres - ' . $config->get('nom_asso') . ' - ' . date('Y-m-d') . '.csv"'); $import->toCSV(qg('export') == 'excel' ? true : false); exit; } $champs = $config->get('champs_membres')->getAll(); $champs->date_inscription = (object) ['title' => 'Date inscription', 'type' => 'date']; if (f('import')) |
︙ | ︙ |