Envoi initial
authorOlivier Tetard <otetard@dubnium.miskin.fr>
Thu, 7 Mar 2013 21:26:11 +0000 (22:26 +0100)
committerOlivier Tetard <otetard@dubnium.miskin.fr>
Thu, 7 Mar 2013 21:26:11 +0000 (22:26 +0100)
48 files changed:
action/editer_souscription_don.php [new file with mode: 0644]
action/exporter_dons_payes.php [new file with mode: 0644]
action/exporter_dons_tous.php [new file with mode: 0644]
action/exporter_dons_tous.php~ [new file with mode: 0644]
base/souscription.php [new file with mode: 0644]
base/souscription.php~ [new file with mode: 0644]
fabrique_souscription.php [new file with mode: 0644]
formulaires/configurer_souscription.html [new file with mode: 0644]
formulaires/editer_souscription_campagne.html [new file with mode: 0644]
formulaires/editer_souscription_campagne.php [new file with mode: 0644]
formulaires/souscription_don.html [new file with mode: 0644]
formulaires/souscription_don.php [new file with mode: 0644]
lang/paquet-souscription_fr.php [new file with mode: 0644]
lang/souscription_campagne_fr.php [new file with mode: 0644]
lang/souscription_don_fr.php [new file with mode: 0644]
lang/souscription_don_fr.php~ [new file with mode: 0644]
lang/souscription_fr.php [new file with mode: 0644]
modeles/faire-un-don.html [new file with mode: 0644]
modeles/faire-un-don.html~ [new file with mode: 0644]
paquet.xml [new file with mode: 0644]
paquet.xml~ [new file with mode: 0644]
prive/objets/contenu/souscription_campagne.html [new file with mode: 0644]
prive/objets/contenu/souscription_campagne.html~ [new file with mode: 0644]
prive/objets/contenu/souscription_don.html [new file with mode: 0644]
prive/objets/contenu/souscription_don.html~ [new file with mode: 0644]
prive/objets/infos/souscription_don.html [new file with mode: 0644]
prive/objets/liste/souscription_dons.html [new file with mode: 0644]
prive/objets/liste/souscription_dons.html~ [new file with mode: 0644]
prive/squelettes/contenu/configurer_souscription.html [new file with mode: 0644]
prive/squelettes/contenu/souscription_don.html [new file with mode: 0644]
prive/squelettes/contenu/souscription_dons.html [new file with mode: 0644]
prive/squelettes/contenu/souscriptions.html [new file with mode: 0644]
prive/squelettes/extra/souscription_dons.html [new file with mode: 0644]
prive/squelettes/extra/souscription_dons.html~ [new file with mode: 0644]
prive/squelettes/navigation/souscription_abonnements.html [new file with mode: 0644]
prive/squelettes/navigation/souscription_adhesions.html [new file with mode: 0644]
prive/squelettes/navigation/souscription_campagnes.html [new file with mode: 0644]
prive/squelettes/navigation/souscription_dons.html [new file with mode: 0644]
prive/squelettes/navigation/souscriptions.html [new file with mode: 0644]
saisies-vues/souscription_dons.html [new file with mode: 0644]
saisies/souscription_dons.html [new file with mode: 0644]
souscription_administrations.php [new file with mode: 0644]
souscription_administrations.php~ [new file with mode: 0644]
souscription_autorisations.php [new file with mode: 0644]
souscription_autorisations.php~ [new file with mode: 0644]
souscription_fonctions.php [new file with mode: 0644]
souscription_options.php [new file with mode: 0644]
souscription_pipelines.php [new file with mode: 0644]

diff --git a/action/editer_souscription_don.php b/action/editer_souscription_don.php
new file mode 100644 (file)
index 0000000..d9cf50a
--- /dev/null
@@ -0,0 +1,94 @@
+<?php
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+function action_editer_souscription_don_dist($arg=null) {
+  if (is_null($arg)){
+    $securiser_action = charger_fonction('securiser_action', 'inc');
+    $arg = $securiser_action();
+  }
+
+  if (!$id_souscription_don = intval($arg)){
+    $id_souscription_don = don_inserer();
+  }
+
+  if (!$id_souscription_don)
+    return array(0,'');
+
+  $err = don_modifier($id_souscription_don);
+
+  return array($id_souscription_don, $err);
+}
+
+
+/**
+ * Inserer une nouvelle donation en en base
+ *
+ * @return bool
+ */
+function don_inserer() {
+
+  $champs = array('date_souscription' => date('Y-m-d H:i:s'));
+       
+  // Envoyer aux plugins
+  $champs = pipeline('pre_insertion',
+                     array('args' => array('table' => 'spip_souscription_dons'),
+                           'data' => $champs)
+                     );
+
+  $id_souscription_don = sql_insertq("spip_souscription_dons", $champs);
+
+  pipeline('post_insertion',
+           array('args' => array('table' => 'spip_souscription_dons',
+                                 'id_objet' => $id_souscription_don),
+                 'data' => $champs)
+           );
+
+  return $id_souscription_don;
+}
+
+/**
+ * Modifier une donation
+ *
+ * $c est un contenu (par defaut on prend le contenu via _request())
+ *
+ * @param int $id_souscription_don
+ * @param array|bool $set
+ * @return string
+ */
+function don_modifier($id_souscription_don, $set=false) {
+  include_spip('inc/modifier');
+
+  $c = collecter_requests(
+                          // white list
+                          array('courriel',
+                                'recu_fiscal',
+                                'envoyer_info',
+                                'prenom',
+                                'nom',
+                                'adresse',
+                                'code_postal',
+                                'ville',
+                                'id_souscription_campagne'),
+                          // black list
+                          array('statut', 'date'),
+                          // donnees eventuellement fournies
+                          $set
+                          );
+
+
+  $inserer_transaction = charger_fonction('inserer_transaction', 'bank');
+  $id_transaction = $inserer_transaction(_request('montant'),
+                                         '', /* montant_ht */
+                                         '', /* id_auteur */
+                                         $id_souscription_don, /* auteur_id => id_souscription_don */
+                                         _request('courriel'));
+
+  if(!$id_transaction) {
+    return "Identifiant de transaction introuvable..."; /* FIXME: à rendre traduisible. */
+  }
+
+  $c = array_merge($c, array("id_transaction" => $id_transaction));
+
+  if($err = objet_modifier_champs('souscription_don', $id_souscription_don, array(), $c))
+    return $err;
+}
diff --git a/action/exporter_dons_payes.php b/action/exporter_dons_payes.php
new file mode 100644 (file)
index 0000000..dcc98b0
--- /dev/null
@@ -0,0 +1,52 @@
+<?php
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+function action_exporter_dons_payes_dist($arg=null) {
+
+  /* FIXME: permettre de selectionner les exports */
+  /* FIXME: améliorer la jointure... */
+
+  if (is_null($arg)) {
+    $securiser_action = charger_fonction('securiser_action', 'inc');
+    $arg = $securiser_action();
+  }
+
+  /* Vérification des droits de l'utilisateur. */
+  if(!autoriser("exporter", "souscriptiondon", '')) {
+    include_spip('inc/minipres');
+    echo minipres();
+    exit;
+  }
+
+
+  $row = sql_select("id_souscription_don, courriel,"
+                    ."montant, reglee, spip_transactions.statut, date_paiement, mode, autorisation_id,"
+                    ."nom, prenom, code_postal, ville, recu_fiscal, envoyer_info, date_souscription,"
+                    ."id_souscription_campagne, titre", /* $select */
+                    "spip_souscription_dons LEFT JOIN spip_transactions USING(id_transaction) LEFT JOIN spip_souscription_campagnes USING(id_souscription_campagne) ",
+                    "reglee='oui'"); /* $where */
+
+  $entete = array("ID du don",
+                  "Courriel",
+                  "Montant",
+                  "Reglée",
+                  "Statut",
+                  "Date de paiement",
+                  "Mode de paiement",
+                  "ID de l'autorisation",
+                  "Nom",
+                  "Prénom",
+                  "Code Postal",
+                  "Ville",
+                  "Souhaite reçu fiscal",
+                  "Souhaite être informé",
+                  "Date don",
+                  "ID Campagne",
+                  "Titre de la campagne");
+
+  /* Utilisation de la fonction exporter_csv de Bonux */
+  $exporter_csv = charger_fonction('exporter_csv', 'inc/', true);
+
+  $exporter_csv('souscription_dons_payes', $row, ',', $entete);
+  exit();
+}
diff --git a/action/exporter_dons_tous.php b/action/exporter_dons_tous.php
new file mode 100644 (file)
index 0000000..cd480fe
--- /dev/null
@@ -0,0 +1,51 @@
+<?php
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+function action_exporter_dons_tous_dist($arg=null) {
+
+  /* FIXME: permettre de selectionner les exports */
+  /* FIXME: améliorer la jointure... */
+
+  if (is_null($arg)) {
+    $securiser_action = charger_fonction('securiser_action', 'inc');
+    $arg = $securiser_action();
+  }
+
+  /* Vérification des droits de l'utilisateur. */
+  if(!autoriser("exporter", "souscriptiondon", '')) {
+    include_spip('inc/minipres');
+    echo minipres();
+    exit;
+  }
+
+
+  $row = sql_select("id_souscription_don, courriel,"
+                    ."montant, reglee, spip_transactions.statut, date_paiement, mode, autorisation_id,"
+                    ."nom, prenom, code_postal, ville, recu_fiscal, envoyer_info, date_souscription,"
+                    ."id_souscription_campagne, titre",
+                    "spip_souscription_dons LEFT JOIN spip_transactions USING(id_transaction) LEFT JOIN spip_souscription_campagnes USING(id_souscription_campagne)");
+
+  $entete = array("ID du don",
+                  "Courriel",
+                  "Montant",
+                  "Reglée",
+                  "Statut",
+                  "Date de paiement",
+                  "Mode de paiement",
+                  "ID de l'autorisation",
+                  "Nom",
+                  "Prénom",
+                  "Code Postal",
+                  "Ville",
+                  "Souhaite reçu fiscal",
+                  "Souhaite être informé",
+                  "Date don",
+                  "ID Campagne",
+                  "Titre de la campagne");
+
+  /* Utilisation de la fonction exporter_csv de Bonux */
+  $exporter_csv = charger_fonction('exporter_csv', 'inc/', true);
+
+  $exporter_csv('souscription_dons_tous', $row, ',', $entete);
+  exit();
+}
diff --git a/action/exporter_dons_tous.php~ b/action/exporter_dons_tous.php~
new file mode 100644 (file)
index 0000000..446fe36
--- /dev/null
@@ -0,0 +1,52 @@
+<?php
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+function action_exporter_dons_payes_dist($arg=null) {
+
+  /* FIXME: permettre de selectionner les exports */
+  /* FIXME: améliorer la jointure... */
+
+  if (is_null($arg)) {
+    $securiser_action = charger_fonction('securiser_action', 'inc');
+    $arg = $securiser_action();
+  }
+
+  /* Vérification des droits de l'utilisateur. */
+  if(!autoriser("exporter", "souscriptiondon", '')) {
+    include_spip('inc/minipres');
+    echo minipres();
+    exit;
+  }
+
+
+  $row = sql_select("id_souscription_don, courriel,"
+                    ."montant, reglee, spip_transactions.statut, date_paiement, mode, autorisation_id,"
+                    ."nom, prenom, code_postal, ville, recu_fiscal, envoyer_info, date_souscription,"
+                    ."id_souscription_campagne, titre", /* $select */
+                    "spip_souscription_dons LEFT JOIN spip_transactions USING(id_transaction) LEFT JOIN spip_souscription_campagnes USING(id_souscription_campagne) ",
+                    "reglee='oui'"); /* $where */
+
+  $entete = array("ID du don",
+                  "Courriel",
+                  "Montant",
+                  "Reglée",
+                  "Statut",
+                  "Date de paiement",
+                  "Mode de paiement",
+                  "ID de l'autorisation",
+                  "Nom",
+                  "Prénom",
+                  "Code Postal",
+                  "Ville",
+                  "Souhaite reçu fiscal",
+                  "Souhaite être informé",
+                  "Date don",
+                  "ID Campagne",
+                  "Titre de la campagne");
+
+  /* Utilisation de la fonction exporter_csv de Bonux */
+  $exporter_csv = charger_fonction('exporter_csv', 'inc/', true);
+
+  $exporter_csv('souscription_dons', $row, ',', $entete);
+  exit();
+}
diff --git a/base/souscription.php b/base/souscription.php
new file mode 100644 (file)
index 0000000..0b34005
--- /dev/null
@@ -0,0 +1,101 @@
+<?php
+/**
+ * Déclarations relatives à la base de données
+ *
+ * @plugin     Souscription
+ * @copyright  2013
+ * @author     Olivier Tétard
+ * @licence    GNU/GPL
+ * @package    SPIP\Souscription\Pipelines
+ */
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+
+/**
+ * Déclaration des alias de tables et filtres automatiques de champs
+ *
+ * @pipeline declarer_tables_interfaces
+ * @param array $interfaces
+ *     Déclarations d'interface pour le compilateur
+ * @return array
+ *     Déclarations d'interface pour le compilateur
+ */
+function souscription_declarer_tables_interfaces($interfaces) {
+  $interfaces['table_des_tables']['souscription_dons'] = 'souscription_dons';
+  $interfaces['table_des_tables']['souscription_campagnes'] = 'souscription_campagnes';
+
+  return $interfaces;
+}
+
+
+/**
+ * Déclaration des objets éditoriaux
+ *
+ * @pipeline declarer_tables_objets_sql
+ * @param array $tables
+ *     Description des tables
+ * @return array
+ *     Description complétée des tables
+ */
+function souscription_declarer_tables_objets_sql($tables) {
+
+  $tables['spip_souscription_dons'] =
+    array('type' => 'souscription_don',
+          'principale' => "oui",
+          'table_objet_surnoms' => array('souscriptiondon'), // table_objet('souscription_don') => 'souscription_dons'
+          'field'=> array("id_souscription_don" => "bigint(21) NOT NULL",
+                          "id_transaction"      => "bigint(21) NOT NULL DEFAULT 0",
+                          "id_souscription_campagne" => "bigint(21) NOT NULL DEFAULT 0",
+                          "courriel"            => "text 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 ''",
+                          "recu_fiscal"         => "varchar(3) NOT NULL DEFAULT 0",
+                          "envoyer_info"        => "varchar(3) NOT NULL DEFAULT ''",
+                          "date_souscription "  => "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'",
+                          "maj"                 => "TIMESTAMP"
+                          ),
+          'key' => array("PRIMARY KEY"          => "id_souscription_don",
+                         "KEY id_transaction"   => "id_transaction",
+                         "KEY id_souscription_campagne" => "id_souscription_campagne"),
+          'titre' => "nom AS titre, '' AS lang",
+          'date' => "date_souscription",
+          'champs_editables'  => array('courriel', 'nom', 'prenom', 'code_postal', 'adresse', 'ville', 'recu_fiscal', 'envoyer_info'),
+          'champs_versionnes' => array('courriel', 'nom', 'prenom', 'code_postal', 'adresse', 'ville', 'recu_fiscal', 'envoyer_info'),
+          'rechercher_champs' => array(),
+          'join' => array("id_transaction" => "id_transaction"),
+          /* 'join' => array("id_souscription_campagne" => "id_souscription_campagne"), */
+          /* 'tables_jointures'  => array('souscription_campagnes'), */
+          'tables_jointures'  => array('spip_transactions'),
+          );
+
+  $tables['spip_souscription_campagnes'] =
+    array('type' => 'souscription_campagne',
+          'principale' => "oui",
+          '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",
+                          "titre"                    => "text NOT NULL DEFAULT ''",
+                          "texte"                    => "longtext 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",
+                         ),
+          'titre' => "titre AS titre, '' AS lang",
+          'date' => "date",
+          'champs_editables'  => array('objectif', 'titre', 'texte', 'objectif_initial', 'type_objectif'),
+          'champs_versionnes' => array('objectif', 'titre', 'texte', 'objectif_initial', 'type_objectif'),
+          'rechercher_champs' => array(),
+          /* 'tables_jointures'  => array('spip_souscription_campagnes'), */
+          );
+
+  return $tables;
+}
diff --git a/base/souscription.php~ b/base/souscription.php~
new file mode 100644 (file)
index 0000000..62dded6
--- /dev/null
@@ -0,0 +1,102 @@
+<?php
+/**
+ * Déclarations relatives à la base de données
+ *
+ * @plugin     Souscription
+ * @copyright  2013
+ * @author     Olivier Tétard
+ * @licence    GNU/GPL
+ * @package    SPIP\Souscription\Pipelines
+ */
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+
+/**
+ * Déclaration des alias de tables et filtres automatiques de champs
+ *
+ * @pipeline declarer_tables_interfaces
+ * @param array $interfaces
+ *     Déclarations d'interface pour le compilateur
+ * @return array
+ *     Déclarations d'interface pour le compilateur
+ */
+function souscription_declarer_tables_interfaces($interfaces) {
+
+  $interfaces['table_des_tables']['souscription_dons'] = 'souscription_dons';
+
+  return $interfaces;
+}
+
+
+/**
+ * Déclaration des objets éditoriaux
+ *
+ * @pipeline declarer_tables_objets_sql
+ * @param array $tables
+ *     Description des tables
+ * @return array
+ *     Description complétée des tables
+ */
+function souscription_declarer_tables_objets_sql($tables) {
+
+  $tables['spip_souscription_dons'] =
+    array(
+          'type' => 'souscription_don',
+          'principale' => "oui",
+          'table_objet_surnoms' => array('souscriptiondon'), // table_objet('souscription_don') => 'souscription_dons'
+          'field'=> array("id_souscription_don" => "bigint(21) NOT NULL",
+                          "id_transaction"      => "bigint(21) NOT NULL DEFAULT 0",
+                          "montant"             => "int(11) NOT NULL DEFAULT 0",
+                          "courriel"            => "text 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 ''",
+                          "recu_fiscal"         => "int(1) NOT NULL DEFAULT 0",
+                          "envoyer_info"        => "int(2) NOT NULL DEFAULT 0",
+                          /* "statut"              => "varchar(255) DEFAULT '0' NOT NULL COLLATE NOCASE", */
+                          "date_souscription "  => "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'",
+                          "maj"                 => "TIMESTAMP"
+                          ),
+          'key' => array("PRIMARY KEY"          => "id_souscription_don",
+                         ),
+          'titre' => "nom AS titre, '' AS lang",
+          'date' => "date_souscription",
+          'champs_editables'  => array('montant', 'courriel', 'nom', 'prenom', 'code_postal', 'adresse', 'ville', 'recu_fiscal', 'envoyer_info'),
+          'champs_versionnes' => array('montant', 'courriel', 'nom', 'prenom', 'code_postal', 'adresse', 'ville', 'recu_fiscal', 'envoyer_info'),
+          'rechercher_champs' => array(),
+          'tables_jointures'  => array('spip_transactions' => 'id_transaction'),
+          );
+
+  return $tables;
+}
+
+
+/* /\** */
+/*  * Déclaration des tables secondaires (liaisons) */
+/*  * */
+/*  * @pipeline declarer_tables_auxiliaires */
+/*  * @param array $tables */
+/*  *     Description des tables */
+/*  * @return array */
+/*  *     Description complétée des tables */
+/*  *\/ */
+/* function souscription_declarer_tables_auxiliaires($tables) { */
+
+/*   $tables['spip_souscription_dons_liens'] = */
+/*     array( */
+/*           'field' => array("id_souscription_don" => "bigint(21) DEFAULT '0' NOT NULL", */
+/*                            "id_objet"           => "bigint(21) DEFAULT '0' NOT NULL", */
+/*                            "objet"              => "VARCHAR(25) DEFAULT '' NOT NULL", */
+/*                            "vu"                 => "VARCHAR(6) DEFAULT 'non' NOT NULL" */
+/*                            ), */
+/*           'key' => array("PRIMARY KEY"        => "id_souscription_don,id_objet,objet", */
+/*                          "KEY id_souscription_don" => "id_souscription_don" */
+/*                          ) */
+/*           ); */
+
+/*   return $tables; */
+/* } */
+?>
diff --git a/fabrique_souscription.php b/fabrique_souscription.php
new file mode 100644 (file)
index 0000000..7c3c5ba
--- /dev/null
@@ -0,0 +1,301 @@
+!<?php
+
+/**
+ *  Fichier généré par la Fabrique de plugin v5
+ *   le 2013-03-01 16:49:34
+ *
+ *  Ce fichier de sauvegarde peut servir à recréer
+ *  votre plugin avec le plugin «Fabrique» qui a servi à le créer.
+ *
+ *  Bien évidemment, les modifications apportées ultérieurement
+ *  par vos soins dans le code de ce plugin généré
+ *  NE SERONT PAS connues du plugin «Fabrique» et ne pourront pas
+ *  être recréées par lui !
+ *
+ *  La «Fabrique» ne pourra que régénerer le code de base du plugin
+ *  avec les informations dont il dispose.
+ *
+**/
+
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+$data = array (
+  'fabrique' => 
+  array (
+    'version' => 5,
+  ),
+  'paquet' => 
+  array (
+    'nom' => 'Souscription',
+    'slogan' => '',
+    'description' => 'Module de souscription pour Attac France et Basta!',
+    'prefixe' => 'souscription',
+    'version' => '1.0.0',
+    'auteur' => 'Olivier Tétard',
+    'auteur_lien' => 'http://olivier.miskin.fr',
+    'licence' => 'GNU/GPL',
+    'categorie' => 'communication',
+    'etat' => 'dev',
+    'compatibilite' => '[3.0.5;3.0.*]',
+    'documentation' => '',
+    'administrations' => 'on',
+    'schema' => '1.0.0',
+    'formulaire_config' => 'on',
+    'formulaire_config_titre' => 'Configuration des modules de souscription',
+    'fichiers' => 
+    array (
+      0 => 'autorisations',
+      1 => 'fonctions',
+      2 => 'options',
+      3 => 'pipelines',
+    ),
+    'inserer' => 
+    array (
+      'paquet' => '',
+      'administrations' => 
+      array (
+        'maj' => '',
+        'desinstallation' => '',
+        'fin' => '',
+      ),
+      'base' => 
+      array (
+        'tables' => 
+        array (
+          'fin' => '',
+        ),
+      ),
+    ),
+    'scripts' => 
+    array (
+      'pre_copie' => '',
+      'post_creation' => '',
+    ),
+    'exemples' => '',
+  ),
+  'objets' => 
+  array (
+    0 => 
+    array (
+      'nom' => 'Dons',
+      'nom_singulier' => 'Don',
+      'genre' => 'masculin',
+      'logo_variantes' => '',
+      'table' => 'spip_souscription_dons',
+      'cle_primaire' => 'id_souscription_don',
+      'cle_primaire_sql' => 'bigint(21) NOT NULL',
+      'table_type' => 'souscription_don',
+      'champs' => 
+      array (
+        0 => 
+        array (
+          'nom' => 'Courriel',
+          'champ' => 'courriel',
+          'sql' => 'text NOT NULL DEFAULT \'\'',
+          'caracteristiques' => 
+          array (
+            0 => 'editable',
+            1 => 'versionne',
+            2 => 'obligatoire',
+          ),
+          'recherche' => '',
+          'saisie' => 'input',
+          'explication' => '',
+          'saisie_options' => '',
+        ),
+        1 => 
+        array (
+          'nom' => 'Nom',
+          'champ' => 'nom',
+          'sql' => 'text NOT NULL DEFAULT \'\'',
+          'caracteristiques' => 
+          array (
+            0 => 'editable',
+            1 => 'versionne',
+          ),
+          'recherche' => '',
+          'saisie' => 'input',
+          'explication' => '',
+          'saisie_options' => '',
+        ),
+        2 => 
+        array (
+          'nom' => 'Prénom',
+          'champ' => 'prenom',
+          'sql' => 'text NOT NULL DEFAULT \'\'',
+          'caracteristiques' => 
+          array (
+            0 => 'editable',
+            1 => 'versionne',
+          ),
+          'recherche' => '',
+          'saisie' => 'input',
+          'explication' => '',
+          'saisie_options' => '',
+        ),
+        3 => 
+        array (
+          'nom' => 'Code postal',
+          'champ' => 'code_postal',
+          'sql' => 'text NOT NULL DEFAULT \'\'',
+          'caracteristiques' => 
+          array (
+            0 => 'editable',
+            1 => 'versionne',
+          ),
+          'recherche' => '',
+          'saisie' => 'input',
+          'explication' => '',
+          'saisie_options' => '',
+        ),
+        4 => 
+        array (
+          'nom' => 'Adresse',
+          'champ' => 'adresse',
+          'sql' => 'text NOT NULL DEFAULT \'\'',
+          'caracteristiques' => 
+          array (
+            0 => 'editable',
+            1 => 'versionne',
+          ),
+          'recherche' => '',
+          'saisie' => 'textarea',
+          'explication' => '',
+          'saisie_options' => '',
+        ),
+        5 => 
+        array (
+          'nom' => 'Ville',
+          'champ' => 'ville',
+          'sql' => 'text NOT NULL DEFAULT \'\'',
+          'caracteristiques' => 
+          array (
+            0 => 'editable',
+            1 => 'versionne',
+          ),
+          'recherche' => '',
+          'saisie' => 'input',
+          'explication' => '',
+          'saisie_options' => '',
+        ),
+        6 => 
+        array (
+          'nom' => 'Envoyer un reçu fiscal',
+          'champ' => 'recu_fiscal',
+          'sql' => 'int(1) NOT NULL DEFAULT 0',
+          'caracteristiques' => 
+          array (
+            0 => 'editable',
+            1 => 'versionne',
+          ),
+          'recherche' => '',
+          'saisie' => 'oui_non',
+          'explication' => '',
+          'saisie_options' => '',
+        ),
+        7 => 
+        array (
+          'nom' => 'Souhaite être informé',
+          'champ' => 'envoyer_info',
+          'sql' => 'int(2) NOT NULL DEFAULT 0',
+          'caracteristiques' => 
+          array (
+            0 => 'editable',
+            1 => 'versionne',
+          ),
+          'recherche' => '',
+          'saisie' => 'oui_non',
+          'explication' => 'Souhaite recevoir des informations publiques',
+          'saisie_options' => '',
+        ),
+        8 => 
+        array (
+          'nom' => 'Identifiant de la transaction',
+          'champ' => 'id_transaction',
+          'sql' => 'int(11) NOT NULL DEFAULT 0',
+          'caracteristiques' => 
+          array (
+            0 => 'editable',
+            1 => 'versionne',
+          ),
+          'recherche' => '',
+          'saisie' => '',
+          'explication' => '',
+          'saisie_options' => '',
+        ),
+      ),
+      'champ_titre' => 'nom',
+      'champ_date' => 'date_souscription',
+      'statut' => '',
+      'chaines' => 
+      array (
+        'titre_objets' => 'Dons',
+        'titre_objet' => 'Don',
+        'info_aucun_objet' => 'Aucun don',
+        'info_1_objet' => 'Un don',
+        'info_nb_objets' => '@nb@ dons',
+        'icone_creer_objet' => 'Créer un don',
+        'icone_modifier_objet' => 'Modifier ce don',
+        'titre_logo_objet' => 'Logo de ce don',
+        'titre_langue_objet' => 'Langue de ce don',
+        'titre_objets_rubrique' => 'Dons de la rubrique',
+        'info_objets_auteur' => 'Les dons de cet auteur',
+        'retirer_lien_objet' => 'Retirer ce don',
+        'retirer_tous_liens_objets' => 'Retirer tous les dons',
+        'ajouter_lien_objet' => 'Ajouter ce don',
+        'texte_ajouter_objet' => 'Ajouter un don',
+        'texte_creer_associer_objet' => 'Créer et associer un don',
+        'texte_changer_statut_objet' => 'Ce don est :',
+      ),
+      'table_liens' => 'on',
+      'roles' => '',
+      'auteurs_liens' => '',
+      'vue_auteurs_liens' => '',
+      'echafaudages' => 
+      array (
+        0 => 'prive/squelettes/contenu/objets.html',
+        1 => 'prive/objets/infos/objet.html',
+        2 => 'prive/squelettes/contenu/objet.html',
+      ),
+      'autorisations' => 
+      array (
+        'objet_creer' => 'toujours',
+        'objet_voir' => 'webmestre',
+        'objet_modifier' => 'webmestre',
+        'objet_supprimer' => 'webmestre',
+        'associerobjet' => 'webmestre',
+      ),
+      'boutons' => 
+      array (
+        0 => 'menu_edition',
+        1 => 'outils_rapides',
+      ),
+      'saisies' => 
+      array (
+        0 => 'objets',
+      ),
+    ),
+  ),
+  'images' => 
+  array (
+    'paquet' => 
+    array (
+      'logo' => 
+      array (
+        0 => 
+        array (
+          'extension' => '',
+          'contenu' => '',
+        ),
+      ),
+    ),
+    'objets' => 
+    array (
+      0 => 
+      array (
+      ),
+    ),
+  ),
+);
+
+?>
\ No newline at end of file
diff --git a/formulaires/configurer_souscription.html b/formulaires/configurer_souscription.html
new file mode 100644 (file)
index 0000000..7be3579
--- /dev/null
@@ -0,0 +1,16 @@
+<div class="formulaire_spip formulaire_configurer formulaire_#FORM">
+
+       <h3 class="titrem"><:souscription:cfg_titre_parametrages:></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}">
+       <div>
+               #ACTION_FORMULAIRE{#ENV{action}}
+
+               <input type="hidden" name="_meta_casier" value="souscription" />
+               <p class="boutons"><span class="image_loading">&nbsp;</span><input type="submit" class="submit" value="<:bouton_enregistrer:>" /></p>
+       </div>
+       </form>
+</div>
\ No newline at end of file
diff --git a/formulaires/editer_souscription_campagne.html b/formulaires/editer_souscription_campagne.html
new file mode 100644 (file)
index 0000000..16996e3
--- /dev/null
@@ -0,0 +1,25 @@
+<div class='formulaire_spip formulaire_editer formulaire_#FORM formulaire_#FORM-#ENV{id_souscription_campagne,nouveau}'>
+  [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV**{message_ok})</p>]
+  [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
+
+  [(#ENV{editable})
+  <form method='post' action='#ENV{action}'><div>
+      #ACTION_FORMULAIRE{#ENV{action}}
+
+
+      <ul>
+       [(#SAISIE{input, titre, obligatoire=oui, label=<:souscription_campagne:label_titre:>})]
+       [(#SAISIE{selection, type_objectif, obligatoire=oui,
+          label=<:souscription_campagne:label_type_objectif:>,
+          explication=<:souscription_campagne:explication_type_objectif:>,
+          datas=#ARRAY{souscriptiondon, Dons, souscriptionadhesion, Adhésions, souscriptionabonnement, Abonnements}})]
+       [(#SAISIE{input, objectif, obligatoire=oui, label=<:souscription_campagne:label_objectif:>, explication=<:souscription_campagne:explication_objectif:>})]
+       [(#SAISIE{input, objectif_initial, obligatoire=oui, label=<:souscription_campagne:label_objectif_initial:>, explication=<:souscription_campagne:explication_objectif_initial:>})]
+       [(#SAISIE{textarea, texte, label=<:souscription_campagne:label_description:>, inserer_barre=edition, rows=10})]
+      </ul>
+
+      <p class="boutons"><input type='submit' class='submit' value='<:souscription_campagne:confirmer_creation_campagne:>' /></p>
+    </div>
+  </form>
+  ]
+</div>
diff --git a/formulaires/editer_souscription_campagne.php b/formulaires/editer_souscription_campagne.php
new file mode 100644 (file)
index 0000000..37aa3ff
--- /dev/null
@@ -0,0 +1,97 @@
+<?php
+/**
+ * Gestion du formulaire de d'édition de souscription_campagne
+ *
+ * @plugin     Souscription
+ * @copyright  2013
+ * @author     Olivier Tétard
+ * @licence    GNU/GPL
+ * @package    SPIP\Souscription\Formulaires
+ */
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+include_spip('inc/actions');
+include_spip('inc/editer');
+
+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_charger_dist($id_souscription_campagne='new',
+                                                               $retour='',
+                                                               $lier_trad=0,
+                                                               $config_fonc='',
+                                                               $row=array(),
+                                                               $hidden='')
+{
+  return formulaires_editer_objet_charger('souscription_campagne',
+                                              $id_souscription_campagne,
+                                              '',
+                                              $lier_trad,
+                                              $retour,
+                                              $config_fonc,
+                                              $row,
+                                              $hidden);
+
+  /* return  array_merge($valeurs, array('objectif' => '0', */
+  /*                                     'objectif_initial' => '0', */
+  /*                                     'type_objectif' => 'souscriptiondon', */
+  /*                                     )); */
+}
+
+function formulaires_editer_souscription_campagne_verifier_dist($id_souscription_campagne='new',
+                                                                $retour='',
+                                                                $lier_trad=0,
+                                                                $config_fonc='',
+                                                                $row=array(),
+                                                                $hidden='')
+{
+  return formulaires_editer_objet_verifier('souscription_campagne',
+                                           $id_souscription_campagne,
+                                           array('titre',
+                                                 'objectif',
+                                                 'objectif_initial',
+                                                 'type_objectif',
+                                                 ));
+
+}
+
+function formulaires_editer_souscription_campagne_traiter_dist($id_souscription_campagne='new',
+                                                               $retour='',
+                                                               $lier_trad=0,
+                                                               $config_fonc='',
+                                                               $row=array(),
+                                                               $hidden='')
+{
+
+  $res = formulaires_editer_objet_traiter('souscription_campagne',
+                                          $id_souscription_campagne,
+                                          '',
+                                          $lier_trad,
+                                          $retour,
+                                          $config_fonc,
+                                          $row,
+                                          $hidden);
+
+  /* // Un lien a prendre en compte ? */
+  /* if ($associer_objet AND $id_souscription_campagne = $res['id_souscription_campagne']) { */
+  /*   list($objet, $id_objet) = explode('|', $associer_objet); */
+    
+  /*   if ($objet AND $id_objet AND autoriser('modifier', $objet, $id_objet)) { */
+  /*     include_spip('action/editer_liens'); */
+  /*     objet_associer(array('souscription_campagne' => $id_souscription_campagne), array($objet => $id_objet)); */
+  /*     if (isset($res['redirect'])) { */
+  /*       $res['redirect'] = parametre_url ($res['redirect'], "id_lien_ajoute", $id_souscription_campagne, '&'); */
+  /*     } */
+  /*   } */
+  /* } */
+
+  return $res;
+}
diff --git a/formulaires/souscription_don.html b/formulaires/souscription_don.html
new file mode 100644 (file)
index 0000000..c486f98
--- /dev/null
@@ -0,0 +1,47 @@
+<script language="JavaScript" type="text/javascript">
+$(document).ready(function() {
+    if($('input[type=radio][name=recu_fiscal]:checked').attr('value') == 'on') {
+        $("#don_bloc_fiscal").show();
+    }
+    else {
+        $("#don_bloc_fiscal").hide();
+    }
+
+    $("input[type=radio][name=recu_fiscal]").change(function() {
+        $("#don_bloc_fiscal").toggle();
+    });
+});
+</script>
+
+<div class='formulaire_spip formulaire_#FORM formulaire_#FORM-#ENV{id_souscription_don,nouveau}'>
+  [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV**{message_ok})</p>]
+  [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
+
+
+  [(#ENV{editable})
+  <form method='post' action='#ENV{action}'><div>
+      #ACTION_FORMULAIRE{#ENV{action}}
+      <ul>
+       [(#SAISIE{input, courriel, obligatoire=oui, label=<:souscription_don:label_courriel:>})]
+       [(#SAISIE{input, montant, obligatoire=oui, label=<:souscription_don:label_montant:>})]
+       [(#SAISIE{oui_non, recu_fiscal, label=<:souscription_don:label_recu_fiscal:>})]
+        [(#SAISIE{oui_non, envoyer_info, label=<:souscription_don:label_envoyer_info:> })]
+        [(#SAISIE{hidden, id_souscription_campagne})]
+      </ul>
+
+      <fieldset id="don_bloc_fiscal">
+        <legend>Informations complémentaires</legend>
+        <p>Les informations suivantes sont nécessaires (...)</p>
+        <ul>
+         [(#SAISIE{input, prenom, label=<:souscription_don:label_prenom:>})]
+          [(#SAISIE{input, nom, label=<:souscription_don:label_nom:>})]
+         [(#SAISIE{textarea, adresse, label=<:souscription_don:label_adresse:>, rows=3})]
+         [(#SAISIE{input, code_postal, label=<:souscription_don:label_code_postal:>})]
+         [(#SAISIE{input, ville, label=<:souscription_don:label_ville:>})]                    
+       </ul>
+      </fieldset>
+      <p class="boutons"><input type='submit' class='submit' value='<:souscription_don:confirmer_don:>' /></p>
+    </div>
+  </form>
+  ]
+</div>
diff --git a/formulaires/souscription_don.php b/formulaires/souscription_don.php
new file mode 100644 (file)
index 0000000..ac22b2e
--- /dev/null
@@ -0,0 +1,228 @@
+<?php
+/**
+ * Gestion du formulaire de d'édition de souscription_don
+ *
+ * @plugin     Souscription
+ * @copyright  2013
+ * @author     Olivier Tétard
+ * @licence    GNU/GPL
+ * @package    SPIP\Souscription\Formulaires
+ */
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+include_spip('inc/actions');
+include_spip('inc/editer');
+
+/**
+ * Identifier le formulaire en faisant abstraction des paramètres qui ne représentent pas l'objet edité
+ *
+ * @param int|string $id_souscription_don
+ *     Identifiant du souscription_don. 'new' pour un nouveau souscription_don.
+ * @param string $retour
+ *     URL de redirection après le traitement
+ * @param int $lier_trad
+ *     Identifiant éventuel d'un souscription_don source d'une traduction
+ * @param string $config_fonc
+ *     Nom de la fonction ajoutant des configurations particulières au formulaire
+ * @param array $row
+ *     Valeurs de la ligne SQL du souscription_don, si connu
+ * @param string $hidden
+ *     Contenu HTML ajouté en même temps que les champs cachés du formulaire.
+ * @return string
+ *     Hash du formulaire
+ */
+function formulaires_souscription_don_identifier_dist($id_souscription_don='new',
+                                                      $retour='',
+                                                      $lier_trad=0,
+                                                      $config_fonc='',
+                                                      $row=array(),
+                                                      $hidden='')
+{
+  return serialize(array(intval($id_souscription_don)));
+}
+
+/**
+ * Chargement du formulaire d'édition de souscription_don
+ *
+ * Déclarer les champs postés et y intégrer les valeurs par défaut
+ *
+ * @uses formulaires_editer_objet_charger()
+ *
+ * @param int|string $id_souscription_don
+ *     Identifiant du souscription_don. 'new' pour un nouveau souscription_don.
+ * @param string $retour
+ *     URL de redirection après le traitement
+ * @param int $lier_trad
+ *     Identifiant éventuel d'un souscription_don source d'une traduction
+ * @param string $config_fonc
+ *     Nom de la fonction ajoutant des configurations particulières au formulaire
+ * @param array $row
+ *     Valeurs de la ligne SQL du souscription_don, si connu
+ * @param string $hidden
+ *     Contenu HTML ajouté en même temps que les champs cachés du formulaire.
+ * @return array
+ *     Environnement du formulaire
+ */
+function formulaires_souscription_don_charger_dist($id_souscription_campagne) {
+
+  if(!verifier_campagne($id_souscription_campagne))
+    return false;
+
+  return array('montant' => '',
+               'courriel' => '',
+               'recu_fiscal' => '',
+               'envoyer_info' => 'on',
+               'prenom' => '',
+               'nom' => '',
+               'adresse' => '',
+               'code_postal' => '',
+               'ville' => '',
+               'id_souscription_campagne' => $id_souscription_campagne,
+               );
+}
+
+/**
+ * Vérifications du formulaire d'édition de souscription_don
+ *
+ * Vérifier les champs postés et signaler d'éventuelles erreurs
+ *
+ * @uses formulaires_editer_objet_verifier()
+ *
+ * @param int|string $id_souscription_don
+ *     Identifiant du souscription_don. 'new' pour un nouveau souscription_don.
+ * @param string $retour
+ *     URL de redirection après le traitement
+ * @param int $lier_trad
+ *     Identifiant éventuel d'un souscription_don source d'une traduction
+ * @param string $config_fonc
+ *     Nom de la fonction ajoutant des configurations particulières au formulaire
+ * @param array $row
+ *     Valeurs de la ligne SQL du souscription_don, si connu
+ * @param string $hidden
+ *     Contenu HTML ajouté en même temps que les champs cachés du formulaire.
+ * @return array
+ *     Tableau des erreurs
+ */
+function formulaires_souscription_don_verifier_dist($id_souscription_campagne)
+{
+  $erreurs = formulaires_editer_objet_verifier('souscription_don', 'new',
+                                               array('courriel',
+                                                     'montant',
+                                                     'id_souscription_campagne'));
+
+  if(!verifier_campagne($id_souscription_campagne)) {
+    $erreurs['message_erreur'] = "La campagne à laquelle est associée ce don est invalide";
+  }
+
+  if(_request('recu_fiscal')) {
+    foreach(array('prenom', 'nom', 'adresse', 'code_postal', 'ville') as $obligatoire) {
+      if(!_request($obligatoire)) {
+        $erreurs[$obligatoire] = 'Ce champ est obligatoire (reçu fiscal demandé)';
+      }
+    }
+  }
+
+  if(intval($id_souscription_campagne) != intval(_request('id_souscription_campagne')))
+    $erreurs['message_erreur'] = "Campagne invalide";
+
+  if ($e = _request('courriel') AND !email_valide($e))
+    $erreurs['courriel'] = _T('form_prop_indiquer_email');
+
+  if ($e = _request('montant') AND !(ctype_digit($e))) {
+    /* FIXME: vérifier que le montant est compris dans les bornes. */
+    $erreurs['montant'] = "Montant invalide";
+  }
+
+  return $erreurs;
+}
+
+/**
+ * Traitement du formulaire d'édition de souscription_don
+ *
+ * Traiter les champs postés
+ *
+ * @uses formulaires_editer_objet_traiter()
+ *
+ * @param int|string $id_souscription_don
+ *     Identifiant du souscription_don. 'new' pour un nouveau souscription_don.
+ * @param string $retour
+ *     URL de redirection après le traitement
+ * @param int $lier_trad
+ *     Identifiant éventuel d'un souscription_don source d'une traduction
+ * @param string $config_fonc
+ *     Nom de la fonction ajoutant des configurations particulières au formulaire
+ * @param array $row
+ *     Valeurs de la ligne SQL du souscription_don, si connu
+ * @param string $hidden
+ *     Contenu HTML ajouté en même temps que les champs cachés du formulaire.
+ * @return array
+ *     Retours des traitements
+ */
+function formulaires_souscription_don_traiter_dist($id_souscription_campagne)
+{
+
+  $lier_trad=0;
+  $config_fonc='';
+  $row=array();
+  $hidden='';
+
+  $ret = formulaires_editer_objet_traiter('souscription_don',
+                                          'new',
+                                          '',
+                                          $lier_trad,
+                                          $retour,
+                                          $config_fonc,
+                                          $row,
+                                          $hidden);
+
+  $redirect = "";
+  $row = sql_fetsel("transaction_hash,id_transaction", /* $select */
+                    "spip_transactions LEFT JOIN spip_souscription_dons USING(id_transaction)", /* $from */
+                    "id_souscription_don=".$ret['id_souscription_don']); /* $where */
+
+  if(!$row) {
+    $ret['message_erreur'] = "Echec creation de la transaction";
+  }
+  else {
+    $hash = $row['transaction_hash'];
+    $id_transaction = $row['id_transaction'];
+    $redirect = generer_url_public("payer", "id_transaction=$id_transaction&transaction_hash=$hash");
+    $ret['redirect'] = $redirect;
+  }
+
+  return $ret;
+}
+    
+/*   /\* return array('message_ok' => "Transaction $id_transaction cree", *\/ */
+/*   /\*              'editable' => true, *\/ */
+/*   /\*              'redirect' => $redirect); *\/ */
+
+/*   return formulaires_editer_objet_traiter('souscription_don', */
+/*                                           $id_souscription_don, */
+/*                                           '', */
+/*                                           $lier_trad, */
+/*                                           $redirect, */
+/*                                           $config_fonc, */
+/*                                           $row), */
+/*                                           $hidden); */
+/* } */
+/* else { */
+/*   return array('message_erreur' => "Echec creation de la transaction", */
+/*                'editable' => true); */
+/* } */
+
+
+function verifier_campagne($id_souscription_campagne) {
+  /* FIXME: vérifier que la campagne a bien le bon statut (ouverte, fermée, terminée, etc.) */
+
+  /* Vérification de l'existance de la *campagne*, de son *statut* et de la *concordance du type* */
+  if(intval($id_souscription_campagne)
+     AND $t = sql_getfetsel('type_objectif', 'spip_souscription_campagnes', 'id_souscription_campagne='.intval($id_souscription_campagne))
+     AND $t == 'souscriptiondon')
+    {
+      return true;
+    }
+
+  return false;
+}
diff --git a/lang/paquet-souscription_fr.php b/lang/paquet-souscription_fr.php
new file mode 100644 (file)
index 0000000..fa0cdc7
--- /dev/null
@@ -0,0 +1,14 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // S
+       'souscription_description' => 'Module de souscription pour Attac France et Basta!',
+       'souscription_nom' => 'Souscription',
+       'souscription_slogan' => '',
+);
+
+?>
\ No newline at end of file
diff --git a/lang/souscription_campagne_fr.php b/lang/souscription_campagne_fr.php
new file mode 100644 (file)
index 0000000..54df7fc
--- /dev/null
@@ -0,0 +1,39 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+
+$GLOBALS[$GLOBALS['idx_lang']] =
+  array(
+
+       // C
+        'confirmer_creation_campagne' => 'Enregistrer',
+
+        // E
+        'explication_objectif' => "Permet d'indiquer un objectif monétaire pour la campagne.<br/>Mettre 0 si la campagne n'a pas d'objectif.",
+        'explication_objectif_initial' => "Permet d'indiquer le niveau initial de la campagne. Ce champs peut être utilisé pour indiquer des dons, adhésions ou abonnements n'ayant pas été compatibilisées par le module de souscriptions.",
+        'explication_type_objectif' => "Type de l'objectif (influe le montant de l'objectif)",
+
+        // I
+       'info_1_souscription_campagne' => 'Une campagne',
+       'info_aucun_souscription_campagne' => 'Aucune campagne',
+       'info_nb_souscription_campagnes' => '@nb@ campagnes',
+       'icone_creer_souscription_campagne' => 'Créer une campagne',
+       'icone_modifier_souscription_campagne' => 'Modifier cette campagne',
+
+        // L
+        'label_description' => 'Description de la campagne',
+        'label_objectif_initial' => 'Niveau initial de la campagne',
+        'label_objectif' => 'Niveau de l\'objectif',
+        'label_titre' => 'Titre',
+        'label_type_objectif' => "Type d'objectif",
+        'label_montant_actuel' => "Niveau actuel de la campagne",
+
+        // T
+        'titre_souscription_campagnes' => 'Campagnes',
+        'titre_souscription_campagne' => 'Campagne',
+        'titre_logo_souscription_campagne' => 'Logo de cette campagne',
+);
+
+?>
diff --git a/lang/souscription_don_fr.php b/lang/souscription_don_fr.php
new file mode 100644 (file)
index 0000000..b76125a
--- /dev/null
@@ -0,0 +1,60 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // A
+       'ajouter_lien_souscription_don' => 'Ajouter ce don',
+
+       // C
+        'confirmer_don' => 'Faire un don',
+
+       // E
+       'explication_envoyer_info' => 'Souhaite recevoir des informations publiques',
+
+       // I
+       'icone_creer_souscription_don' => 'Créer un don',
+       'icone_modifier_souscription_don' => 'Modifier ce don',
+       'info_1_souscription_don' => 'Un don',
+       'info_aucun_souscription_don' => 'Aucun don',
+       'info_nb_souscription_dons' => '@nb@ dons',
+       'info_souscription_dons_auteur' => 'Les dons de cet auteur',
+
+       // L
+       'label_adresse' => 'Adresse',
+       'label_code_postal' => 'Code postal',
+       'label_courriel' => 'Courriel',
+       'label_montant' => 'Montant',
+       'label_envoyer_info' => 'Souhaite recevoir des informations publiques',
+       'label_id_transaction' => 'Identifiant de la transaction',
+       'label_nom' => 'Nom',
+       'label_prenom' => 'Prénom',
+       'label_recu_fiscal' => 'Envoyer un reçu fiscal',
+       'label_ville' => 'Ville',
+        'label_campagne' => 'Campagne',
+        'label_titre_campagne' => 'Titre de la campagne',
+        'label_exporter_payes' => 'Exporter les dons payés',
+        'label_exporter_tous' => 'Exporter tous les dons',
+
+       // R
+       'retirer_lien_souscription_don' => 'Retirer ce don',
+       'retirer_tous_liens_souscription_dons' => 'Retirer tous les dons',
+
+       // T
+       'texte_ajouter_souscription_don' => 'Ajouter un don',
+       'texte_changer_statut_souscription_don' => 'Ce don est :',
+       'texte_creer_associer_souscription_don' => 'Créer et associer un don',
+       'titre_langue_souscription_don' => 'Langue de ce don',
+       'titre_logo_souscription_don' => 'Logo de ce don',
+       'titre_souscription_don' => 'Don',
+       'titre_souscription_dons' => 'Dons',
+       'titre_souscription_dons_rubrique' => 'Dons de la rubrique',
+
+        // V
+        'voir_exporter' => "Exporter les dons",
+);
+
+?>
\ No newline at end of file
diff --git a/lang/souscription_don_fr.php~ b/lang/souscription_don_fr.php~
new file mode 100644 (file)
index 0000000..95afb56
--- /dev/null
@@ -0,0 +1,53 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // A
+       'ajouter_lien_souscription_don' => 'Ajouter ce don',
+
+       // C
+        'confirmer_don' => 'Faire un don',
+
+       // E
+       'explication_envoyer_info' => 'Souhaite recevoir des informations publiques',
+
+       // I
+       'icone_creer_souscription_don' => 'Créer un don',
+       'icone_modifier_souscription_don' => 'Modifier ce don',
+       'info_1_souscription_don' => 'Un don',
+       'info_aucun_souscription_don' => 'Aucun don',
+       'info_nb_souscription_dons' => '@nb@ dons',
+       'info_souscription_dons_auteur' => 'Les dons de cet auteur',
+
+       // L
+       'label_adresse' => 'Adresse',
+       'label_code_postal' => 'Code postal',
+       'label_courriel' => 'Courriel',
+       'label_montant' => 'Montant',
+       'label_envoyer_info' => 'Souhaite être informé',
+       'label_id_transaction' => 'Identifiant de la transaction',
+       'label_nom' => 'Nom',
+       'label_prenom' => 'Prénom',
+       'label_recu_fiscal' => 'Envoyer un reçu fiscal',
+       'label_ville' => 'Ville',
+
+       // R
+       'retirer_lien_souscription_don' => 'Retirer ce don',
+       'retirer_tous_liens_souscription_dons' => 'Retirer tous les dons',
+
+       // T
+       'texte_ajouter_souscription_don' => 'Ajouter un don',
+       'texte_changer_statut_souscription_don' => 'Ce don est :',
+       'texte_creer_associer_souscription_don' => 'Créer et associer un don',
+       'titre_langue_souscription_don' => 'Langue de ce don',
+       'titre_logo_souscription_don' => 'Logo de ce don',
+       'titre_souscription_don' => 'Don',
+       'titre_souscription_dons' => 'Dons',
+       'titre_souscription_dons_rubrique' => 'Dons de la rubrique',
+);
+
+?>
\ No newline at end of file
diff --git a/lang/souscription_fr.php b/lang/souscription_fr.php
new file mode 100644 (file)
index 0000000..ccde270
--- /dev/null
@@ -0,0 +1,25 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // S
+       'souscription_titre' => 'Souscription',
+
+       // C
+       'cfg_exemple' => 'Exemple',
+       'cfg_exemple_explication' => 'Explication de cet exemple',
+       'cfg_titre_parametrages' => 'Paramétrages',
+
+        // S
+        'titre_souscriptions' => 'Souscriptions',
+
+       // T
+       'titre_page_configurer_souscription' => 'Configuration des modules de souscription',
+        'titre_page_souscriptions_tous' => 'Liste des souscriptions',
+        'titre_types_souscriptions' => 'Types de souscriptions',
+);
+
+?>
\ No newline at end of file
diff --git a/modeles/faire-un-don.html b/modeles/faire-un-don.html
new file mode 100644 (file)
index 0000000..1cbe04c
--- /dev/null
@@ -0,0 +1,19 @@
+<BOUCLE_campagne(SOUSCRIPTION_CAMPAGNES){id_souscription_campagne=#ENV{campagne}}>
+
+<h2>#TITRE</h2>
+
+#TEXTE
+
+<BOUCLE_campagne_dons(SOUSCRIPTION_DONS transactions){id_souscription_campagne=#ID_SOUSCRIPTION_CAMPAGNE}{transactions.reglee=oui}{somme montant}>
+[(#SET{montant,#SOMME{montant}|plus{#OBJECTIF_INITIAL}})]
+[(#SET{pourcentage_objectif,#GET{montant}|div{#OBJECTIF}|mult{100}})]
+
+Avancement de la campagne : #GET{montant} € sur #OBJECTIF € !
+<div class="progress progress-striped active">
+  <div class="bar" style="width: #GET{pourcentage_objectif}%;">#GET{pourcentage_objectif} %</div>
+</div>
+</BOUCLE_campagne_dons>
+
+#FORMULAIRE_SOUSCRIPTION_DON{#ENV{campagne}}
+
+</BOUCLE_campagne>
diff --git a/modeles/faire-un-don.html~ b/modeles/faire-un-don.html~
new file mode 100644 (file)
index 0000000..9f970b6
--- /dev/null
@@ -0,0 +1,5 @@
+!!!
+
+
+#FORMULAIRE_SOUSCRIPTION_DON{1}
+
diff --git a/paquet.xml b/paquet.xml
new file mode 100644 (file)
index 0000000..86d3b40
--- /dev/null
@@ -0,0 +1,29 @@
+<paquet
+    prefix="souscription"
+    categorie="communication"
+    version="0.0.1"
+    etat="dev"
+    compatibilite="[3.0.5;3.0.*]"
+    logo=""
+    documentation=""
+    schema="0.0.3"
+    >
+
+  <nom>Souscription</nom>
+
+  <auteur lien='http://olivier.miskin.fr'>Olivier Tétard</auteur>
+
+  <licence>GNU/GPL</licence>
+  <necessite nom="saisies" compatibilite="[1.24.0;]" />
+  <necessite nom="bank" compatibilite="[2.2.1;]" />
+  <necessite nom="spip_bonux" compatibilite="[3.0.4;]" />
+
+  <pipeline nom="autoriser" inclure="souscription_autorisations.php" />
+
+  <pipeline nom="declarer_tables_objets_sql" inclure="base/souscription.php" />
+  <pipeline nom="declarer_tables_interfaces" inclure="base/souscription.php" />
+  <pipeline nom="optimiser_base_disparus" inclure="souscription_pipelines.php" />
+
+  <menu nom="souscription" titre="souscription:titre_souscriptions" parent="menu_activite" icone="images/souscription_don-16.png" action="souscriptions" />
+
+</paquet>
diff --git a/paquet.xml~ b/paquet.xml~
new file mode 100644 (file)
index 0000000..79bc459
--- /dev/null
@@ -0,0 +1,29 @@
+<paquet
+    prefix="souscription"
+    categorie="communication"
+    version="0.0.1"
+    etat="dev"
+    compatibilite="[3.0.5;3.0.*]"
+    logo=""
+    documentation=""
+    schema="0.0.1"
+    >
+
+  <nom>Souscription</nom>
+
+  <auteur lien='http://olivier.miskin.fr'>Olivier Tétard</auteur>
+
+  <licence>GNU/GPL</licence>
+  <necessite nom="saisies" compatibilite="[1.24.0;]" />
+  <necessite nom="bank" compatibilite="[2.2.1;]" />
+  <necessite nom="spip_bonux" compatibilite="[3.0.4;]" />
+
+  <!-- <pipeline nom="autoriser" inclure="souscription_autorisations.php" /> -->
+
+  <pipeline nom="declarer_tables_objets_sql" inclure="base/souscription.php" />
+  <pipeline nom="declarer_tables_interfaces" inclure="base/souscription.php" />
+  <pipeline nom="optimiser_base_disparus" inclure="souscription_pipelines.php" />
+
+  <menu nom="souscription" titre="souscription:titre_souscriptions" parent="menu_activite" icone="images/souscription_don-16.png" action="souscriptions" />
+
+</paquet>
diff --git a/prive/objets/contenu/souscription_campagne.html b/prive/objets/contenu/souscription_campagne.html
new file mode 100644 (file)
index 0000000..75eaf8d
--- /dev/null
@@ -0,0 +1,30 @@
+<BOUCLE_souscription_campagne(SOUSCRIPTION_CAMPAGNES souscription_campagnes_liens){id_souscription_campagne}>
+
+[<div class="champ contenu_type_objectif[ (#TYPE_OBJECTIF*|strlen|?{'',vide})]">
+       <label><:souscription_campagne:label_type_objectif:> : </label>
+       <span dir='#LANG_DIR' class='#EDIT{type_objectif} type_objectif'>(#TYPE_OBJECTIF)</span>
+</div>]
+
+[<div class="champ contenu_objectif_initial[ (#OBJECTIF_INITIAL*|strlen|?{'',vide})]">
+       <label><:souscription_campagne:label_objectif_initial:> : </label>
+       <span dir='#LANG_DIR' class='#EDIT{objectif_initial} objectif_initial'>(#OBJECTIF_INITIAL)</span>
+</div>]
+
+[<div class="champ contenu_objectif[ (#OBJECTIF*|strlen|?{'',vide})]">
+       <label><:souscription_campagne:label_objectif:> : </label>
+       <span dir='#LANG_DIR' class='#EDIT{objectif} objectif'>(#OBJECTIF)</span>
+</div>]
+
+<BOUCLE_souscription_campagne_montant(SOUSCRIPTION_DONS transactions){id_souscription_campagne=#ID_SOUSCRIPTION_CAMPAGNE}{transactions.reglee=oui}{somme montant}>
+[(#SET{montant,#SOMME{montant}|plus{#OBJECTIF_INITIAL}})]
+<div class="champ contenu_objectif">
+       <label><:souscription_campagne:label_montant_actuel:> : </label>
+       <span class='montant_actuel'>#GET{montant}</span>
+</div>
+</BOUCLE_souscription_campagne_montant>
+
+[<div class="champ contenu_texte[ (#TEXTE*|strlen|?{'',vide})]">
+       <span dir='#LANG_DIR' class='#EDIT{texte} texte'>(#TEXTE)</span>
+</div>]
+
+</BOUCLE_souscription_campagne>
diff --git a/prive/objets/contenu/souscription_campagne.html~ b/prive/objets/contenu/souscription_campagne.html~
new file mode 100644 (file)
index 0000000..6ce9121
--- /dev/null
@@ -0,0 +1,63 @@
+<BOUCLE_souscription_don(SOUSCRIPTION_DONS spip_transactions){id_souscription_don}>
+
+[<div class="champ contenu_courriel[ (#COURRIEL*|strlen|?{'',vide})]">
+       <label><:souscription_don:label_courriel:> : </label>
+       <span dir='#LANG_DIR' class='#EDIT{courriel} courriel'>(#COURRIEL)</span>
+</div>]
+
+[<div class="champ contenu_montant[ (#MONTANT*|strlen|?{'',vide})]">
+       <label><:souscription_don:label_montant:> : </label>
+       <span dir='#LANG_DIR' class='#EDIT{montant} montant'>(#MONTANT)</span>
+</div>]
+
+<div>
+
+  <ul>
+    [<li><strong>Identifiant</strong> : <span dir='#LANG_DIR' class='#EDIT{id_transaction} id_transaction'>(#ID_TRANSACTION)</li>]
+    [<li><strong>Statut</strong> : <span dir='#LANG_DIR' class='#EDIT{statut} statut'>(#STATUT)</span></li>]
+    [<li><strong>Mode de paiement</strong> : <span dir='#LANG_DIR' class='#EDIT{statut} statut'>(#MODE)</span></li>]
+    [<li><strong>Date de paiement</strong> : <span dir='#LANG_DIR' class='#EDIT{statut} statut'>(#DATE_PAIEMENT)</span></li>]
+    [<li><strong>Identifiant d'autorisation</strong> : <span dir='#LANG_DIR' class='#EDIT{statut} statut'>(#AUTORISATION_ID)</span></li>]
+  </ul>
+</div>
+
+<div style="border: 1px solid black ; margin: 1em; padding: 1em;">
+
+[<div class="champ contenu_nom[ (#NOM*|strlen|?{'',vide})]">
+       <label><:souscription_don:label_nom:> : </label>
+       <span dir='#LANG_DIR' class='#EDIT{nom} nom'>(#NOM)</span>
+</div>]
+
+[<div class="champ contenu_prenom[ (#PRENOM*|strlen|?{'',vide})]">
+       <label><:souscription_don:label_prenom:> : </label>
+       <span dir='#LANG_DIR' class='#EDIT{prenom} prenom'>(#PRENOM)</span>
+</div>]
+
+[<div class="champ contenu_code_postal[ (#CODE_POSTAL*|strlen|?{'',vide})]">
+       <label><:souscription_don:label_code_postal:> : </label>
+       <span dir='#LANG_DIR' class='#EDIT{code_postal} code_postal'>(#CODE_POSTAL)</span>
+</div>]
+
+[<div class="champ contenu_adresse[ (#ADRESSE*|strlen|?{'',vide})]">
+       <label><:souscription_don:label_adresse:> : </label>
+       <span dir='#LANG_DIR' class='#EDIT{adresse} adresse'>(#ADRESSE)</span>
+</div>]
+
+[<div class="champ contenu_ville[ (#VILLE*|strlen|?{'',vide})]">
+       <label><:souscription_don:label_ville:> : </label>
+       <span dir='#LANG_DIR' class='#EDIT{ville} ville'>(#VILLE)</span>
+</div>]
+
+[<div class="champ contenu_recu_fiscal[ (#RECU_FISCAL*|strlen|?{'',vide})]">
+       <label><:souscription_don:label_recu_fiscal:> : </label>
+       <span dir='#LANG_DIR' class='#EDIT{recu_fiscal} recu_fiscal'>(#RECU_FISCAL)</span>
+</div>]
+
+[<div class="champ contenu_envoyer_info[ (#ENVOYER_INFO*|strlen|?{'',vide})]">
+       <label><:souscription_don:label_envoyer_info:> : </label>
+       <span dir='#LANG_DIR' class='#EDIT{envoyer_info} envoyer_info'>(#ENVOYER_INFO)</span>
+</div>]
+
+</div>
+
+</BOUCLE_souscription_don>
diff --git a/prive/objets/contenu/souscription_don.html b/prive/objets/contenu/souscription_don.html
new file mode 100644 (file)
index 0000000..b33e07b
--- /dev/null
@@ -0,0 +1,67 @@
+<BOUCLE_souscription_don(SOUSCRIPTION_DONS transactions souscription_campagnes){id_souscription_don}>
+
+[<div class="champ contenu_courriel[ (#COURRIEL*|strlen|?{'',vide})]">
+       <label><:souscription_don:label_courriel:> : </label>
+       <span dir="#LANG_DIR" class="#EDIT{courriel} courriel">(#COURRIEL)</span>
+</div>]
+
+[<div class="champ contenu_titre_campagne[ (#TITRE*|strlen|?{'',vide})]">
+       <label><:souscription_don:label_titre_campagne:> : </label>
+       <span dir="#LANG_DIR" class="#EDIT{titre} titre">(#TITRE)</span>
+</div>]
+
+[<div class="champ contenu_montant[ (#MONTANT*|strlen|?{'',vide})]">
+       <label><:souscription_don:label_montant:> : </label>
+       <span dir="#LANG_DIR" class="#EDIT{montant} montant">(#MONTANT) €</span>
+</div>]
+
+<div>
+  <ul>
+    [<li><strong>Identifiant de la transaction</strong> : <span dir="#LANG_DIR" class="#EDIT{id_transaction} id_transaction">(#ID_TRANSACTION)</li>]
+    [<li><strong>Statut</strong> : <span dir="#LANG_DIR" class="#EDIT{statut} statut">(#STATUT)</span></li>]
+    [<li><strong>Mode de paiement</strong> : <span dir="#LANG_DIR" class="#EDIT{statut} statut">(#MODE)</span></li>]
+    [<li><strong>Date de paiement</strong> : <span dir="#LANG_DIR" class="#EDIT{statut} statut">(#DATE_PAIEMENT)</span></li>]
+    [<li><strong>Identifiant d'autorisation</strong> : <span dir="#LANG_DIR" class="#EDIT{statut} statut">(#AUTORISATION_ID)</span></li>]
+  </ul>
+</div>
+
+<div style="border: 1px solid black ; margin: 1em; padding: 1em;">
+
+[<div class="champ contenu_nom[ (#NOM*|strlen|?{'',vide})]">
+       <label><:souscription_don:label_nom:> : </label>
+       <span dir="#LANG_DIR" class="#EDIT{nom} nom">(#NOM)</span>
+</div>]
+
+[<div class="champ contenu_prenom[ (#PRENOM*|strlen|?{'',vide})]">
+       <label><:souscription_don:label_prenom:> : </label>
+       <span dir="#LANG_DIR" class="#EDIT{prenom} prenom">(#PRENOM)</span>
+</div>]
+
+[<div class="champ contenu_code_postal[ (#CODE_POSTAL*|strlen|?{'',vide})]">
+       <label><:souscription_don:label_code_postal:> : </label>
+       <span dir="#LANG_DIR" class="#EDIT{code_postal} code_postal">(#CODE_POSTAL)</span>
+</div>]
+
+[<div class="champ contenu_adresse[ (#ADRESSE*|strlen|?{'',vide})]">
+       <label><:souscription_don:label_adresse:> : </label>
+       <span dir="#LANG_DIR" class="#EDIT{adresse} adresse">(#ADRESSE)</span>
+</div>]
+
+[<div class="champ contenu_ville[ (#VILLE*|strlen|?{'',vide})]">
+       <label><:souscription_don:label_ville:> : </label>
+       <span dir="#LANG_DIR" class="#EDIT{ville} ville">(#VILLE)</span>
+</div>]
+
+[<div class="champ contenu_recu_fiscal">
+       <label><:souscription_don:label_recu_fiscal:> : </label>
+       <span dir="#LANG_DIR" class="#EDIT{recu_fiscal} recu_fiscal">(#RECU_FISCAL|?{"oui","non"})</span>
+</div>]
+
+[<div class="champ contenu_envoyer_info">
+       <label><:souscription_don:label_envoyer_info:> : </label>
+       <span dir="#LANG_DIR" class="#EDIT{envoyer_info} envoyer_info">(#ENVOYER_INFO|?{"oui","non"})</span>
+</div>]
+
+</div>
+
+</BOUCLE_souscription_don>
diff --git a/prive/objets/contenu/souscription_don.html~ b/prive/objets/contenu/souscription_don.html~
new file mode 100644 (file)
index 0000000..4b19536
--- /dev/null
@@ -0,0 +1,63 @@
+<BOUCLE_souscription_don(SOUSCRIPTION_DONS){id_souscription_don}>
+
+[<div class="champ contenu_courriel[ (#COURRIEL*|strlen|?{'',vide})]">
+       <label><:souscription_don:label_courriel:> : </label>
+       <span dir='#LANG_DIR' class='#EDIT{courriel} courriel'>(#COURRIEL)</span>
+</div>]
+
+[<div class="champ contenu_montant[ (#MONTANT*|strlen|?{'',vide})]">
+       <label><:souscription_don:label_montant:> : </label>
+       <span dir='#LANG_DIR' class='#EDIT{montant} montant'>(#MONTANT)</span>
+</div>]
+
+<div>
+
+  <ul>
+    [<li><strong>Identifiant</strong> : <span dir='#LANG_DIR' class='#EDIT{id_transaction} id_transaction'>(#ID_TRANSACTION)</li>]
+    [<li><strong>Statut</strong> : <span dir='#LANG_DIR' class='#EDIT{statut} statut'>(#STATUT)</span></li>]
+    [<li><strong>Mode de paiement</strong> : <span dir='#LANG_DIR' class='#EDIT{statut} statut'>(#MODE)</span></li>]
+    [<li><strong>Date de paiement</strong> : <span dir='#LANG_DIR' class='#EDIT{statut} statut'>(#DATE_PAIEMENT)</span></li>]
+    [<li><strong>Identifiant d'autorisation</strong> : <span dir='#LANG_DIR' class='#EDIT{statut} statut'>(#AUTORISATION_ID)</span></li>]
+  </ul>
+</div>
+
+<div style="border: 1px solid black ; margin: 1em; padding: 1em;">
+
+[<div class="champ contenu_nom[ (#NOM*|strlen|?{'',vide})]">
+       <label><:souscription_don:label_nom:> : </label>
+       <span dir='#LANG_DIR' class='#EDIT{nom} nom'>(#NOM)</span>
+</div>]
+
+[<div class="champ contenu_prenom[ (#PRENOM*|strlen|?{'',vide})]">
+       <label><:souscription_don:label_prenom:> : </label>
+       <span dir='#LANG_DIR' class='#EDIT{prenom} prenom'>(#PRENOM)</span>
+</div>]
+
+[<div class="champ contenu_code_postal[ (#CODE_POSTAL*|strlen|?{'',vide})]">
+       <label><:souscription_don:label_code_postal:> : </label>
+       <span dir='#LANG_DIR' class='#EDIT{code_postal} code_postal'>(#CODE_POSTAL)</span>
+</div>]
+
+[<div class="champ contenu_adresse[ (#ADRESSE*|strlen|?{'',vide})]">
+       <label><:souscription_don:label_adresse:> : </label>
+       <span dir='#LANG_DIR' class='#EDIT{adresse} adresse'>(#ADRESSE)</span>
+</div>]
+
+[<div class="champ contenu_ville[ (#VILLE*|strlen|?{'',vide})]">
+       <label><:souscription_don:label_ville:> : </label>
+       <span dir='#LANG_DIR' class='#EDIT{ville} ville'>(#VILLE)</span>
+</div>]
+
+[<div class="champ contenu_recu_fiscal[ (#RECU_FISCAL*|strlen|?{'',vide})]">
+       <label><:souscription_don:label_recu_fiscal:> : </label>
+       <span dir='#LANG_DIR' class='#EDIT{recu_fiscal} recu_fiscal'>(#RECU_FISCAL)</span>
+</div>]
+
+[<div class="champ contenu_envoyer_info[ (#ENVOYER_INFO*|strlen|?{'',vide})]">
+       <label><:souscription_don:label_envoyer_info:> : </label>
+       <span dir='#LANG_DIR' class='#EDIT{envoyer_info} envoyer_info'>(#ENVOYER_INFO)</span>
+</div>]
+
+</div>
+
+</BOUCLE_souscription_don>
diff --git a/prive/objets/infos/souscription_don.html b/prive/objets/infos/souscription_don.html
new file mode 100644 (file)
index 0000000..56fdbeb
--- /dev/null
@@ -0,0 +1,7 @@
+<BOUCLE_souscription_don(SOUSCRIPTION_DONS){id_souscription_don=#ENV{id}}>
+<div class='infos'>
+[(#SET{texte_objet,<:souscription_don:titre_souscription_don:>})]
+<div class='numero'><:titre_cadre_numero_objet{objet=#GET{texte_objet}}:><p>#ID_SOUSCRIPTION_DON</p></div>
+
+</div>
+</BOUCLE_souscription_don>
\ No newline at end of file
diff --git a/prive/objets/liste/souscription_dons.html b/prive/objets/liste/souscription_dons.html
new file mode 100644 (file)
index 0000000..4dc65f8
--- /dev/null
@@ -0,0 +1,46 @@
+[(#SET{defaut_tri,#ARRAY{
+       courriel,1, 
+        nom,-1,
+       date_souscription,-1, 
+       id_souscription_don,1,
+       points,-1
+}})]<B_liste_souscription_dons>
+#ANCRE_PAGINATION
+<div class="liste-objets souscription_dons">
+<table class="spip liste">
+       [<caption><strong class="caption">(#ENV*{titre,#GRAND_TOTAL|singulier_ou_pluriel{souscription_don:info_1_souscription_don,souscription_don:info_nb_souscription_dons}})</strong></caption>]
+       <thead>
+               <tr class="first_row">
+                       <th class="courriel" scope="col">[(#TRI{courriel,<:souscription_don:label_courriel:>,ajax})]</th>
+                       <th class="montant" scope="col">[(#TRI{montant,<:souscription_don:label_montant:>,ajax})]</th>
+                       <th class="prenom" scope="col">[(#TRI{prenom,<:souscription_don:label_prenom:>,ajax})]</th>
+                       <th class="nom" scope="col">[(#TRI{nom,<:souscription_don:label_nom:>,ajax})]</th>
+                       <th class="date" scope="col">[(#TRI{date_souscription,<:date:>,ajax})]</th> 
+                       <th class="statut" scope="col">[(#TRI{souscription_statut,<:statut:>,ajax})]</th> 
+                       <th class="id_souscription_campagne" scope="col">[(#TRI{id_souscription_campagne,<:souscription_don:label_campagne:>,ajax})]</th>
+                       <th class="id" scope="col">[(#TRI{id_souscription_don,<:info_numero_abbreviation:>,ajax})]</th>
+               </tr>
+       </thead>
+       <tbody>
+       <BOUCLE_liste_souscription_dons(SOUSCRIPTION_DONS transactions){id_transaction?}{id_mot?}{id_auteur?}{where?}{recherche?}{tri #ENV{par,num nom},#GET{defaut_tri}}{par nom}{pagination #ENV{nb,10}}>
+               <tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]">
+                       <td class="courriel principale"><a href="[(#ID_SOUSCRIPTION_DON|generer_url_entite{souscription_don})]" title="<:info_numero_abbreviation|attribut_html:> #ID_SOUSCRIPTION_DON">[(#RANG). ]#COURRIEL</a></td>
+                       <td class="montant secondaire">[(#MONTANT) €]</td> 
+                       <td class="prenom secondaire">[(#PRENOM)]</td> 
+                       <td class="nom secondaire">[(#NOM)]</td> 
+                       <td class="date secondaire">[(#DATE_SOUSCRIPTION|affdate_jourcourt)]</td> 
+                       <td class="statut secondaire">[(#STATUT)]</td> 
+                       <td class="id_souscription_campagne" scope="col">[(#ID_SOUSCRIPTION_CAMPAGNE)]</td>
+                       <td class="id">[(#AUTORISER{modifier,souscription_don,#ID_SOUSCRIPTION_DON}|?{
+                               <a href="[(#URL_ECRIRE{souscription_don_edit,id_souscription_don=#ID_SOUSCRIPTION_DON})]">#ID_SOUSCRIPTION_DON</a>,
+                               #ID_SOUSCRIPTION_DON
+                       })]</td>
+               </tr>
+       </BOUCLE_liste_souscription_dons>
+       </tbody>
+</table>
+[<p class="pagination">(#PAGINATION{prive})</p>]
+</div>
+</B_liste_souscription_dons>[
+<div class="liste-objets souscription_dons caption-wrap"><strong class="caption">(#ENV*{sinon,''})</strong></div>
+]<//B_liste_souscription_dons>
diff --git a/prive/objets/liste/souscription_dons.html~ b/prive/objets/liste/souscription_dons.html~
new file mode 100644 (file)
index 0000000..68cd56f
--- /dev/null
@@ -0,0 +1,43 @@
+[(#SET{defaut_tri,#ARRAY{
+       nom,1, 
+       date_souscription,-1, 
+       id_souscription_don,1,
+       points,-1
+}})]<B_liste_souscription_dons>
+#ANCRE_PAGINATION
+<div class="liste-objets souscription_dons">
+<table class='spip liste'>
+       [<caption><strong class="caption">(#ENV*{titre,#GRAND_TOTAL|singulier_ou_pluriel{souscription_don:info_1_souscription_don,souscription_don:info_nb_souscription_dons}})</strong></caption>]
+       <thead>
+               <tr class='first_row'>
+                       <th class="courriel" scope="col">[(#TRI{courriel,<:souscription_don:label_courriel:>,ajax})]</th>
+                       <th class="montant" scope="col">[(#TRI{montant,<:souscription_don:label_montant:>,ajax})]</th>
+                       <th class="prenom" scope="col">[(#TRI{prenom,<:souscription_don:label_prenom:>,ajax})]</th>
+                       <th class="nom" scope="col">[(#TRI{nom,<:souscription_don:label_nom:>,ajax})]</th>
+                       <th class="date" scope="col">[(#TRI{date_souscription,<:date:>,ajax})]</th> 
+                       <th class="statut" scope="col">[(#TRI{souscription_statut,<:statut:>,ajax})]</th> 
+                       <th class="id" scope="col">[(#TRI{id_souscription_don,<:info_numero_abbreviation:>,ajax})]</th>
+               </tr>
+       </thead>
+       <tbody>
+       <BOUCLE_liste_souscription_dons(SOUSCRIPTION_DONS){id_transaction?}{id_mot?}{id_auteur?}{where?}{recherche?}{tri #ENV{par,num nom},#GET{defaut_tri}}{par nom}{pagination #ENV{nb,10}}>
+               <tr class='[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]'>
+                       <td class="courriel principale"><a href="[(#ID_SOUSCRIPTION_DON|generer_url_entite{souscription_don})]" title="<:info_numero_abbreviation|attribut_html:> #ID_SOUSCRIPTION_DON">[(#RANG). ]#COURRIEL</a></td>
+                       <td class="montant secondaire">[(#MONTANT) €]</td> 
+                       <td class="prenom secondaire">[(#PRENOM)]</td> 
+                       <td class="nom secondaire">[(#NOM)]</td> 
+                       <td class="date secondaire">[(#DATE_SOUSCRIPTION|affdate_jourcourt)]</td> 
+                       <td class="statut secondaire">[(#STATUT)]</td> 
+                       <td class="id">[(#AUTORISER{modifier,souscription_don,#ID_SOUSCRIPTION_DON}|?{
+                               <a href="[(#URL_ECRIRE{souscription_don_edit,id_souscription_don=#ID_SOUSCRIPTION_DON})]">#ID_SOUSCRIPTION_DON</a>,
+                               #ID_SOUSCRIPTION_DON
+                       })] -- #OBJET </td>
+               </tr>
+       </BOUCLE_liste_souscription_dons>
+       </tbody>
+</table>
+[<p class='pagination'>(#PAGINATION{prive})</p>]
+</div>
+</B_liste_souscription_dons>[
+<div class="liste-objets souscription_dons caption-wrap"><strong class="caption">(#ENV*{sinon,''})</strong></div>
+]<//B_liste_souscription_dons>
diff --git a/prive/squelettes/contenu/configurer_souscription.html b/prive/squelettes/contenu/configurer_souscription.html
new file mode 100644 (file)
index 0000000..603beff
--- /dev/null
@@ -0,0 +1,7 @@
+[(#AUTORISER{configurer,_souscription}|sinon_interdire_acces)]
+
+<h1 class="grostitre"><:souscription:titre_page_configurer_souscription:></h1>
+
+<div class="ajax">
+       #FORMULAIRE_CONFIGURER_SOUSCRIPTION
+</div>
\ No newline at end of file
diff --git a/prive/squelettes/contenu/souscription_don.html b/prive/squelettes/contenu/souscription_don.html
new file mode 100644 (file)
index 0000000..d7bc036
--- /dev/null
@@ -0,0 +1,42 @@
+[(#AUTORISER{voir,souscription_don,#ID_SOUSCRIPTION_DON}|sinon_interdire_acces)]
+<BOUCLE_souscription_don(SOUSCRIPTION_DONS){id_souscription_don}{si #ENV{exec}|=={souscription_don}}>
+[(#BOITE_OUVRIR{[
+       [(#AUTORISER{modifier,souscription_don,#ID_SOUSCRIPTION_DON})
+               [(#ID_SOUSCRIPTION_DON|afficher_qui_edite{souscription_don}|non)
+                       [(#URL_ECRIRE{souscription_don_edit,id_souscription_don=#ID_SOUSCRIPTION_DON}|icone_verticale{<:souscription_don:icone_modifier_souscription_don:>,souscription_don,edit,right ajax preload})]
+               ]
+               [(#ID_SOUSCRIPTION_DON|afficher_qui_edite{souscription_don}|oui)
+                       [(#URL_ECRIRE{souscription_don_edit,id_souscription_don=#ID_SOUSCRIPTION_DON}|icone_verticale{#ID_SOUSCRIPTION_DON|afficher_qui_edite{souscription_don},warning-24,'',right edition_deja ajax preload})]
+               ]
+       ]
+
+       <h1>#PRENOM (#NOM)</h1>
+
+],simple fiche_objet})]
+
+<!--affiche_milieu-->
+
+<div id="wysiwyg">
+<INCLURE{fond=prive/objets/contenu/souscription_don,id=#ID_SOUSCRIPTION_DON,id_souscription_don=#ID_SOUSCRIPTION_DON,virtuel=oui,ajax=wysiwyg,wysiwyg=1}>
+</div>
+
+<div class="nettoyeur"></div>
+
+[(#AUTORISER{modifier,souscription_don,#ID_SOUSCRIPTION_DON})
+       [(#ID_SOUSCRIPTION_DON|afficher_qui_edite{souscription_don}|non)
+               [(#URL_ECRIRE{souscription_don_edit,id_souscription_don=#ID_SOUSCRIPTION_DON}|icone_verticale{<:souscription_don:icone_modifier_souscription_don:>,souscription_don,edit,right ajax preload})]
+       ]
+       [(#ID_SOUSCRIPTION_DON|afficher_qui_edite{souscription_don}|oui)
+               [(#URL_ECRIRE{souscription_don_edit,id_souscription_don=#ID_SOUSCRIPTION_DON}|icone_verticale{#ID_SOUSCRIPTION_DON|afficher_qui_edite{souscription_don},warning-24,'',right edition_deja ajax preload})]
+       ]
+]
+
+#PIPELINE{afficher_complement_objet,#ARRAY{args,#ARRAY{type,souscription_don,id,#ID_SOUSCRIPTION_DON},data,'<div class="nettoyeur"></div>'}}
+
+#BOITE_FERMER
+[(#EVAL{_AJAX}|oui)
+       <script type="text/javascript">/*<!\\[CDATA\\[*/reloadExecPage('#ENV{exec}','#navigation,#chemin');/*\\]\\]>*/</script>
+]
+</BOUCLE_souscription_don>
+[(#ENV**{exec}|=={souscription_don_edit}|?{#INCLURE{fond=prive/squelettes/contenu/souscription_don_edit,redirect='',env,retourajax=oui},#REM|sinon_interdire_acces})]
+<//B_souscription_don>
diff --git a/prive/squelettes/contenu/souscription_dons.html b/prive/squelettes/contenu/souscription_dons.html
new file mode 100644 (file)
index 0000000..f54eab1
--- /dev/null
@@ -0,0 +1,4 @@
+#FORMULAIRE_RECHERCHE_ECRIRE{#SELF,ajax}
+<div class="nettoyeur"></div>
+
+<INCLURE{fond=prive/objets/liste/souscription_dons, par=nom, env, ajax, sinon=<:souscription_don:info_aucun_souscription_don:>}>
diff --git a/prive/squelettes/contenu/souscriptions.html b/prive/squelettes/contenu/souscriptions.html
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/prive/squelettes/extra/souscription_dons.html b/prive/squelettes/extra/souscription_dons.html
new file mode 100644 (file)
index 0000000..0e5d444
--- /dev/null
@@ -0,0 +1,6 @@
+[(#BOITE_OUVRIR{<:souscription_don:voir_exporter:>,'simple','section'})]
+<ul>
+  <li><a href="[(#URL_ACTION_AUTEUR{exporter_dons_payes})]"><:souscription_don:label_exporter_payes:></a></li>
+  <li><a href="[(#URL_ACTION_AUTEUR{exporter_dons_tous})]"><:souscription_don:label_exporter_tous:></a></li>
+</ul>
+#BOITE_FERMER
diff --git a/prive/squelettes/extra/souscription_dons.html~ b/prive/squelettes/extra/souscription_dons.html~
new file mode 100644 (file)
index 0000000..4b17590
--- /dev/null
@@ -0,0 +1,2 @@
+
+dffgdffg!
diff --git a/prive/squelettes/navigation/souscription_abonnements.html b/prive/squelettes/navigation/souscription_abonnements.html
new file mode 100644 (file)
index 0000000..8256075
--- /dev/null
@@ -0,0 +1,9 @@
+<div class="liste_item sous_navigation">
+  <h4><:souscription:titre_types_souscriptions:></h4>
+  <ul class='liste-items'>
+    <li class="item"><a href="#URL_ECRIRE{souscription_campagnes}">Campagnes</a></li>
+    <li class="item"><a href="#URL_ECRIRE{souscription_dons}">Dons</a></li>
+    <li class="item"><a href="#URL_ECRIRE{souscription_adhesions}">Adhésions</a></li>
+    <li class="item"><a href="#URL_ECRIRE{souscription_abonnements}">Abonnements</a></li>
+  </ul>
+</div>
diff --git a/prive/squelettes/navigation/souscription_adhesions.html b/prive/squelettes/navigation/souscription_adhesions.html
new file mode 100644 (file)
index 0000000..8256075
--- /dev/null
@@ -0,0 +1,9 @@
+<div class="liste_item sous_navigation">
+  <h4><:souscription:titre_types_souscriptions:></h4>
+  <ul class='liste-items'>
+    <li class="item"><a href="#URL_ECRIRE{souscription_campagnes}">Campagnes</a></li>
+    <li class="item"><a href="#URL_ECRIRE{souscription_dons}">Dons</a></li>
+    <li class="item"><a href="#URL_ECRIRE{souscription_adhesions}">Adhésions</a></li>
+    <li class="item"><a href="#URL_ECRIRE{souscription_abonnements}">Abonnements</a></li>
+  </ul>
+</div>
diff --git a/prive/squelettes/navigation/souscription_campagnes.html b/prive/squelettes/navigation/souscription_campagnes.html
new file mode 100644 (file)
index 0000000..8256075
--- /dev/null
@@ -0,0 +1,9 @@
+<div class="liste_item sous_navigation">
+  <h4><:souscription:titre_types_souscriptions:></h4>
+  <ul class='liste-items'>
+    <li class="item"><a href="#URL_ECRIRE{souscription_campagnes}">Campagnes</a></li>
+    <li class="item"><a href="#URL_ECRIRE{souscription_dons}">Dons</a></li>
+    <li class="item"><a href="#URL_ECRIRE{souscription_adhesions}">Adhésions</a></li>
+    <li class="item"><a href="#URL_ECRIRE{souscription_abonnements}">Abonnements</a></li>
+  </ul>
+</div>
diff --git a/prive/squelettes/navigation/souscription_dons.html b/prive/squelettes/navigation/souscription_dons.html
new file mode 100644 (file)
index 0000000..8256075
--- /dev/null
@@ -0,0 +1,9 @@
+<div class="liste_item sous_navigation">
+  <h4><:souscription:titre_types_souscriptions:></h4>
+  <ul class='liste-items'>
+    <li class="item"><a href="#URL_ECRIRE{souscription_campagnes}">Campagnes</a></li>
+    <li class="item"><a href="#URL_ECRIRE{souscription_dons}">Dons</a></li>
+    <li class="item"><a href="#URL_ECRIRE{souscription_adhesions}">Adhésions</a></li>
+    <li class="item"><a href="#URL_ECRIRE{souscription_abonnements}">Abonnements</a></li>
+  </ul>
+</div>
diff --git a/prive/squelettes/navigation/souscriptions.html b/prive/squelettes/navigation/souscriptions.html
new file mode 100644 (file)
index 0000000..8256075
--- /dev/null
@@ -0,0 +1,9 @@
+<div class="liste_item sous_navigation">
+  <h4><:souscription:titre_types_souscriptions:></h4>
+  <ul class='liste-items'>
+    <li class="item"><a href="#URL_ECRIRE{souscription_campagnes}">Campagnes</a></li>
+    <li class="item"><a href="#URL_ECRIRE{souscription_dons}">Dons</a></li>
+    <li class="item"><a href="#URL_ECRIRE{souscription_adhesions}">Adhésions</a></li>
+    <li class="item"><a href="#URL_ECRIRE{souscription_abonnements}">Abonnements</a></li>
+  </ul>
+</div>
diff --git a/saisies-vues/souscription_dons.html b/saisies-vues/souscription_dons.html
new file mode 100644 (file)
index 0000000..29f2458
--- /dev/null
@@ -0,0 +1,20 @@
+<BOUCLE_test_multiple(CONDITION){si #ENV{multiple}|=={on}|oui}>
+       [(#SET{valeur,[(#ENV*{valeur}|is_array|?{[(#ENV*{valeur})],[(#ENV*{valeur}|explode{','})]})]})]
+       <B_souscription_dons_selectionnes>
+       <ul>
+       <BOUCLE_souscription_dons_selectionnes(SOUSCRIPTION_DONS){id_souscription_don IN #GET*{valeur}}
+               {par num nom, nom}{tout}>
+               <li class="choix">#NOM (#ID_SOUSCRIPTION_DON)</li>
+       </BOUCLE_souscription_dons_selectionnes>
+       </ul>
+       </B_souscription_dons_selectionnes>
+       [(#ENV*{sans_reponse}|propre)]
+       <//B_souscription_dons_selectionnes>
+</BOUCLE_test_multiple>
+       <BOUCLE_souscription_don_selectionne(SOUSCRIPTION_DONS){id_souscription_don=#ENV{valeur}}
+               {par num nom, nom}{tout}>
+               <p>#NOM (#ID_SOUSCRIPTION_DON)</p>
+       </BOUCLE_souscription_don_selectionne>
+       [(#ENV*{sans_reponse}|propre)]
+       <//B_souscription_don_selectionne>
+<//B_test_multiple>
\ No newline at end of file
diff --git a/saisies/souscription_dons.html b/saisies/souscription_dons.html
new file mode 100644 (file)
index 0000000..39a9520
--- /dev/null
@@ -0,0 +1,13 @@
+[(#ENV{multiple}|oui)
+       [(#SET{valeur,[(#ENV*{valeur}|is_array|?{[(#ENV*{valeur})],[(#ENV*{valeur}|explode{','})]})]})]
+]
+<select name="#ENV{nom}[(#ENV{multiple}|?{\[\]})]" id="champ_[(#ENV{nom}|saisie_nom2classe)]"[ class="(#ENV{class})"][(#ENV{multiple}|oui) multiple="multiple" size="#ENV{size,10}"][ disabled="(#ENV{disable})"]>
+       [(#ENV{cacher_option_intro}|ou{#ENV{multiple}}|non)
+               <option value="">[(#ENV{option_intro})]</option>]
+       <BOUCLE_souscription_dons(SOUSCRIPTION_DONS){par num nom, nom}{id_transaction?}{recherche?}{tout}>
+               [(#ENV{multiple}|oui)
+               <option value="#ID_SOUSCRIPTION_DON"[(#ID_SOUSCRIPTION_DON|in_array{#ENV{valeur_forcee,#GET{valeur,#ENV{defaut,#ARRAY}}}}|oui) selected="selected"]>#NOM</option>]
+               [(#ENV{multiple}|non)
+               <option value="#ID_SOUSCRIPTION_DON"[(#ID_SOUSCRIPTION_DON|=={#ENV{valeur_forcee,#ENV{valeur,#ENV{defaut}}}}|oui) selected="selected"]>#NOM</option>]
+       </BOUCLE_souscription_dons>
+</select>
\ No newline at end of file
diff --git a/souscription_administrations.php b/souscription_administrations.php
new file mode 100644 (file)
index 0000000..6cf3aae
--- /dev/null
@@ -0,0 +1,57 @@
+<?php
+/**
+ * Fichier gérant l'installation et désinstallation du plugin Souscription
+ *
+ * @plugin     Souscription
+ * @copyright  2013
+ * @author     Olivier Tétard
+ * @licence    GNU/GPL
+ * @package    SPIP\Souscription\Installation
+ */
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+
+/**
+ * Fonction d'installation et de mise à jour du plugin Souscription.
+ *
+ * @param string $nom_meta_base_version
+ *     Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
+ * @param string $version_cible
+ *     Version du schéma de données dans ce plugin (déclaré dans paquet.xml)
+ * @return void
+ **/
+function souscription_upgrade($nom_meta_base_version, $version_cible) {
+  $maj = array();
+
+  $maj['create'] = array(array('maj_tables',
+                               array('spip_souscription_dons',
+                                     'spip_souscription_campagnes',
+                                     )));
+  $maj['0.0.3'] = array(array('sql_alter', "TABLE spip_souscription_dons CHANGE envoyer_info envoyer_info VARCHAR(3) NOT NULL DEFAULT ''"),
+                        array('sql_alter', "TABLE spip_souscription_dons CHANGE recu_fiscal recu_fiscal VARCHAR(3) NOT NULL DEFAULT ''"));
+
+  include_spip('base/upgrade');
+  maj_plugin($nom_meta_base_version, $version_cible, $maj);
+}
+
+/**
+ * Fonction de désinstallation du plugin Souscription.
+ *
+ * @param string $nom_meta_base_version
+ *     Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
+ * @return void
+ **/
+function souscription_vider_tables($nom_meta_base_version) {
+
+  sql_drop_table("spip_souscription_dons");
+  sql_drop_table("spip_souscription_campagnes");
+
+  /* Nettoyer les versionnages et forums */
+  sql_delete("spip_versions",              sql_in("objet", array('souscription_don')));
+  sql_delete("spip_versions_fragments",    sql_in("objet", array('souscription_don')));
+  sql_delete("spip_forum",                 sql_in("objet", array('souscription_don')));
+
+  effacer_meta($nom_meta_base_version);
+}
+?>
diff --git a/souscription_administrations.php~ b/souscription_administrations.php~
new file mode 100644 (file)
index 0000000..fef56dc
--- /dev/null
@@ -0,0 +1,53 @@
+<?php
+/**
+ * Fichier gérant l'installation et désinstallation du plugin Souscription
+ *
+ * @plugin     Souscription
+ * @copyright  2013
+ * @author     Olivier Tétard
+ * @licence    GNU/GPL
+ * @package    SPIP\Souscription\Installation
+ */
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+
+/**
+ * Fonction d'installation et de mise à jour du plugin Souscription.
+ *
+ * @param string $nom_meta_base_version
+ *     Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
+ * @param string $version_cible
+ *     Version du schéma de données dans ce plugin (déclaré dans paquet.xml)
+ * @return void
+ **/
+function souscription_upgrade($nom_meta_base_version, $version_cible) {
+  $maj = array();
+
+  $maj['create'] = array(array('maj_tables', array('spip_souscription_dons', 'spip_souscription_dons_liens')));
+
+  include_spip('base/upgrade');
+  maj_plugin($nom_meta_base_version, $version_cible, $maj);
+}
+
+
+/**
+ * Fonction de désinstallation du plugin Souscription.
+ *
+ * @param string $nom_meta_base_version
+ *     Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
+ * @return void
+ **/
+function souscription_vider_tables($nom_meta_base_version) {
+
+  sql_drop_table("spip_souscription_dons");
+  sql_drop_table("spip_souscription_dons_liens");
+
+  /* Nettoyer les versionnages et forums */
+  sql_delete("spip_versions",              sql_in("objet", array('souscription_don')));
+  sql_delete("spip_versions_fragments",    sql_in("objet", array('souscription_don')));
+  sql_delete("spip_forum",                 sql_in("objet", array('souscription_don')));
+
+  effacer_meta($nom_meta_base_version);
+}
+?>
diff --git a/souscription_autorisations.php b/souscription_autorisations.php
new file mode 100644 (file)
index 0000000..495c97a
--- /dev/null
@@ -0,0 +1,78 @@
+<?php
+/**
+ * Définit les autorisations du plugin Souscription
+ *
+ * @plugin     Souscription
+ * @copyright  2013
+ * @author     Olivier Tétard
+ * @licence    GNU/GPL
+ * @package    SPIP\Souscription\Autorisations
+ */
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+
+/**
+ * Fonction d'appel pour le pipeline
+ * @pipeline autoriser */
+function souscription_autoriser(){}
+
+
+// -----------------
+// Objet souscription_dons
+
+
+/**
+ * Autorisation de voir un élément de menu (souscriptiondons)
+ **/
+function autoriser_souscriptiondons_menu_dist($faire, $type, $id, $qui, $opt){
+  return true;
+}
+
+
+/**
+ * Autorisation de voir le bouton d'accès rapide de création (souscriptiondon)
+ **/
+function autoriser_souscriptiondoncreer_menu_dist($faire, $type, $id, $qui, $opt){
+  /* return autoriser('creer', 'souscription_don', '', $qui, $opt); */
+  return false;
+}
+
+/**
+ * Autorisation de créer un don. Tout le monde est autorisé
+ * à faire un don.
+ **/
+function autoriser_souscriptiondon_creer_dist($faire, $type, $id, $qui, $opt) {
+  return true;
+}
+
+/**
+ * Autorisation de voir un don. Il faut être administrateur pour voir
+ * un don.
+ **/
+function autoriser_souscriptiondon_voir_dist($faire, $type, $id, $qui, $opt) {
+  return autoriser('webmestre', '', '', $qui);
+}
+
+/**
+ * Autorisation de modifier un don. Personne n'est autorisé à le
+ * faire.
+ **/
+function autoriser_souscriptiondon_modifier_dist($faire, $type, $id, $qui, $opt) {
+  return false;
+}
+
+/**
+ * Autorisation de supprimer un don. Personne n'est autorisé à le
+ * faire.
+ **/
+function autoriser_souscriptiondon_supprimer_dist($faire, $type, $id, $qui, $opt) {
+  return false;
+}
+
+/* 
+ * Autorisation d'exporter un don.
+ */
+function autoriser_souscriptiondon_exporter_dist($faire, $type, $id, $qui, $opt) {
+  return autoriser('webmestre', '', '', $qui);
+}
diff --git a/souscription_autorisations.php~ b/souscription_autorisations.php~
new file mode 100644 (file)
index 0000000..b0b9810
--- /dev/null
@@ -0,0 +1,133 @@
+<?php
+/**
+ * Définit les autorisations du plugin Souscription
+ *
+ * @plugin     Souscription
+ * @copyright  2013
+ * @author     Olivier Tétard
+ * @licence    GNU/GPL
+ * @package    SPIP\Souscription\Autorisations
+ */
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+
+/**
+ * Fonction d'appel pour le pipeline
+ * @pipeline autoriser */
+function souscription_autoriser(){}
+
+
+// -----------------
+// Objet souscription_dons
+
+
+/**
+ * Autorisation de voir un élément de menu (souscriptiondons)
+ *
+ * @param  string $faire Action demandée
+ * @param  string $type  Type d'objet sur lequel appliquer l'action
+ * @param  int    $id    Identifiant de l'objet
+ * @param  array  $qui   Description de l'auteur demandant l'autorisation
+ * @param  array  $opt   Options de cette autorisation
+ * @return bool          true s'il a le droit, false sinon
+ **/
+function autoriser_souscriptiondons_menu_dist($faire, $type, $id, $qui, $opt){
+  return true;
+}
+
+
+/**
+ * Autorisation de voir le bouton d'accès rapide de création (souscriptiondon)
+ *
+ * @param  string $faire Action demandée
+ * @param  string $type  Type d'objet sur lequel appliquer l'action
+ * @param  int    $id    Identifiant de l'objet
+ * @param  array  $qui   Description de l'auteur demandant l'autorisation
+ * @param  array  $opt   Options de cette autorisation
+ * @return bool          true s'il a le droit, false sinon
+ **/
+function autoriser_souscriptiondoncreer_menu_dist($faire, $type, $id, $qui, $opt){
+  /* return autoriser('creer', 'souscription_don', '', $qui, $opt); */
+  return false;
+}
+
+/**
+ * Autorisation de créer (souscriptiondon)
+ *
+ * @param  string $faire Action demandée
+ * @param  string $type  Type d'objet sur lequel appliquer l'action
+ * @param  int    $id    Identifiant de l'objet
+ * @param  array  $qui   Description de l'auteur demandant l'autorisation
+ * @param  array  $opt   Options de cette autorisation
+ * @return bool          true s'il a le droit, false sinon
+ **/
+function autoriser_souscriptiondon_creer_dist($faire, $type, $id, $qui, $opt) {
+  return true;
+}
+
+/**
+ * Autorisation de voir (souscriptiondon)
+ *
+ * @param  string $faire Action demandée
+ * @param  string $type  Type d'objet sur lequel appliquer l'action
+ * @param  int    $id    Identifiant de l'objet
+ * @param  array  $qui   Description de l'auteur demandant l'autorisation
+ * @param  array  $opt   Options de cette autorisation
+ * @return bool          true s'il a le droit, false sinon
+ **/
+function autoriser_souscriptiondon_voir_dist($faire, $type, $id, $qui, $opt) {
+  /* return autoriser('webmestre', '', '', $qui); */
+  return false;
+}
+
+/**
+ * Autorisation de modifier (souscriptiondon)
+ *
+ * @param  string $faire Action demandée
+ * @param  string $type  Type d'objet sur lequel appliquer l'action
+ * @param  int    $id    Identifiant de l'objet
+ * @param  array  $qui   Description de l'auteur demandant l'autorisation
+ * @param  array  $opt   Options de cette autorisation
+ * @return bool          true s'il a le droit, false sinon
+ **/
+function autoriser_souscriptiondon_modifier_dist($faire, $type, $id, $qui, $opt) {
+  return autoriser('webmestre', '', '', $qui);
+}
+
+/**
+ * Autorisation de supprimer (souscriptiondon)
+ *
+ * @param  string $faire Action demandée
+ * @param  string $type  Type d'objet sur lequel appliquer l'action
+ * @param  int    $id    Identifiant de l'objet
+ * @param  array  $qui   Description de l'auteur demandant l'autorisation
+ * @param  array  $opt   Options de cette autorisation
+ * @return bool          true s'il a le droit, false sinon
+ **/
+function autoriser_souscriptiondon_supprimer_dist($faire, $type, $id, $qui, $opt) {
+  return autoriser('webmestre', '', '', $qui);
+}
+
+
+/**
+ * Autorisation de lier/délier l'élément (souscriptiondons)
+ *
+ * @param  string $faire Action demandée
+ * @param  string $type  Type d'objet sur lequel appliquer l'action
+ * @param  int    $id    Identifiant de l'objet
+ * @param  array  $qui   Description de l'auteur demandant l'autorisation
+ * @param  array  $opt   Options de cette autorisation
+ * @return bool          true s'il a le droit, false sinon
+ **/
+function autoriser_associersouscriptiondons_dist($faire, $type, $id, $qui, $opt) {
+  return autoriser('webmestre', '', '', $qui);
+}
+
+function autoriser_dons_souscriptionexporter_dist($faire, $type, $id, $qui, $opt) {
+  print "...";
+  return false;
+  return autoriser('webmestre', '', '', $qui);
+}
+
+print "..";
\ No newline at end of file
diff --git a/souscription_fonctions.php b/souscription_fonctions.php
new file mode 100644 (file)
index 0000000..c3be168
--- /dev/null
@@ -0,0 +1,15 @@
+<?php
+/**
+ * Fonctions utiles au plugin Souscription
+ *
+ * @plugin     Souscription
+ * @copyright  2013
+ * @author     Olivier Tétard
+ * @licence    GNU/GPL
+ * @package    SPIP\Souscription\Fonctions
+ */
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+
+?>
diff --git a/souscription_options.php b/souscription_options.php
new file mode 100644 (file)
index 0000000..05911bb
--- /dev/null
@@ -0,0 +1,15 @@
+<?php
+/**
+ * Options du plugin Souscriptionau chargement
+ *
+ * @plugin     Souscription
+ * @copyright  2013
+ * @author     Olivier Tétard
+ * @licence    GNU/GPL
+ * @package    SPIP\Souscription\Options
+ */
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+
+?>
diff --git a/souscription_pipelines.php b/souscription_pipelines.php
new file mode 100644 (file)
index 0000000..f8acb4d
--- /dev/null
@@ -0,0 +1,30 @@
+<?php
+/**
+ * Utilisations de pipelines par Souscription
+ *
+ * @plugin     Souscription
+ * @copyright  2013
+ * @author     Olivier Tétard
+ * @licence    GNU/GPL
+ * @package    SPIP\Souscription\Pipelines
+ */
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+       
+
+
+/**
+ * Optimiser la base de données en supprimant les liens orphelins
+ * de l'objet vers quelqu'un et de quelqu'un vers l'objet.
+ *
+ * @pipeline optimiser_base_disparus
+ * @param  array $flux Données du pipeline
+ * @return array       Données du pipeline
+ */
+function souscription_optimiser_base_disparus($flux){
+  include_spip('action/editer_liens');
+  $flux['data'] += objet_optimiser_liens(array('souscription_don'=>'*'),'*');
+  return $flux;
+}
+
+?>