Browse Source

PSR des fichiers php

pull/2/head
Matthieu Marcillaud 1 year ago
parent
commit
d7e07dcf42
  1. 86
      action/editer_souscription.php
  2. 145
      action/exporter_souscriptions.php
  3. 76
      action/generer_recu_souscription.php
  4. 212
      base/souscription.php
  5. 77
      formulaires/configurer_souscription.php
  6. 204
      formulaires/editer_souscription_campagne.php
  7. 88
      formulaires/exporter_souscriptions.php
  8. 294
      formulaires/souscription.php
  9. 129
      genie/surveiller_paiement_souscriptions.php
  10. 11
      lang/paquet-souscription_fr.php
  11. 19
      lang/souscription_campagne_fr.php
  12. 19
      lang/souscription_en.php
  13. 29
      lang/souscription_fr.php
  14. 18
      notifications/alerterecheancesouscription.php
  15. 25
      notifications/informersouscriptioninterrompue.php
  16. 25
      notifications/informersouscriptionterminee.php
  17. 26
      notifications/inviterrecommencersouscription.php
  18. 26
      notifications/relancerfinsouscription.php
  19. 2
      souscription_fonctions.php

86
action/editer_souscription.php

@ -1,4 +1,5 @@
<?php
/**
* Edition de l'objet souscription
*
@ -9,25 +10,28 @@
* @package SPIP\Souscription\Action
*/
if (!defined("_ECRIRE_INC_VERSION")) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
function action_editer_souscription_dist($arg = null){
function action_editer_souscription_dist($arg = null) {
if (is_null($arg)){
if (is_null($arg)) {
$securiser_action = charger_fonction('securiser_action', 'inc');
$arg = $securiser_action();
}
if (!$id_souscription = intval($arg)){
if (!$id_souscription = intval($arg)) {
$id_souscription = souscription_inserer();
}
if (!$id_souscription)
return array(0, '');
if (!$id_souscription) {
return [0, ''];
}
$err = souscription_modifier($id_souscription);
return array($id_souscription, $err);
return [$id_souscription, $err];
}
/**
@ -35,39 +39,43 @@ function action_editer_souscription_dist($arg = null){
*
* @return bool
*/
function souscription_inserer(){
function souscription_inserer() {
$champs = array(
$champs = [
'date_souscription' => date('Y-m-d H:i:s'),
'statut' => 'prepa',
);
];
if (!test_espace_prive()
AND is_null(_request('id_auteur'))
AND isset($GLOBALS['visiteur_session']['id_auteur'])){
if (
!test_espace_prive()
and is_null(_request('id_auteur'))
and isset($GLOBALS['visiteur_session']['id_auteur'])
) {
$champs['id_auteur'] = $GLOBALS['visiteur_session']['id_auteur'];
}
// Envoyer aux plugins
$champs = pipeline('pre_insertion',
array(
'args' => array(
$champs = pipeline(
'pre_insertion',
[
'args' => [
'table' => 'spip_souscriptions'
),
],
'data' => $champs
)
]
);
$id_souscription = sql_insertq("spip_souscriptions", $champs);
$id_souscription = sql_insertq('spip_souscriptions', $champs);
pipeline('post_insertion',
array(
'args' => array(
pipeline(
'post_insertion',
[
'args' => [
'table' => 'spip_souscriptions',
'id_objet' => $id_souscription
),
],
'data' => $champs
)
]
);
return $id_souscription;
@ -82,14 +90,14 @@ function souscription_inserer(){
* @param array|null $set
* @return string
*/
function souscription_modifier($id_souscription, $set = null){
function souscription_modifier($id_souscription, $set = null) {
include_spip('inc/modifier');
$c = collecter_requests(
// white list
objet_info('souscription','champs_editables'),
objet_info('souscription', 'champs_editables'),
// black list
array(),
[],
// donnees eventuellement fournies
$set
);
@ -97,14 +105,20 @@ function souscription_modifier($id_souscription, $set = null){
/* Récupération du nom du pays */
$code_pays = _request('pays');
$pays = sql_getfetsel(sql_multi("nom", $GLOBALS['spip_lang']), 'spip_pays', "code=".sql_quote($code_pays));
$c = array_merge($c,array("pays" => $pays));
if ($err = objet_modifier_champs('souscription', $id_souscription,
array(
'data' => $set,
),
$c))
$pays = sql_getfetsel(sql_multi('nom', $GLOBALS['spip_lang']), 'spip_pays', 'code=' . sql_quote($code_pays));
$c = array_merge($c, ['pays' => $pays]);
if (
$err = objet_modifier_champs(
'souscription',
$id_souscription,
[
'data' => $set,
],
$c
)
) {
return $err;
}
}

145
action/exporter_souscriptions.php

@ -1,4 +1,5 @@
<?php
/**
* Export des souscriptions en CSV
*
@ -9,9 +10,11 @@
* @package SPIP\Souscription\Action
*/
if (!defined("_ECRIRE_INC_VERSION")) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
function action_exporter_souscriptions_dist($arg = null){
function action_exporter_souscriptions_dist($arg = null) {
/*
* $arg contient les différents arguments, séparés par des '/'. Une
* fois passés dans la fonctions split, il se présente de la manière
@ -27,41 +30,46 @@ function action_exporter_souscriptions_dist($arg = null){
/* FIXME: améliorer la jointure... */
if (is_null($arg)){
if (is_null($arg)) {
$securiser_action = charger_fonction('securiser_action', 'inc');
$arg = $securiser_action();
}
/* Vérification des droits de l'utilisateur. */
if (!autoriser("exporter", "souscription", '')){
if (!autoriser('exporter', 'souscription', '')) {
include_spip('inc/minipres');
echo minipres();
exit;
}
try {
$arg = explode("/", $arg);
$arg = explode('/', $arg);
if (sizeof($arg)!=5)
if (sizeof($arg) != 5) {
throw new Exception();
}
$type_souscription = $arg[0];
if ($type_souscription && !in_array($type_souscription, array('don', 'adhesion')))
if ($type_souscription && !in_array($type_souscription, ['don', 'adhesion'])) {
throw new Exception();
}
$statut = $arg[1];
if ($statut && !in_array($statut, array('paye', 'commande', 'erreur')))
if ($statut && !in_array($statut, ['paye', 'commande', 'erreur'])) {
throw new Exception();
}
$id_campagne = $arg[2];
if ($id_campagne && !ctype_digit($id_campagne))
if ($id_campagne && !ctype_digit($id_campagne)) {
throw new Exception();
}
$date_debut = $arg[3];
$date_fin = $arg[4];
if (($date_debut && !ctype_digit($date_debut)) || ($date_fin && !ctype_digit($date_fin)))
if (($date_debut && !ctype_digit($date_debut)) || ($date_fin && !ctype_digit($date_fin))) {
throw new Exception();
}
} catch (Exception $e) {
include_spip('inc/minipres');
echo minipres();
@ -69,79 +77,86 @@ function action_exporter_souscriptions_dist($arg = null){
}
/* Préparation de la requête */
$select = "S.id_souscription, S.courriel, S.type_souscription,S.abo_statut,"
. "T.montant, T.reglee, T.statut, T.date_paiement, T.mode, T.autorisation_id,"
. "S.nom, S.prenom, S.adresse, S.code_postal, S.ville, S.pays, S.telephone, S.recu_fiscal, S.envoyer_info, S.informer_comite_local, S.date_souscription,"
. "C.id_souscription_campagne, C.titre";
$select = 'S.id_souscription, S.courriel, S.type_souscription,S.abo_statut,'
. 'T.montant, T.reglee, T.statut, T.date_paiement, T.mode, T.autorisation_id,'
. 'S.nom, S.prenom, S.adresse, S.code_postal, S.ville, S.pays, S.telephone, S.recu_fiscal, S.envoyer_info, S.informer_comite_local, S.date_souscription,'
. 'C.id_souscription_campagne, C.titre';
$from = "spip_souscriptions AS S
LEFT JOIN spip_souscriptions_liens AS L ON (L.id_souscription=S.id_souscription)
LEFT JOIN spip_transactions AS T ON (T.id_transaction=L.id_objet AND objet='transaction')
LEFT JOIN spip_souscription_campagnes AS C ON (C.id_souscription_campagne = S.id_souscription_campagne)";
$where = array();
if ($type_souscription)
$where[] = "S.type_souscription=".sql_quote($type_souscription);
if ($statut){
if ($statut=="paye")
$where[] = "T.statut=" . sql_quote('ok') . " AND reglee=" . sql_quote('oui');
elseif ($statut=="commande")
$where[] = "T.statut=" . sql_quote('commande');
elseif ($statut=="erreur")
$where[] = "T.statut LIKE " . sql_quote('echec%');
$where = [];
if ($type_souscription) {
$where[] = 'S.type_souscription=' . sql_quote($type_souscription);
}
if ($id_campagne)
$where[] = "C.id_souscription_campagne=" . intval($id_campagne);
if ($statut) {
if ($statut == 'paye') {
$where[] = 'T.statut=' . sql_quote('ok') . ' AND reglee=' . sql_quote('oui');
} elseif ($statut == 'commande') {
$where[] = 'T.statut=' . sql_quote('commande');
} elseif ($statut == 'erreur') {
$where[] = 'T.statut LIKE ' . sql_quote('echec%');
}
}
if ($date_debut)
$where[] = "T.date_transaction>" . sql_quote(date("Y-m-d 00:00:00", $date_debut));
if ($id_campagne) {
$where[] = 'C.id_souscription_campagne=' . intval($id_campagne);
}
if ($date_fin)
$where[] = "T.date_transaction<" . sql_quote(date("Y-m-d 23:59:59", $date_fin));
if ($date_debut) {
$where[] = 'T.date_transaction>' . sql_quote(date('Y-m-d 00:00:00', $date_debut));
}
if ($date_fin) {
$where[] = 'T.date_transaction<' . sql_quote(date('Y-m-d 23:59:59', $date_fin));
}
$res = sql_select($select, $from, $where);
$entete = array(
_T("souscription:label_exporter_entete_id_don"),
_T("souscription:label_exporter_entete_courriel"),
_T("souscription:label_exporter_entete_type_souscription"),
_T("souscription:label_exporter_entete_statut_don"),
_T("souscription:label_exporter_entete_montant"),
_T("souscription:label_exporter_entete_reglee"),
_T("souscription:label_exporter_entete_statut"),
_T("souscription:label_exporter_entete_date_paiement"),
_T("souscription:label_exporter_entete_mode_paiement"),
_T("souscription:label_exporter_entete_id_autorisation"),
_T("souscription:label_exporter_entete_nom"),
_T("souscription:label_exporter_entete_prenom"),
_T("souscription:label_exporter_entete_adresse"),
_T("souscription:label_exporter_entete_code_postal"),
_T("souscription:label_exporter_entete_ville"),
_T("souscription:label_exporter_entete_pays"),
_T("souscription:label_exporter_entete_telephone"),
_T("souscription:label_exporter_entete_recu_fiscal"),
_T("souscription:label_exporter_entete_informer"),
_T("souscription:label_exporter_entete_informer_comite_local"),
_T("souscription:label_exporter_entete_date_don"),
_T("souscription:label_exporter_entete_id_campagne"),
_T("souscription:label_exporter_entete_titre_campagne")
);
$entete = [
_T('souscription:label_exporter_entete_id_don'),
_T('souscription:label_exporter_entete_courriel'),
_T('souscription:label_exporter_entete_type_souscription'),
_T('souscription:label_exporter_entete_statut_don'),
_T('souscription:label_exporter_entete_montant'),
_T('souscription:label_exporter_entete_reglee'),
_T('souscription:label_exporter_entete_statut'),
_T('souscription:label_exporter_entete_date_paiement'),
_T('souscription:label_exporter_entete_mode_paiement'),
_T('souscription:label_exporter_entete_id_autorisation'),
_T('souscription:label_exporter_entete_nom'),
_T('souscription:label_exporter_entete_prenom'),
_T('souscription:label_exporter_entete_adresse'),
_T('souscription:label_exporter_entete_code_postal'),
_T('souscription:label_exporter_entete_ville'),
_T('souscription:label_exporter_entete_pays'),
_T('souscription:label_exporter_entete_telephone'),
_T('souscription:label_exporter_entete_recu_fiscal'),
_T('souscription:label_exporter_entete_informer'),
_T('souscription:label_exporter_entete_informer_comite_local'),
_T('souscription:label_exporter_entete_date_don'),
_T('souscription:label_exporter_entete_id_campagne'),
_T('souscription:label_exporter_entete_titre_campagne')
];
include_spip('inc/charsets');
$entete = array_map('unicode2charset',$entete);
$entete = array_map('unicode2charset', $entete);
/* Utilisation de la fonction exporter_csv de Bonux */
$exporter_csv = charger_fonction('exporter_csv', 'inc/', true);
$titre = _T("souscription:titre_souscriptions")."-".$GLOBALS['meta']['nom_site'];
if ($id_campagne)
$titre = _T('souscription:titre_souscriptions') . '-' . $GLOBALS['meta']['nom_site'];
if ($id_campagne) {
$titre .= "-Campagne$id_campagne";
if ($date_debut)
$titre .= "-From".date("Ymd", $date_debut);
if ($date_fin)
$titre .= "-To".date("Ymd", $date_fin);
$titre .= "-".date('Ymd');
}
if ($date_debut) {
$titre .= '-From' . date('Ymd', $date_debut);
}
if ($date_fin) {
$titre .= '-To' . date('Ymd', $date_fin);
}
$titre .= '-' . date('Ymd');
$exporter_csv($titre, $res, ',', $entete);
exit();
}

76
action/generer_recu_souscription.php

@ -1,4 +1,5 @@
<?php
/**
* Export des souscriptions en CSV
*
@ -9,9 +10,11 @@
* @package SPIP\Souscription\Action
*/
if (!defined("_ECRIRE_INC_VERSION")) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
include_spip("public/parametrer"); // fonctions
include_spip('public/parametrer'); // fonctions
/**
@ -24,70 +27,69 @@ include_spip("public/parametrer"); // fonctions
* $toto=$generer_recu($id_souscription, $annee,'generer');
* @return string
*/
function action_generer_recu_souscription_dist($id_souscription = null, $annee=null,$mode='telecharger'){
if (is_null($id_souscription)){
function action_generer_recu_souscription_dist($id_souscription = null, $annee = null, $mode = 'telecharger') {
if (is_null($id_souscription)) {
$id_souscription = _request('id_souscription');
$annee = _request('annee');
$hash = _request('hash');
$lowsec = souscription_hash_lowsec($id_souscription, $annee);
if ($hash!==$lowsec){
if ($hash !== $lowsec) {
die('Erreur : URL pas autorisee');
}
}
else {
} else {
$lowsec = souscription_hash_lowsec($id_souscription, $annee);
}
$format = _request('format');
if (!in_array($format,array('html','pdf'))){
if (!in_array($format, ['html', 'pdf'])) {
// PDF ou HTML ? si le plugin SPIPDF est la on genere un recu en PDF
$format = "html";
if (test_plugin_actif("spipdf")){
$format = "pdf";
$format = 'html';
if (test_plugin_actif('spipdf')) {
$format = 'pdf';
}
}
$numero = souscription_numero_recu($id_souscription,$annee);
$dir = sous_repertoire(_DIR_IMG,"attestations");
$numero = souscription_numero_recu($id_souscription, $annee);
$dir = sous_repertoire(_DIR_IMG, 'attestations');
// securite : dossier inaccessible en http
if (!file_exists($f=$dir.".htaccess")){
ecrire_fichier($f,"deny from all\n");
if (!file_exists($f = $dir . '.htaccess')) {
ecrire_fichier($f, "deny from all\n");
}
$filename = $numero.".$format";
$file = $dir.$filename;
$filename = $numero . ".$format";
$file = $dir . $filename;
if (!file_exists($file)){
if (!file_exists($file)) {
$fond = ($format == 'pdf' ? 'attestation_pdf' : 'attestation');
$content = recuperer_fond($fond, ['id_souscription' => $id_souscription, 'annee' => $annee, 'hash' => $lowsec]);
$fond = ($format=="pdf"?"attestation_pdf":"attestation");
$content = recuperer_fond($fond,array("id_souscription"=>$id_souscription,"annee"=>$annee,"hash"=>$lowsec));
ecrire_fichier($file,$content);
ecrire_fichier($file, $content);
}
if ($mode=="telecharger") {
$mime = "text/html";
if ($format == "pdf")
$mime = "application/pdf";
if ($mode == 'telecharger') {
$mime = 'text/html';
if ($format == 'pdf') {
$mime = 'application/pdf';
}
header("Content-type: $mime");
if ($format == "pdf") {
$filename = preg_replace(",\W+,", "", $GLOBALS['meta']['nom_site']) . "-Recu-" . $filename;
if ($format == 'pdf') {
$filename = preg_replace(',\W+,', '', $GLOBALS['meta']['nom_site']) . '-Recu-' . $filename;
header("Content-Disposition: attachment; filename=$filename");
//header("Content-Transfer-Encoding: binary");
}
// fix for IE catching or PHP bug issue
header("Pragma: public");
header("Expires: 0"); // set expiration time
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header('Pragma: public');
header('Expires: 0'); // set expiration time
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
if ($cl = filesize($file))
header("Content-Length: " . $cl);
if ($cl = filesize($file)) {
header('Content-Length: ' . $cl);
}
readfile($file);
}
else
} else {
return $file;
}
}
}

212
base/souscription.php

@ -1,4 +1,5 @@
<?php
/**
* Déclarations relatives à la base de données
*
@ -9,7 +10,9 @@
* @package SPIP\Souscription\Base
*/
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
@ -21,7 +24,7 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
* @return array
* Déclarations d'interface pour le compilateur
*/
function souscription_declarer_tables_interfaces($interfaces){
function souscription_declarer_tables_interfaces($interfaces) {
$interfaces['table_des_tables']['souscriptions'] = 'souscriptions';
$interfaces['table_des_tables']['souscription_campagnes'] = 'souscription_campagnes';
@ -38,105 +41,108 @@ function souscription_declarer_tables_interfaces($interfaces){
* @return array
* Description complétée des tables
*/
function souscription_declarer_tables_objets_sql($tables){
function souscription_declarer_tables_objets_sql($tables) {
$tables['spip_souscriptions'] =
array('type' => 'souscription',
'principale' => "oui",
[
'type' => 'souscription',
'principale' => 'oui',
'page' => false,
'table_objet_surnoms' => array('souscription'), // table_objet('souscription') => 'souscription'
'field' => array(
"id_souscription" => "bigint(21) NOT NULL",
"id_souscription_campagne" => "bigint(21) NOT NULL DEFAULT 0",
"id_transaction_echeance" => "bigint(21) NOT NULL DEFAULT 0",
"id_auteur" => "bigint(21) NOT NULL", // auteur (spip) loge qui realise le don, si connu
"montant" => "varchar(25) NOT NULL DEFAULT ''", // montant en euros
"statut" => "varchar(25) NOT NULL DEFAULT 'prepa'",
"courriel" => "text NOT NULL DEFAULT ''",
"civilite" => "varchar(15) NOT NULL DEFAULT ''",
"nom" => "text NOT NULL DEFAULT ''",
"prenom" => "text NOT NULL DEFAULT ''",
"code_postal" => "text NOT NULL DEFAULT ''",
"adresse" => "text NOT NULL DEFAULT ''",
"ville" => "text NOT NULL DEFAULT ''",
"pays" => "text NOT NULL DEFAULT ''",
"telephone" => "text NOT NULL DEFAULT ''",
"recu_fiscal" => "varchar(3) NOT NULL DEFAULT ''",
"type_souscription" => "varchar(255) NOT NULL DEFAULT ''",
"informer_comite_local" => "varchar(3) NOT NULL DEFAULT ''",
"envoyer_info" => "varchar(3) NOT NULL DEFAULT 'off'",
"date_souscription" => "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'",
"date_echeance" => "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'",
"date_fin" => "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'",
"abonne_uid" => "varchar(255) NOT NULL DEFAULT ''",
"abo_statut" => "varchar(25) NOT NULL DEFAULT 'non'",
"abo_fin_raison" => "varchar(255) NOT NULL DEFAULT ''",
"abo_relance" => "varchar(3) NOT NULL DEFAULT ''",
"montant_cumul" => "varchar(25) NOT NULL DEFAULT ''", // montant en euros du total des versements pour cette souscription
"maj" => "TIMESTAMP"
),
'key' => array(
"PRIMARY KEY" => "id_souscription",
"KEY id_transaction_echeance" => "id_transaction_echeance",
"KEY id_souscription_campagne" => "id_souscription_campagne"
),
'join' => array(
'id_souscription','id_souscription_campagne'
),
'table_objet_surnoms' => ['souscription'], // table_objet('souscription') => 'souscription'
'field' => [
'id_souscription' => 'bigint(21) NOT NULL',
'id_souscription_campagne' => 'bigint(21) NOT NULL DEFAULT 0',
'id_transaction_echeance' => 'bigint(21) NOT NULL DEFAULT 0',
'id_auteur' => 'bigint(21) NOT NULL', // auteur (spip) loge qui realise le don, si connu
'montant' => "varchar(25) NOT NULL DEFAULT ''", // montant en euros
'statut' => "varchar(25) NOT NULL DEFAULT 'prepa'",
'courriel' => "text NOT NULL DEFAULT ''",
'civilite' => "varchar(15) NOT NULL DEFAULT ''",
'nom' => "text NOT NULL DEFAULT ''",
'prenom' => "text NOT NULL DEFAULT ''",
'code_postal' => "text NOT NULL DEFAULT ''",
'adresse' => "text NOT NULL DEFAULT ''",
'ville' => "text NOT NULL DEFAULT ''",
'pays' => "text NOT NULL DEFAULT ''",
'telephone' => "text NOT NULL DEFAULT ''",
'recu_fiscal' => "varchar(3) NOT NULL DEFAULT ''",
'type_souscription' => "varchar(255) NOT NULL DEFAULT ''",
'informer_comite_local' => "varchar(3) NOT NULL DEFAULT ''",
'envoyer_info' => "varchar(3) NOT NULL DEFAULT 'off'",
'date_souscription' => "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'",
'date_echeance' => "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'",
'date_fin' => "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'",
'abonne_uid' => "varchar(255) NOT NULL DEFAULT ''",
'abo_statut' => "varchar(25) NOT NULL DEFAULT 'non'",
'abo_fin_raison' => "varchar(255) NOT NULL DEFAULT ''",
'abo_relance' => "varchar(3) NOT NULL DEFAULT ''",
'montant_cumul' => "varchar(25) NOT NULL DEFAULT ''", // montant en euros du total des versements pour cette souscription
'maj' => 'TIMESTAMP'
],
'key' => [
'PRIMARY KEY' => 'id_souscription',
'KEY id_transaction_echeance' => 'id_transaction_echeance',
'KEY id_souscription_campagne' => 'id_souscription_campagne'
],
'join' => [
'id_souscription', 'id_souscription_campagne'
],
'titre' => "nom AS titre, '' AS lang",
'date' => "date_souscription",
'champs_editables' => array('id_souscription_campagne','id_transaction','statut','courriel', 'civilite', 'nom', 'prenom', 'code_postal', 'adresse', 'ville', 'pays', 'telephone','recu_fiscal', 'type_souscription', 'envoyer_info','informer_comite_local','montant','date_echeance','date_fin','abonne_uid','abo_statut','abo_fin_raison','montant_cumul'),
'champs_versionnes' => array('statut','courriel', 'civilite', 'nom', 'prenom', 'code_postal', 'adresse', 'ville', 'pays', 'telephone','recu_fiscal', 'type_souscription', 'envoyer_info','montant'),
'rechercher_champs' => array(
"id_souscription" => 1,
"courriel" => 1,
"nom" => 1,
"prenom" => 1,
"adresse" => 1,
"ville" => 1,
"code_postal" => 1,
"abonne_uid" => 1,
),
'tables_jointures' => array(
'date' => 'date_souscription',
'champs_editables' => ['id_souscription_campagne', 'id_transaction', 'statut', 'courriel', 'civilite', 'nom', 'prenom', 'code_postal', 'adresse', 'ville', 'pays', 'telephone', 'recu_fiscal', 'type_souscription', 'envoyer_info', 'informer_comite_local', 'montant', 'date_echeance', 'date_fin', 'abonne_uid', 'abo_statut', 'abo_fin_raison', 'montant_cumul'],
'champs_versionnes' => ['statut', 'courriel', 'civilite', 'nom', 'prenom', 'code_postal', 'adresse', 'ville', 'pays', 'telephone', 'recu_fiscal', 'type_souscription', 'envoyer_info', 'montant'],
'rechercher_champs' => [
'id_souscription' => 1,
'courriel' => 1,
'nom' => 1,
'prenom' => 1,
'adresse' => 1,
'ville' => 1,
'code_postal' => 1,
'abonne_uid' => 1,
],
'tables_jointures' => [
'spip_souscriptions_liens',
'id_transaction'=>'spip_souscriptions_liens',
'id_transaction' => 'spip_souscriptions_liens',
'spip_transactions',
),
);
],
];
$tables['spip_transactions']['tables_jointures'][] = 'spip_souscriptions_liens';
$tables['spip_transactions']['tables_jointures'][] = 'spip_souscriptions';
$tables['spip_souscription_campagnes'] =
array('type' => 'souscription_campagne',
'principale' => "oui",
[
'type' => 'souscription_campagne',
'principale' => 'oui',
'page' => false,
'table_objet_surnoms' => array('souscriptioncampagne'),
'field' => array(
"id_souscription_campagne" => "bigint(21) NOT NULL",
"objectif" => "int(11) NOT NULL DEFAULT 0",
"objectif_initial" => "int(11) NOT NULL DEFAULT 0",
"type_objectif" => "varchar(255) NOT NULL DEFAULT 0",
"objectif_limiter" => "varchar(3) NOT NULL DEFAULT ''",
"titre" => "text NOT NULL DEFAULT ''",
"texte" => "longtext NOT NULL DEFAULT ''",
"configuration_specifique" => "varchar(3) NOT NULL DEFAULT ''",
"type_saisie" => "varchar(255) NOT NULL DEFAULT ''",
"montants" => "text NOT NULL DEFAULT ''",
"abo_type_saisie" => "varchar(255) NOT NULL DEFAULT ''",
"abo_montants" => "text NOT NULL DEFAULT ''",
"statut" => "varchar(255) NOT NULL DEFAULT 0",
"date" => "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'",
"maj" => "TIMESTAMP"
),
'key' => array("PRIMARY KEY" => "id_souscription_campagne",
"KEY id_souscription_campagne" => "id_souscription_campagne",
),
'table_objet_surnoms' => ['souscriptioncampagne'],
'field' => [
'id_souscription_campagne' => 'bigint(21) NOT NULL',
'objectif' => 'int(11) NOT NULL DEFAULT 0',
'objectif_initial' => 'int(11) NOT NULL DEFAULT 0',
'type_objectif' => 'varchar(255) NOT NULL DEFAULT 0',
'objectif_limiter' => "varchar(3) NOT NULL DEFAULT ''",
'titre' => "text NOT NULL DEFAULT ''",
'texte' => "longtext NOT NULL DEFAULT ''",
'configuration_specifique' => "varchar(3) NOT NULL DEFAULT ''",
'type_saisie' => "varchar(255) NOT NULL DEFAULT ''",
'montants' => "text NOT NULL DEFAULT ''",
'abo_type_saisie' => "varchar(255) NOT NULL DEFAULT ''",
'abo_montants' => "text NOT NULL DEFAULT ''",
'statut' => 'varchar(255) NOT NULL DEFAULT 0',
'date' => "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'",
'maj' => 'TIMESTAMP'
],
'key' => [
'PRIMARY KEY' => 'id_souscription_campagne',
'KEY id_souscription_campagne' => 'id_souscription_campagne',
],
'titre' => "titre AS titre, '' AS lang",
'date' => "date",
'champs_editables' => array('objectif', 'titre', 'texte', 'objectif_initial', 'type_objectif', 'objectif_limiter', 'configuration_specifique', 'type_saisie', 'montants', 'abo_type_saisie', 'abo_montants'),
'champs_versionnes' => array('objectif', 'titre', 'texte', 'objectif_initial', 'type_objectif', 'objectif_limiter', 'configuration_specifique', 'type_saisie', 'montants', 'abo_type_saisie', 'abo_montants'),
'rechercher_champs' => array(),
);
'date' => 'date',
'champs_editables' => ['objectif', 'titre', 'texte', 'objectif_initial', 'type_objectif', 'objectif_limiter', 'configuration_specifique', 'type_saisie', 'montants', 'abo_type_saisie', 'abo_montants'],
'champs_versionnes' => ['objectif', 'titre', 'texte', 'objectif_initial', 'type_objectif', 'objectif_limiter', 'configuration_specifique', 'type_saisie', 'montants', 'abo_type_saisie', 'abo_montants'],
'rechercher_champs' => [],
];
return $tables;
}
@ -148,23 +154,23 @@ function souscription_declarer_tables_objets_sql($tables){
* @param array $tables_auxiliaires
* @return array
*/
function souscription_declarer_tables_auxiliaires($tables_auxiliaires){
function souscription_declarer_tables_auxiliaires($tables_auxiliaires) {
$spip_souscriptions_liens = array(
"id_souscription" => "bigint(21) DEFAULT '0' NOT NULL",
"id_objet" => "bigint(21) DEFAULT '0' NOT NULL",
"objet" => "VARCHAR (25) DEFAULT '' NOT NULL"
);
$spip_souscriptions_liens = [
'id_souscription' => "bigint(21) DEFAULT '0' NOT NULL",
'id_objet' => "bigint(21) DEFAULT '0' NOT NULL",
'objet' => "VARCHAR (25) DEFAULT '' NOT NULL"
];
$spip_souscriptions_liens_key = array(
"PRIMARY KEY" => "id_souscription,id_objet,objet",
"KEY id_souscription" => "id_souscription",
"KEY id_objet" => "id_objet",
"KEY objet" => "objet",
);
$spip_souscriptions_liens_key = [
'PRIMARY KEY' => 'id_souscription,id_objet,objet',
'KEY id_souscription' => 'id_souscription',
'KEY id_objet' => 'id_objet',
'KEY objet' => 'objet',
];
$tables_auxiliaires['spip_souscriptions_liens'] =
array('field' => &$spip_souscriptions_liens, 'key' => &$spip_souscriptions_liens_key);
['field' => &$spip_souscriptions_liens, 'key' => &$spip_souscriptions_liens_key];
return $tables_auxiliaires;
}
}

77
formulaires/configurer_souscription.php

@ -1,4 +1,5 @@
<?php
/**
* Formulaire de configuration
*
@ -9,45 +10,47 @@
* @package SPIP\Souscription\Formulaires
*/
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
include_spip('inc/config');
function formulaires_configurer_souscription_verifier_dist() {
/* FIXME: vérifier le format de 'adhesion_montants' et 'don_montants' */
$erreurs = array();
$type_saisies = array("none","input", "radio", "radioinput", "selection");
if(_request("adhesion_activer")) {
if(!_request("adhesion_type_saisie")) {
$erreurs["adhesion_type_saisie"] = _T("souscription:erreur_champ_obligatoire");
}
if(!in_array(_request("adhesion_type_saisie"), $type_saisies)) {
$erreurs["adhesion_type_saisie"] = _T("souscription:erreur_type_saisie_invalide");
}
if(!_request("adhesion_abo_type_saisie")) {
$erreurs["adhesion_abo_type_saisie"] = _T("souscription:erreur_champ_obligatoire");
}
if(!in_array(_request("adhesion_abo_type_saisie"), $type_saisies)) {
$erreurs["adhesion_abo_type_saisie"] = _T("souscription:erreur_type_saisie_invalide");
}
}
if(_request("don_activer")) {
if(!_request("don_type_saisie")) {
$erreurs["don_type_saisie"] = _T("souscription:erreur_champ_obligatoire");
}
if(!in_array(_request("don_type_saisie"), $type_saisies)) {
$erreurs["don_type_saisie"] = _T("souscription:erreur_type_saisie_invalide");
}
if(!_request("don_abo_type_saisie")) {
$erreurs["don_abo_type_saisie"] = _T("souscription:erreur_champ_obligatoire");
}
if(!in_array(_request("don_abo_type_saisie"), $type_saisies)) {
$erreurs["don_abo_type_saisie"] = _T("souscription:erreur_type_saisie_invalide");
}
}
return $erreurs;
/* FIXME: vérifier le format de 'adhesion_montants' et 'don_montants' */
$erreurs = [];
$type_saisies = ['none', 'input', 'radio', 'radioinput', 'selection'];
if (_request('adhesion_activer')) {
if (!_request('adhesion_type_saisie')) {
$erreurs['adhesion_type_saisie'] = _T('souscription:erreur_champ_obligatoire');
}
if (!in_array(_request('adhesion_type_saisie'), $type_saisies)) {
$erreurs['adhesion_type_saisie'] = _T('souscription:erreur_type_saisie_invalide');
}
if (!_request('adhesion_abo_type_saisie')) {
$erreurs['adhesion_abo_type_saisie'] = _T('souscription:erreur_champ_obligatoire');
}
if (!in_array(_request('adhesion_abo_type_saisie'), $type_saisies)) {
$erreurs['adhesion_abo_type_saisie'] = _T('souscription:erreur_type_saisie_invalide');
}
}
if (_request('don_activer')) {
if (!_request('don_type_saisie')) {
$erreurs['don_type_saisie'] = _T('souscription:erreur_champ_obligatoire');
}
if (!in_array(_request('don_type_saisie'), $type_saisies)) {
$erreurs['don_type_saisie'] = _T('souscription:erreur_type_saisie_invalide');
}
if (!_request('don_abo_type_saisie')) {
$erreurs['don_abo_type_saisie'] = _T('souscription:erreur_champ_obligatoire');
}
if (!in_array(_request('don_abo_type_saisie'), $type_saisies)) {
$erreurs['don_abo_type_saisie'] = _T('souscription:erreur_type_saisie_invalide');
}
}
return $erreurs;
}

204
formulaires/editer_souscription_campagne.php

@ -1,4 +1,5 @@
<?php
/**
* Gestion du formulaire de d'édition de souscription_campagne
*
@ -9,145 +10,164 @@
* @package SPIP\Souscription\Formulaires
*/
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
include_spip('inc/actions');
include_spip('inc/editer');
include_spip('inc/config');
function formulaires_editer_souscription_campagne_identifier_dist($id_souscription_campagne = 'new',
$retour = '',
$lier_trad = 0,
$config_fonc = '',
$row = array(),
$hidden = ''){
return serialize(array(intval($id_souscription_campagne)));
function formulaires_editer_souscription_campagne_identifier_dist(
$id_souscription_campagne = 'new',
$retour = '',
$lier_trad = 0,
$config_fonc = '',
$row = [],
$hidden = ''
) {
return serialize([intval($id_souscription_campagne)]);
}
function formulaires_editer_souscription_campagne_charger_dist($id_souscription_campagne = 'new',
$retour = '',
$lier_trad = 0,
$config_fonc = '',
$row = array(),
$hidden = ''){
$valeurs = formulaires_editer_objet_charger('souscription_campagne',
function formulaires_editer_souscription_campagne_charger_dist(
$id_souscription_campagne = 'new',
$retour = '',
$lier_trad = 0,
$config_fonc = '',
$row = [],
$hidden = ''
) {
$valeurs = formulaires_editer_objet_charger(
'souscription_campagne',
$id_souscription_campagne,
'',
$lier_trad,
$retour,
$config_fonc,
$row,
$hidden);
$hidden
);
/* Si la valeur du champ 'objectif' est 0, alors, c'est que
* l'objectif n'est pas activé. */
$valeurs['_defaut_objectif'] = "";
if ($valeurs['objectif'] AND $valeurs['objectif']>0)
$valeurs['_defaut_objectif'] = "on";
$valeurs['_defaut_objectif'] = '';
if ($valeurs['objectif'] and $valeurs['objectif'] > 0) {
$valeurs['_defaut_objectif'] = 'on';
}
// pour la saisie uniquement, pas en base
$valeurs['objectif_oui_non'] = "";
if (!intval($id_souscription_campagne)){
if (lire_config('souscription/don_activer','off')=='on'){
$valeurs['type_saisie'] = lire_config('souscription/don_type_saisie',$valeurs['type_saisie']);
$valeurs['montants'] = lire_config('souscription/don_montants',$valeurs['montants']);
$valeurs['abo_type_saisie'] = lire_config('souscription/don_abo_type_saisie',$valeurs['abo_type_saisie']);
$valeurs['abo_montants'] = lire_config('souscription/don_abo_montants',$valeurs['abo_montants']);
}
elseif (lire_config('souscription/adhesion_activer','off')=='on'){
$valeurs['type_saisie'] = lire_config('souscription/adhesion_type_saisie',$valeurs['type_saisie']);
$valeurs['montants'] = lire_config('souscription/adhesion_montants',$valeurs['montants']);
$valeurs['abo_type_saisie'] = lire_config('souscription/adhesion_abo_type_saisie',$valeurs['abo_type_saisie']);
$valeurs['abo_montants'] = lire_config('souscription/adhesion_abo_montants',$valeurs['abo_montants']);
$valeurs['objectif_oui_non'] = '';
if (!intval($id_souscription_campagne)) {
if (lire_config('souscription/don_activer', 'off') == 'on') {
$valeurs['type_saisie'] = lire_config('souscription/don_type_saisie', $valeurs['type_saisie']);
$valeurs['montants'] = lire_config('souscription/don_montants', $valeurs['montants']);
$valeurs['abo_type_saisie'] = lire_config('souscription/don_abo_type_saisie', $valeurs['abo_type_saisie']);
$valeurs['abo_montants'] = lire_config('souscription/don_abo_montants', $valeurs['abo_montants']);
} elseif (lire_config('souscription/adhesion_activer', 'off') == 'on') {
$valeurs['type_saisie'] = lire_config('souscription/adhesion_type_saisie', $valeurs['type_saisie']);
$valeurs['montants'] = lire_config('souscription/adhesion_montants', $valeurs['montants']);
$valeurs['abo_type_saisie'] = lire_config('souscription/adhesion_abo_type_saisie', $valeurs['abo_type_saisie']);
$valeurs['abo_montants'] = lire_config('souscription/adhesion_abo_montants', $valeurs['abo_montants']);
}
}
return $valeurs;
}
function formulaires_editer_souscription_campagne_verifier_dist($id_souscription_campagne = 'new',
$retour = '',
$lier_trad = 0,
$config_fonc = '',
$row = array(),
$hidden = ''){
$erreurs = formulaires_editer_objet_verifier('souscription_campagne',
function formulaires_editer_souscription_campagne_verifier_dist(
$id_souscription_campagne = 'new',
$retour = '',
$lier_trad = 0,
$config_fonc = '',
$row = [],
$hidden = ''
) {
$erreurs = formulaires_editer_objet_verifier(
'souscription_campagne',
$id_souscription_campagne,
array('titre',
[
'titre',
'type_objectif',
));
$type = _request("type_objectif");
if (!in_array($type, array('don', 'adhesion')))
$erreurs['type_objectif'] = _T("souscription_campagne:erreur_objectif_invalide");
elseif ($type=="don" AND lire_config("souscription/don_activer","off")!=="on")
$erreurs['type_objectif'] = _T("souscription_campagne:erreur_objectif_don_inactif");
elseif ($type=="adhesion" AND lire_config("souscription/adhesion_activer","off")!=="on")
$erreurs['type_objectif'] = _T("souscription_campagne:erreur_objectif_adhesion_inactif");
]
);
$type = _request('type_objectif');
if (!in_array($type, ['don', 'adhesion'])) {
$erreurs['type_objectif'] = _T('souscription_campagne:erreur_objectif_invalide');
} elseif ($type == 'don' and lire_config('souscription/don_activer', 'off') !== 'on') {
$erreurs['type_objectif'] = _T('souscription_campagne:erreur_objectif_don_inactif');
} elseif ($type == 'adhesion' and lire_config('souscription/adhesion_activer', 'off') !== 'on') {
$erreurs['type_objectif'] = _T('souscription_campagne:erreur_objectif_adhesion_inactif');
}
/* Si un objectif est demandé, alors on vérifie que les champs sont
* bien des entiers. */
if (_request('objectif_oui_non')=='on'){
if (_request('objectif_oui_non') == 'on') {
$objectif = _request('objectif');
if (!ctype_digit($objectif) || intval($objectif)<0)
$erreurs['objectif'] = _T("souscription_campagne:erreur_objectif_invalide");
if (!ctype_digit($objectif) || intval($objectif) < 0) {
$erreurs['objectif'] = _T('souscription_campagne:erreur_objectif_invalide');
}
$objectif_initial = _request('objectif_initial');
if ($objectif_initial!=''){
if (!ctype_digit($objectif_initial) || intval($objectif_initial<0))
$erreurs['objectif_initial'] = _T("souscription_campagne:erreur_objectif_initial_valeur");
elseif (intval($objectif_initial)>$objectif)
$erreurs['objectif_initial'] = _T("souscription_campagne:erreur_objectif_initial_supperieur_objectif");
if ($objectif_initial != '') {
if (!ctype_digit($objectif_initial) || intval($objectif_initial < 0)) {
$erreurs['objectif_initial'] = _T('souscription_campagne:erreur_objectif_initial_valeur');
} elseif (intval($objectif_initial) > $objectif) {
$erreurs['objectif_initial'] = _T('souscription_campagne:erreur_objectif_initial_supperieur_objectif');
}
}
}
/* Si une limite est demandée, alors, on vérifie que le champs est
* bien un entier. */
$limite_oui_non = _request('limite_oui_non');
if ($limite_oui_non=="on"){
if ($limite_oui_non == 'on') {
$limite = _request('limite');
if (!ctype_digit($objectif))
$erreurs['limite'] = _T("souscription_campagne:erreur_limite_valeur");
if (!ctype_digit($objectif)) {
$erreurs['limite'] = _T('souscription_campagne:erreur_limite_valeur');
}
}
/* Si une guration spécifique est demandée, alors on vérifie les
* valeurs 'type_saisie' et 'montants' (si on a demandé un bouton
* radio ou une selection). Autrement, les données sont supprimées
* dans la fonction traiter. */
if (_request('configuration_specifique')){
if (_request('configuration_specifique')) {
$type_saisie = _request('type_saisie');
$saisies = array("none", "input", "radio", "radioinput", "selection");
if (!$type_saisie || !in_array($type_saisie, $saisies))
$saisies = ['none', 'input', 'radio', 'radioinput', 'selection'];
if (!$type_saisie || !in_array($type_saisie, $saisies)) {
$erreurs['type_saisie'] = _T('souscription:erreur_type_saisie_invalide');
else {
} else {
$montants = _request('montants');
if ($type_saisie AND $type_saisie!=="input" AND $type_saisie!=="none"){
if (!$montants || !is_string($montants))
if ($type_saisie and $type_saisie !== 'input' and $type_saisie !== 'none') {
if (!$montants || !is_string($montants)) {
$erreurs['montants'] = _T('souscription:erreur_champ_obligatoire');
elseif (!montants_str2array($montants))
} elseif (!montants_str2array($montants)) {
$erreurs['montants'] = _T('souscription:erreur_montants');
}
}
}
$abo_type_saisie = _request('abo_type_saisie');
if (!$abo_type_saisie || !in_array($abo_type_saisie, $saisies))
if (!$abo_type_saisie || !in_array($abo_type_saisie, $saisies)) {
$erreurs['abo_type_saisie'] = _T('souscription:erreur_type_saisie_invalide');
else {
} else {
$abo_montants = _request('abo_montants');
if ($abo_type_saisie AND $abo_type_saisie!=="input" AND $abo_type_saisie!=="none"){
if (!$abo_montants || !is_string($abo_montants))
if ($abo_type_saisie and $abo_type_saisie !== 'input' and $abo_type_saisie !== 'none') {
if (!$abo_montants || !is_string($abo_montants)) {
$erreurs['abo_montants'] = _T('souscription:erreur_champ_obligatoire');
elseif (!montants_str2array($abo_montants))
} elseif (!montants_str2array($abo_montants)) {
$erreurs['abo_montants'] = _T('souscription:erreur_montants');
}
}
}
if ( !isset($erreurs['type_saisie'])
AND !isset($erreurs['abo_type_saisie'])
AND $type_saisie=="none"
AND $abo_type_saisie=="none"){
if (
!isset($erreurs['type_saisie'])
and !isset($erreurs['abo_type_saisie'])
and $type_saisie == 'none'
and $abo_type_saisie == 'none'
) {
$erreurs['type_saisie'] = $erreurs['abo_type_saisie'] = _T('souscription:erreur_type_saisie_obligatoire');
}
}
@ -155,33 +175,37 @@ function formulaires_editer_souscription_campagne_verifier_dist($id_souscription
return $erreurs;
}
function formulaires_editer_souscription_campagne_traiter_dist($id_souscription_campagne = 'new',
$retour = '',
$lier_trad = 0,
$config_fonc = '',
$row = array(),
$hidden = ''){
function formulaires_editer_souscription_campagne_traiter_dist(
$id_souscription_campagne = 'new',
$retour = '',
$lier_trad = 0,
$config_fonc = '',
$row = [],
$hidden = ''
) {
/* Si un objectif n'est pas demandée, alors, on remplace la valeur
* fournie (quelqu'elle soit, par 0) */
if (_request('objectif_oui_non')!="on"){
if (_request('objectif_oui_non') != 'on') {
set_request('objectif', 0);
set_request('objectif_initial', 0);
set_request('objectif_limiter', 'off');
}
if (_request('configuration_specifique'!="on")){
if (_request('configuration_specifique' != 'on')) {
set_request('type_saisie', '');
set_request('montants', '');
}
$res = formulaires_editer_objet_traiter('souscription_campagne',
$res = formulaires_editer_objet_traiter(
'souscription_campagne',
$id_souscription_campagne,
'',
$lier_trad,
$retour,
$config_fonc,
$row,
$hidden);
$hidden
);
return $res;
}

88
formulaires/exporter_souscriptions.php

@ -1,4 +1,5 @@
<?php
/**
* Gestion du formulaire de d'export des souscriptions
*
@ -9,58 +10,67 @@
* @package SPIP\Souscription\Formulaires
*/
if (!defined("_ECRIRE_INC_VERSION")) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
function formulaires_exporter_souscriptions_charger_dist($type_souscription="tous") {
function formulaires_exporter_souscriptions_charger_dist($type_souscription = 'tous') {
if (!autoriser('exporter','souscription'))
return false;
if (!autoriser('exporter', 'souscription')) {
return false;
}
return array('exporter_type_souscription' => $type_souscription,
'exporter_statut' => "tous",
'exporter_campagne' => "tous",
'exporter_date_debut' => '',
'exporter_date_fin' => '');
return [
'exporter_type_souscription' => $type_souscription,
'exporter_statut' => 'tous',
'exporter_campagne' => 'tous',
'exporter_date_debut' => '',
'exporter_date_fin' => ''
];
}
function formulaires_exporter_souscriptions_verifier_dist($type_souscription="tous") {
/*
* Note : la vérification du format des données est fait dans la
* fonction action (sauf pour les dates)
*/
function formulaires_exporter_souscriptions_verifier_dist($type_souscription = 'tous') {
/*
* Note : la vérification du format des données est fait dans la
* fonction action (sauf pour les dates)
*/
$erreurs = array();
$erreurs = [];
$verifier = charger_fonction('verifier', 'inc/');
if($e = _request('exporter_date_debut') && $err = $verifier(_request('exporter_date_debut'), 'date'))
$erreurs['exporter_date_debut'] = $err;
$verifier = charger_fonction('verifier', 'inc/');
if ($e = _request('exporter_date_debut') && $err = $verifier(_request('exporter_date_debut'), 'date')) {
$erreurs['exporter_date_debut'] = $err;
}
if($e = _request('exporter_date_fin') && $err = $verifier(_request('exporter_date_fin'), 'date'))
$erreurs['exporter_date_fin'] = $err;
if ($e = _request('exporter_date_fin') && $err = $verifier(_request('exporter_date_fin'), 'date')) {
$erreurs['exporter_date_fin'] = $err;
}
return $erreurs;
return $erreurs;
}
function formulaires_exporter_souscriptions_traiter_dist($type_souscription="tous") {
$type_souscription = _request('exporter_type_souscription');
$statut = _request('exporter_statut');
$campagne = _request('exporter_campagne');
function formulaires_exporter_souscriptions_traiter_dist($type_souscription = 'tous') {
$type_souscription = _request('exporter_type_souscription');
$statut = _request('exporter_statut');
$campagne = _request('exporter_campagne');
$verifier = charger_fonction('verifier', 'inc/');
$date_debut = $date_fin = "";
$verifier(_request('exporter_date_debut'), 'date', array('normaliser' => 'datetime'), $date_debut);
$verifier(_request('exporter_date_fin'), 'date', array('normaliser' => 'datetime'), $date_fin);
$verifier = charger_fonction('verifier', 'inc/');
$date_debut = $date_fin = '';
$verifier(_request('exporter_date_debut'), 'date', ['normaliser' => 'datetime'], $date_debut);
$verifier(_request('exporter_date_fin'), 'date', ['normaliser' => 'datetime'], $date_fin);
/* Construction de l'URL spéciale pour l'action d'exportation. */
$arg = sprintf("%s/%s/%s/%s/%s",
$type_souscription == 'tous' ? '' : $type_souscription,
$statut == 'tous' ? '' : $statut,
$campagne == 'tous' ? '' : $campagne,
$date_debut ? strtotime($date_debut) : "",
$date_fin ? strtotime($date_fin) : "");
/* Construction de l'URL spéciale pour l'action d'exportation. */
$arg = sprintf(
'%s/%s/%s/%s/%s',
$type_souscription == 'tous' ? '' : $type_souscription,
$statut == 'tous' ? '' : $statut,
$campagne == 'tous' ? '' : $campagne,
$date_debut ? strtotime($date_debut) : '',
$date_fin ? strtotime($date_fin) : ''
);
include_spip('inc/actions');
$redirect = generer_action_auteur('exporter_souscriptions', $arg);
include_spip('inc/actions');
$redirect = generer_action_auteur('exporter_souscriptions', $arg);
return array('redirect' => $redirect);
return ['redirect' => $redirect];
}

294
formulaires/souscription.php

@ -1,4 +1,5 @@
<?php
/**
* Gestion du formulaire de d'édition de souscription
*
@ -9,7 +10,9 @@
* @package SPIP\Souscription\Formulaires
*/
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
include_spip('inc/actions');
include_spip('inc/editer');
@ -28,21 +31,23 @@ include_spip('inc/config');
* @return array
* Environnement du formulaire
*/
function formulaires_souscription_charger_dist($id_souscription_campagne){
function formulaires_souscription_charger_dist($id_souscription_campagne) {
if (!verifier_campagne($id_souscription_campagne))
if (!verifier_campagne($id_souscription_campagne)) {
return false;
}
/* Récupération des information à propos de la campagne */
$campagne = sql_fetsel("*","spip_souscription_campagnes","id_souscription_campagne=".intval($id_souscription_campagne));
$campagne = sql_fetsel('*', 'spip_souscription_campagnes', 'id_souscription_campagne=' . intval($id_souscription_campagne));
$type = $campagne['type_objectif'];
$recu_fiscal = "off";
if ($type=="adhesion")
$recu_fiscal = "on";
$recu_fiscal = 'off';
if ($type == 'adhesion') {
$recu_fiscal = 'on';
}
if ($campagne['configuration_specifique']!=='on'){
if ($campagne['configuration_specifique'] !== 'on') {
$montant_type = lire_config("souscription/{$type}_type_saisie", 'input');
$montant_datas = lire_config("souscription/${type}_montants", '');
$abo_montant_type = lire_config("souscription/{$type}_abo_type_saisie", 'none');
@ -61,18 +66,19 @@ function formulaires_souscription_charger_dist($id_souscription_campagne){
$email = '';
// dans l'espace prive c'est une souscription pour autrui, pas de pre-remplissage
if (!test_espace_prive()){
if (isset($GLOBALS['visiteur_session']['email']) AND $GLOBALS['visiteur_session']['email'])
if (!test_espace_prive()) {
if (isset($GLOBALS['visiteur_session']['email']) and $GLOBALS['visiteur_session']['email']) {
$email = $GLOBALS['visiteur_session']['email'];
elseif (isset($GLOBALS['visiteur_session']['session_email']) AND $GLOBALS['visiteur_session']['session_email'])
} elseif (isset($GLOBALS['visiteur_session']['session_email']) and $GLOBALS['visiteur_session']['session_email']) {
$email = $GLOBALS['visiteur_session']['session_email'];
}
}
if (!function_exists('montants_str2array')) {
include_spip('souscription_fonctions');
}
$valeurs = array(
$valeurs = [
'montant' => '',
'montant_libre' => '',
'abo_montant' => '',
@ -95,12 +101,12 @@ function formulaires_souscription_charger_dist($id_souscription_campagne){
'_montant_type' => $montant_type,
'_montant_label' => $montant_label,
'_montant_explication' => $montant_explication,
'_abo_montant_datas' => montants_str2array($abo_montant_datas,"abo"),
'_abo_montant_datas' => montants_str2array($abo_montant_datas, 'abo'),
'_abo_montant_type' => $abo_montant_type,
'_abo_montant_label' => $abo_montant_label,
'_abo_montant_explication' => $abo_montant_explication,
'_souscription_paiement' => isset($GLOBALS['formulaires_souscription_paiement'])?$GLOBALS['formulaires_souscription_paiement']:'',
);
'_souscription_paiement' => isset($GLOBALS['formulaires_souscription_paiement']) ? $GLOBALS['formulaires_souscription_paiement'] : '',
];
return $valeurs;
}
@ -118,23 +124,23 @@ function formulaires_souscription_charger_dist($id_souscription_campagne){
* @return array
* Tableau des erreurs
*/
function formulaires_souscription_verifier_dist($id_souscription_campagne){
function formulaires_souscription_verifier_dist($id_souscription_campagne) {
$erreurs = formulaires_editer_objet_verifier('souscription', 'new', array('courriel'));
$erreurs = formulaires_editer_objet_verifier('souscription', 'new', ['courriel']);
$campagne = sql_fetsel("*","spip_souscription_campagnes","id_souscription_campagne=".intval($id_souscription_campagne));
$campagne = sql_fetsel('*', 'spip_souscription_campagnes', 'id_souscription_campagne=' . intval($id_souscription_campagne));
$type_campagne = $campagne['type_objectif'];
if (!verifier_campagne($id_souscription_campagne, $type_campagne)){
if (!verifier_campagne($id_souscription_campagne, $type_campagne)) {
$erreurs['message_erreur'] = _T('souscription:erreur_souscription_campagne_invalide');
}
if (_request('recu_fiscal')==="on" OR $type_campagne=="adhesion"){
foreach (array('prenom', 'nom', 'adresse', 'code_postal', 'ville', 'pays') as $obligatoire){
if (!_request($obligatoire)){
if ($type_campagne=="adhesion"){
if (_request('recu_fiscal') === 'on' or $type_campagne == 'adhesion') {
foreach (['prenom', 'nom', 'adresse', 'code_postal', 'ville', 'pays'] as $obligatoire) {
if (!_request($obligatoire)) {
if ($type_campagne == 'adhesion') {
$erreurs[$obligatoire] = _T('souscription:erreur_adhesion_champ_obligatoire');
} else {
$erreurs[$obligatoire] = _T('souscription:erreur_recu_fiscal_champ_obligatoire');
@ -143,34 +149,37 @@ function formulaires_souscription_verifier_dist($id_souscription_campagne){
}
}
if ($e = _request('courriel') AND !email_valide($e))
if ($e = _request('courriel') and !email_valide($e)) {
$erreurs['courriel'] = _T('form_prop_indiquer_email');
}
if ($e = _request('pays')){
if ($e = _request('pays')) {
$ret = sql_select('nom', 'spip_pays', "code='${e}'");
if (sql_count($ret)!=1)
if (sql_count($ret) != 1) {
$erreurs['pays'] = _T('souscription:erreur_pays_invalide');
}
/* Le code postal n'est vérifié que si on est dans le cas de la France */
elseif ($e = _request('pays') AND $e=="FR") {
if ($e = _request('code_postal') AND !preg_match("/^(2[ABab]|0[1-9]|[1-9][0-9])[0-9]{3}$/", $e)){
/* Le code postal n'est vérifié que si on est dans le cas de la France */ elseif ($e = _request('pays') and $e == 'FR') {
if ($e = _request('code_postal') and !preg_match('/^(2[ABab]|0[1-9]|[1-9][0-9])[0-9]{3}$/', $e)) {
$erreurs['code_postal'] = _T('souscription:erreur_code_postal_invalide');
}
}
}
if ($e = _request('telephone') AND !preg_match("/^[0-9\+ \.]+$/", $e)){
if ($e = _request('telephone') and !preg_match('/^[0-9\+ \.]+$/', $e)) {
$erreurs['telephone'] = _T('souscription:erreur_telephone_invalide');
}
$montant = formulaires_souscription_trouver_montant($campagne,$erreurs);
if (!$montant){
$montant = formulaires_souscription_trouver_montant($campagne, $erreurs);
if (!$montant) {
$erreurs['montant'] = $erreurs['abo_montant'] = _T('souscription:erreur_montant_obligatoire');
}
if (count($erreurs)>0
AND !isset($erreurs['message_erreur'])){
if (
count($erreurs) > 0
and !isset($erreurs['message_erreur'])
) {
$erreurs['message_erreur'] = _T('souscription:erreur_formulaire');
}
@ -187,50 +196,53 @@ function formulaires_souscription_verifier_dist($id_souscription_campagne){
* @param $erreurs
* @return null|string
*/
function formulaires_souscription_trouver_montant($campagne,&$erreurs){
function formulaires_souscription_trouver_montant($campagne, &$erreurs) {
$e = _request('montant');
$libre = false;
if ($ea = _request('abo_montant')){
if ($ea = _request('abo_montant')) {
$ea = _request('abo_montant');
if ($ea=="libre"){
if ($ea == 'libre') {
$ea = _request('abo_montant_libre');
if ($ea)
if ($ea) {
$libre = true;
}
}
if ($ea) {
$e = ((strncmp($ea, 'abo', 3) == 0) ? '' : 'abo') . $ea;
}
if ($ea)
$e = ((strncmp($ea,"abo",3)==0)?"":"abo").$ea;
}
if ($e=="libre"){
if ($e == 'libre') {
$e = _request('montant_libre');
$libre = true;
}
elseif ($e=="abo_libre"){
$e = (_request('abo_montant_libre')?"abo"._request('abo_montant_libre'):"");
} elseif ($e == 'abo_libre') {
$e = (_request('abo_montant_libre') ? 'abo' . _request('abo_montant_libre') : '');
$libre = true;
}
if ($e){
$abo = (strncmp($e,"abo",3)==0)?"abo_":"";
if (!ctype_digit($abo?substr($e,3):$e))
$erreurs[$abo.'montant'] = _T("souscription:erreur_montant_invalide");
else {
if ($campagne['configuration_specifique']!=='on'){
$montant_type = lire_config("souscription/".$campagne['type_objectif']."{$abo}_type_saisie", 'input');
$montant_datas = lire_config("souscription/".$campagne['type_objectif']."{$abo}_montants", '');
if ($e) {
$abo = (strncmp($e, 'abo', 3) == 0) ? 'abo_' : '';
if (!ctype_digit($abo ? substr($e, 3) : $e)) {
$erreurs[$abo . 'montant'] = _T('souscription:erreur_montant_invalide');
} else {
if ($campagne['configuration_specifique'] !== 'on') {
$montant_type = lire_config('souscription/' . $campagne['type_objectif'] . "{$abo}_type_saisie", 'input');
$montant_datas = lire_config('souscription/' . $campagne['type_objectif'] . "{$abo}_montants", '');
} else {
$montant_type = $campagne[$abo.'type_saisie'];
$montant_datas = $campagne[$abo.'montants'];
$montant_type = $campagne[$abo . 'type_saisie'];
$montant_datas = $campagne[$abo . 'montants'];
}
/* On ne vérifie strictement la valeur du montant que si on
* n'utilise pas le type de saisie « entrée libre » (input) pour
* le montant. */
if (($montant_type!=="input")
AND !$libre
AND !array_key_exists($e, montants_str2array($montant_datas,$abo?"abo":"")))
$erreurs[$abo.'montant'] = _T('souscription:erreur_montant_specifie_invalide');
if (
($montant_type !== 'input')
and !$libre
and !array_key_exists($e, montants_str2array($montant_datas, $abo ? 'abo' : ''))
) {
$erreurs[$abo . 'montant'] = _T('souscription:erreur_montant_specifie_invalide');
}
}
}
return $e;
@ -248,147 +260,153 @@ function formulaires_souscription_trouver_montant($campagne,&$erreurs){
* @return array
* Retours des traitements
*/
function formulaires_souscription_traiter_dist($id_souscription_campagne){
function formulaires_souscription_traiter_dist($id_souscription_campagne) {
$lier_trad = 0;
$config_fonc = '';
$row = array();
$row = [];
$hidden = '';
$retour = '';
$ret = array();
$ret = [];
$campagne = sql_fetsel("*","spip_souscription_campagnes", "id_souscription_campagne=".intval($id_souscription_campagne));
set_request("id_souscription_campagne",$id_souscription_campagne);
set_request('type_souscription',$campagne['type_objectif']);
if (!in_array(_request('envoyer_info'),array('on','off')))
set_request('envoyer_info','off');
$campagne = sql_fetsel('*', 'spip_souscription_campagnes', 'id_souscription_campagne=' . intval($id_souscription_campagne));
set_request('id_souscription_campagne', $id_souscription_campagne);
set_request('type_souscription', $campagne['type_objectif']);
if (!in_array(_request('envoyer_info'), ['on', 'off'])) {
set_request('envoyer_info', 'off');
}
$where_deja = array(
$where_deja = [
'courriel=' . sql_quote(_request('courriel')),
'nom=' . sql_quote(_request('nom')),
'prenom=' . sql_quote(_request('prenom')),
'statut=' . sql_quote('prepa'),
"date_souscription>".sql_quote(date('Y-m-d H:i:s',strtotime("-1 day"))),
'id_souscription_campagne='.intval($id_souscription_campagne),
);
<