Overview
Comment: | Permettre de fusionner/mettre à jour des membres existants en utilisant le numéro de membre |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
62eedbbe38d215fd9495468b031358a6 |
User & Date: | bohwaz on 2018-11-16 16:33:24 |
Other Links: | manifest | tags |
Context
2018-11-26
| ||
22:51 | Corrige bug "UNIQUE constraint failed: membres.email" lors de l'import de CSV check-in: 5160efccc2 user: bohwaz tags: trunk | |
2018-11-16
| ||
16:33 | Permettre de fusionner/mettre à jour des membres existants en utilisant le numéro de membre check-in: 62eedbbe38 user: bohwaz tags: trunk | |
16:33 | Améliorer performances et temps d'attente pour SQLite check-in: 68844e02d3 user: bohwaz tags: trunk | |
Changes
Modified src/include/lib/Garradin/Membres/Import.php from [f63328115c] to [e0ef7a7acb].
︙ | ︙ | |||
62 63 64 65 66 67 68 | /** * Importer un CSV générique * @param string $path Chemin vers le CSV * @param array $translation_table Tableau indiquant la correspondance à effectuer entre les colonnes * du CSV et les champs de Garradin. Par exemple : ['Date création fiche' => 'date_inscription'] * @return boolean TRUE en cas de succès */ | | | 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | /** * Importer un CSV générique * @param string $path Chemin vers le CSV * @param array $translation_table Tableau indiquant la correspondance à effectuer entre les colonnes * du CSV et les champs de Garradin. Par exemple : ['Date création fiche' => 'date_inscription'] * @return boolean TRUE en cas de succès */ public function fromArray(array $table, $translation_table, $current_user_id, $skip_lines = 0) { $db = DB::getInstance(); $db->begin(); $membres = new Membres; $champs = Config::getInstance()->get('champs_membres'); $nb_columns = count($translation_table); |
︙ | ︙ | |||
124 125 126 127 128 129 130 131 132 | } } else { $data[$garradin_field] = $row[$column_index]; } } try { | > > > > > > > > > > > > > > > > > > > > > > | > | 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 | } } else { $data[$garradin_field] = $row[$column_index]; } } if (!empty($data['numero']) && $data['numero'] > 0) { $numero = (int)$data['numero']; } else { unset($data['numero']); $numero = false; } try { if ($numero && ($id = $membres->getIDWithNumero($numero))) { if ($id === $current_user_id) { // Ne pas modifier le membre courant, on risque de se tirer une balle dans le pied continue; } $membres->edit($id, $data); } else { $membres->add($data, false); } } catch (UserException $e) { $db->rollback(); throw new UserException('Erreur sur la ligne ' . $line . ' : ' . $e->getMessage()); } } |
︙ | ︙ |
Modified src/www/admin/membres/import.php from [06d138ee5f] to [ad7949cf6c].
︙ | ︙ | |||
34 35 36 37 38 39 40 | $csv_file = json_decode(f('csv_encoded'), true); if (!$form->hasErrors()) { try { | | | 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | $csv_file = json_decode(f('csv_encoded'), true); if (!$form->hasErrors()) { try { $import->fromArray($csv_file, f('csv_translate'), $user->id, f('skip_first_line') ? 1 : 0); Utils::redirect(ADMIN_URL . 'membres/import.php?ok'); } catch (UserException $e) { $form->addError($e->getMessage()); } } |
︙ | ︙ |