Browse Source

ajout d'un formulaire d'import de signatures à partir d'un fichier CSV

permet d'ajouter les signatures récupérées sur papier lors d'événements publics
master
b_b 7 months ago
parent
commit
f6373a0d96
  1. 19
      formulaires/importer_signatures.html
  2. 63
      formulaires/importer_signatures.php
  3. 7
      lang/cambio_fr.php
  4. 8
      prive/configurer/petitionner.html

19
formulaires/importer_signatures.html

@ -0,0 +1,19 @@
<div class="formulaire_spip formulaire_configurer formulaire_#FORM">
<h3 class="titrem"><:cambio:import_titre:></h3>
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
[<form method="post" action="#ENV{action}#confirmation" enctype="multipart/form-data">(#EDITABLE)
#ACTION_FORMULAIRE{#ENV{action}}
<div class="editer-groupe">
#SET{name,file_import}#SET{obli,obligatoire}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
<div class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
<label for="#GET{name}"><:cambio:import_label_csv:></label>[
<span class='erreur_message'>(#GET{erreurs})</span>
]<input type="file" name="#GET{name}" class="file text" id="#GET{name}" [(#HTML5|et{#GET{obli}})required='required']/>
</div>
</div>
<p class="boutons">
<input type="submit" class="submit" value="<:cambio:import_bouton|attribut_html:>"/>
</p>
</form>]
</div>

63
formulaires/importer_signatures.php

@ -0,0 +1,63 @@
<?php
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
function formulaires_importer_signatures_charger_dist($id_petition) {
if (autoriser('configurer')) {
return array('file_import' => '');
} else {
return false;
}
}
function formulaires_importer_signatures_verifier_dist($id_petition) {
$erreurs = array();
if (!isset($_FILES) or !isset($_FILES['file_import'])) {
$erreurs['file_import'] = _T('medias:erreur_indiquez_un_fichier');
}
return $erreurs;
}
function formulaires_importer_signatures_traiter_dist($id_petition) {
$importer_csv = charger_fonction('importer_csv', 'inc');
if (isset($_FILES) and isset($_FILES['file_import']) and !$_FILES['file_import']['error']) {
$fichier = $_FILES['file_import']['tmp_name'];
$csv = $importer_csv($fichier, true, ",", '"', null);
$petition = sql_fetsel('*', 'spip_petitions', 'id_petition=' . intval($id_petition));
$total = 0;
include_spip('action/editer_signature');
if (is_array($csv) and count($csv) >= 1) {
foreach ($csv as $item) {
$doublon = false;
if ($petition['email_unique'] == "oui") {
$doublon = sql_countsel('spip_signatures', "id_petition=" . intval($id_petition) . " AND ad_email=" . sql_quote($item['email']) . " AND statut='publie'");
}
if (!$doublon) {
if ($id_signature = signature_inserer($id_petition)) {
signature_modifier(
$id_signature,
array(
'statut' => 'publie',
'nom_email' => $item['nom'],
'ad_email' => $item['email'],
'nom_site' => $item['code_postal']
)
);
++$total;
}
}
}
}
}
return array(
'message_ok' => _T('cambio:import_message_ok', array('nb' => $total)),
'editable' => true
);
}

7
lang/cambio_fr.php

@ -7,5 +7,10 @@ if (!defined('_ECRIRE_INC_VERSION')) {
$GLOBALS[$GLOBALS['idx_lang']] = array(
'export_prop' => 'Exporter les signatures en attente',
'export_publie' => 'Exporter les signatures confirmées',
'export_titre' => 'Exporter les signatures'
'export_titre' => 'Exporter les signatures',
'import_bouton' => 'Importer',
'import_label_csv' => 'Fichier CSV',
'import_message_ok' => '@nb@ signatures importées',
'import_titre' => 'Importer des signatures',
);

8
prive/configurer/petitionner.html

@ -8,4 +8,10 @@
[(#URL_PAGE{exporter_signatures,id_article=#ID_ARTICLE}|icone_horizontale{<:cambio:export_publie:>,petition-24,export})]
[(#URL_PAGE{exporter_signatures,id_article=#ID_ARTICLE}|parametre_url{statut,prop}|icone_horizontale{<:cambio:export_prop:>,petition-24,export})]
#BOITE_FERMER]
<//B_signatures>
<//B_signatures>
<BOUCLE_petition(PETITIONS){id_article}>
[(#AUTORISER{configurer}|oui)
[<div class="ajax">(#FORMULAIRE_IMPORTER_SIGNATURES{#ID_PETITION})</div>]
]
</BOUCLE_petition>
Loading…
Cancel
Save