From bc4739877c544c5039ba1227f4222548a7cf43fa Mon Sep 17 00:00:00 2001
From: engel <>
Date: Thu, 28 Sep 2023 09:08:46 +0000
Subject: [PATCH 01/19] =?UTF-8?q?D=C3=A9but=20restructuration=20pour=20com?=
=?UTF-8?q?patibilit=C3=A9=20version=201.3=20de=20paheko?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
FossilOrigin-Name: 467790c5738a867592117ea6b3a7ac6c61738dab3b8e29a48fed8f19b9df2b38
---
README.md | 6 +--
{www/admin => admin}/action.php | 0
{www/admin => admin}/choix_annee.php | 0
{www/admin => admin}/config.php | 0
{www/admin => admin}/generer_recus.php | 48 ++++++++++++++-----
{www/admin => admin}/imprimer_recu.css | 0
{www/admin => admin}/index.php | 0
{www/admin => admin}/previs_recu.css | 0
{www/admin => admin}/script.js | 0
{www/admin => admin}/style.css | 0
{www/admin => admin}/upload.php | 0
{www/admin => admin}/versements_activites.php | 6 ++-
{www/admin => admin}/versements_personnes.php | 0
install.php | 4 +-
lib/Personne.php | 2 +-
lib/Utils.php | 17 +++----
lib/Versement.php | 2 +-
garradin_plugin.ini => plugin.ini | 8 ++--
templates/_nav.tpl | 2 +-
templates/choix_annee.tpl | 4 +-
templates/index.tpl | 2 +-
templates/recu_html.tpl | 2 +-
templates/upload.tpl | 4 +-
templates/versements_activites.tpl | 2 +-
templates/versements_personnes.tpl | 2 +-
uninstall.php | 8 ++--
upgrade.php | 4 +-
27 files changed, 77 insertions(+), 46 deletions(-)
rename {www/admin => admin}/action.php (100%)
rename {www/admin => admin}/choix_annee.php (100%)
rename {www/admin => admin}/config.php (100%)
rename {www/admin => admin}/generer_recus.php (91%)
rename {www/admin => admin}/imprimer_recu.css (100%)
rename {www/admin => admin}/index.php (100%)
rename {www/admin => admin}/previs_recu.css (100%)
rename {www/admin => admin}/script.js (100%)
rename {www/admin => admin}/style.css (100%)
rename {www/admin => admin}/upload.php (100%)
rename {www/admin => admin}/versements_activites.php (90%)
rename {www/admin => admin}/versements_personnes.php (100%)
rename garradin_plugin.ini => plugin.ini (63%)
diff --git a/README.md b/README.md
index d6a1513..a564a1e 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,10 @@
-# Plugin reçus fiscaux pour Garradin/Paheko
+# Plugin reçus fiscaux pour Paheko
-Plugin de reçus fiscaux pour le logiciel de gestion d'association [Garradin/Paheko](https://paheko.cloud).
+Plugin de reçus fiscaux pour le logiciel de gestion d'association [Paheko](https://paheko.cloud).
## Installation
-**Attention :** les archives disponibles sur ce gitlab n'ont pas un format compatible avec Garradin/Paheko et ne peuvent donc être utilisées telles quelles ; il faut soit les transformer pour les rendre compatibles, soit télécharger [cette archive](https://ncloud6.zaclys.com/index.php/s/RZQK2So8HemkH3w), et la copier dans le dossier plugins de Garradin/Paheko.
+**Attention :** les archives disponibles sur ce gitlab n'ont pas un format compatible avec Paheko et ne peuvent donc être utilisées telles quelles ; il faut soit les transformer pour les rendre compatibles, soit télécharger [cette archive](https://ncloud6.zaclys.com/index.php/s/RZQK2So8HemkH3w), et la copier dans le dossier plugins de Paheko.
## Fonctionnalités
- Créer des reçus fiscaux pour les dons des membres
diff --git a/www/admin/action.php b/admin/action.php
similarity index 100%
rename from www/admin/action.php
rename to admin/action.php
diff --git a/www/admin/choix_annee.php b/admin/choix_annee.php
similarity index 100%
rename from www/admin/choix_annee.php
rename to admin/choix_annee.php
diff --git a/www/admin/config.php b/admin/config.php
similarity index 100%
rename from www/admin/config.php
rename to admin/config.php
diff --git a/www/admin/generer_recus.php b/admin/generer_recus.php
similarity index 91%
rename from www/admin/generer_recus.php
rename to admin/generer_recus.php
index a17eb44..a930188 100644
--- a/www/admin/generer_recus.php
+++ b/admin/generer_recus.php
@@ -97,6 +97,9 @@ function genererRecusPDF($totalPersonnes,
$libelles_taux
)
{
+ //
+ $fichierHTML = sprintf('%s/print-%s.html', CACHE_ROOT, md5(random_bytes(16)));
+ //
$listeFichiersPDF = array();
$fmt = new \NumberFormatter('fr_FR', \NumberFormatter::SPELLOUT);
$prefixeNum = getNumPrefixe($configNum);
@@ -162,22 +165,44 @@ function genererRecusPDF($totalPersonnes,
}
}
);
-
+
+ //
+ // récupérer les reçus au format html
+ $recuHTML = $tpl->fetch();
+ // enregistrer dans le fichier
+ file_put_contents($fichierHTML, $recuHTML, FILE_APPEND);
+ //
+
// fabriquer le fichier PDF
genererPDF($tpl->fetch(), $personne->nomPrenom, $listeFichiersPDF);
}
- // faire une archive zip
- $fichierZip = Utils::makeArchive(
- $listeFichiersPDF,
- $_SESSION['annee_recu'],
- PLUGIN_ROOT . "/zip"
- );
+ // afficher dans un dialog
+ //marche pas
+ // printf('
+ //
+ // ', $fichierHTML, "90%", "90%");
- //supprimer les fichiers pdf (utile ?)
- foreach ($listeFichiersPDF as $f) {
- // Utils::safe_unlink($f);
- }
+ // affiche une page vide
+ // $link = "";
+ // echo $link;
+
+ // faire une archive zip
+ // $fichierZip = Utils::makeArchive(
+ // $listeFichiersPDF,
+ // $_SESSION['annee_recu'],
+ // PLUGIN_ROOT . "/zip"
+ // );
+
+ //supprimer les fichiers pdf
+ // foreach ($listeFichiersPDF as $f) {
+ // \Garradin\Utils::safe_unlink($f);
+ // }
} // genererRecusPDF
function generererRecusHTML($tpl,
@@ -298,6 +323,7 @@ function cumulerVersementsTarif($versements)
$dateMax = -1;
$totalVersements = 0;
foreach ($versements as $ligne) {
+ error_log("\nligne=" . print_r($ligne, true));
if (
$ligne->idTarif != $idTarifCourant ||
$ligne->idUser != $idPersonneCourant ||
diff --git a/www/admin/imprimer_recu.css b/admin/imprimer_recu.css
similarity index 100%
rename from www/admin/imprimer_recu.css
rename to admin/imprimer_recu.css
diff --git a/www/admin/index.php b/admin/index.php
similarity index 100%
rename from www/admin/index.php
rename to admin/index.php
diff --git a/www/admin/previs_recu.css b/admin/previs_recu.css
similarity index 100%
rename from www/admin/previs_recu.css
rename to admin/previs_recu.css
diff --git a/www/admin/script.js b/admin/script.js
similarity index 100%
rename from www/admin/script.js
rename to admin/script.js
diff --git a/www/admin/style.css b/admin/style.css
similarity index 100%
rename from www/admin/style.css
rename to admin/style.css
diff --git a/www/admin/upload.php b/admin/upload.php
similarity index 100%
rename from www/admin/upload.php
rename to admin/upload.php
diff --git a/www/admin/versements_activites.php b/admin/versements_activites.php
similarity index 90%
rename from www/admin/versements_activites.php
rename to admin/versements_activites.php
index 7ffc9ec..6930a8e 100644
--- a/www/admin/versements_activites.php
+++ b/admin/versements_activites.php
@@ -25,10 +25,11 @@ if (null !== f('tarifs')) {
} else if (! isset($_SESSION['tauxSelectionnes'])) {
$tarifsSelectionnes = [];
}
-
+error_log("\ntarifsSelectionnes=" . print_r($tarifsSelectionnes, true));
// comptes sélectionnés
if (null !== f('comptes')) {
$_SESSION['comptesSelectionnes'] = f('comptes');
+ error_log("\ncomptesSelectionnes=" . print_r($_SESSION['comptesSelectionnes'], true));
} /*
else if (! isset($_SESSION['tauxSelectionnes'])) {
$_SESSION['comptesSelectionnes'] = [];
@@ -71,6 +72,7 @@ if (count($lesTarifs) != 0)
$lesTarifs,
$lesComptes,
$champsNom);
+ error_log("lesVersements=" . print_r($_SESSION['lesVersements'], true));
}
// ajouter les versements sans tarif (tri par nom, compte, date)
@@ -84,6 +86,8 @@ if (isset($_SESSION['comptesSelectionnes']))
$_SESSION['lesVersements'][] = $versement;
}
}
+error_log("lesVersements=" . print_r($_SESSION['lesVersements'], true));
+
// préparation de l'affichage
$tpl->assign('lesVersements', $_SESSION['lesVersements']);
$tpl->assign('annee_recu', $_SESSION['annee_recu']);
diff --git a/www/admin/versements_personnes.php b/admin/versements_personnes.php
similarity index 100%
rename from www/admin/versements_personnes.php
rename to admin/versements_personnes.php
diff --git a/install.php b/install.php
index 1117fa6..6fe5a5a 100644
--- a/install.php
+++ b/install.php
@@ -1,6 +1,6 @@
get($sql);
}
@@ -417,7 +418,7 @@ class Utils
/**
* récupérer dans la config du plugin les champs des membres
* utilisés pour le nom et le prénom ; ajouter/supprimer les
- * modifications par rapport à la config garradin
+ * modifications par rapport à la config paheko
* @return array tableau des champs : clé = nom, valeur = { titre, position }
*/
public static function getChampsNom($config, $plugin) : array
@@ -426,11 +427,11 @@ class Utils
// pour le nom et le prénom (le tableau est vide si pas mémorisé)
$champsNom = (array) $plugin->getConfig('champsNom');
- // récupérer dans la config Garradin les champs des membres
+ // récupérer dans la config Paheko les champs des membres
// utilisés pour le nom et le préno
- $champsGarradin = $config->get('champs_membres')->listAssocNames();
+ $champsPaheko = $config->get('champs_membres')->listAssocNames();
- foreach ($champsGarradin as $name => $title)
+ foreach ($champsPaheko as $name => $title)
{
if (stristr($title, 'nom'))
{
@@ -447,10 +448,10 @@ class Utils
}
}
// opération symétrique : un champ mémorisé dans la config du
- // plugin a-t-il disparu de la config garradin ?
+ // plugin a-t-il disparu de la config paheko ?
foreach ($champsNom as $nom => $champ)
{
- if (! array_key_exists($nom, $champsGarradin))
+ if (! array_key_exists($nom, $champsPaheko))
{
// absent => le supprimer
unset($champsNom[$nom]);
diff --git a/lib/Versement.php b/lib/Versement.php
index e52f98c..35fa9ec 100644
--- a/lib/Versement.php
+++ b/lib/Versement.php
@@ -1,6 +1,6 @@
-{include file="admin/_head.tpl" title="%s"|args:$plugin.nom current="plugin_%s"|args:$plugin.id}
+{include file="_head.tpl" title="%s"|args:$plugin.nom current="plugin_%s"|args:$plugin.id}
-{include file="admin/_foot.tpl"}
\ No newline at end of file
+{include file="_foot.tpl"}
\ No newline at end of file
diff --git a/templates/index.tpl b/templates/index.tpl
index 583e1ff..9a6dc51 100644
--- a/templates/index.tpl
+++ b/templates/index.tpl
@@ -212,4 +212,4 @@
{/literal}
-{include file="admin/_foot.tpl"}
\ No newline at end of file
+{include file="_foot.tpl"}
\ No newline at end of file
diff --git a/templates/recu_html.tpl b/templates/recu_html.tpl
index 6cfa2ff..8fb840a 100644
--- a/templates/recu_html.tpl
+++ b/templates/recu_html.tpl
@@ -140,4 +140,4 @@ document.addEventListener('DOMContentLoaded',
{/literal}
-{include file="admin/_foot.tpl"}
\ No newline at end of file
+{include file="_foot.tpl"}
\ No newline at end of file
diff --git a/templates/upload.tpl b/templates/upload.tpl
index 45089b0..70f4cff 100644
--- a/templates/upload.tpl
+++ b/templates/upload.tpl
@@ -1,4 +1,4 @@
-{include file="admin/_head.tpl" title="Envoi de fichier"}
+{include file="_head.tpl" title="Envoi de fichier"}
{form_errors}
@@ -15,4 +15,4 @@
-{include file="admin/_foot.tpl"}
+{include file="_foot.tpl"}
diff --git a/templates/versements_activites.tpl b/templates/versements_activites.tpl
index 4b50d24..fb7c370 100644
--- a/templates/versements_activites.tpl
+++ b/templates/versements_activites.tpl
@@ -86,4 +86,4 @@
-{include file="admin/_foot.tpl"}
\ No newline at end of file
+{include file="_foot.tpl"}
\ No newline at end of file
diff --git a/templates/versements_personnes.tpl b/templates/versements_personnes.tpl
index f6dcf59..a3fb04a 100644
--- a/templates/versements_personnes.tpl
+++ b/templates/versements_personnes.tpl
@@ -67,4 +67,4 @@
-{include file="admin/_foot.tpl"}
\ No newline at end of file
+{include file="_foot.tpl"}
\ No newline at end of file
diff --git a/uninstall.php b/uninstall.php
index 86e35bf..430e8f0 100644
--- a/uninstall.php
+++ b/uninstall.php
@@ -1,11 +1,11 @@
delete();
}
@@ -13,7 +13,7 @@ if (null !== $default_signature_file) {
// signature réelle
$signature = $plugin->getConfig('signature');
if (null !== $signature) {
- $sig_file = \Garradin\Files\Files::get($signature);
+ $sig_file = \Paheko\Files\Files::get($signature);
if (null !== $sig_file) {
$sig_file->delete();
}
diff --git a/upgrade.php b/upgrade.php
index de36e6c..7b08b05 100644
--- a/upgrade.php
+++ b/upgrade.php
@@ -1,8 +1,8 @@
getInfos('version');
From b2885f3c013f156a22355f161b838c2192067112 Mon Sep 17 00:00:00 2001
From: engel <>
Date: Thu, 28 Sep 2023 11:20:36 +0000
Subject: [PATCH 02/19] Changement namespace Garradin => Paheko
FossilOrigin-Name: 05bd9b85d91af38c15952ea00891080a67e21c8e00ce3acf16c7b8263dc55d2c
---
admin/action.php | 4 ++--
admin/choix_annee.php | 6 +++---
admin/config.php | 14 +++++++-------
admin/generer_recus.php | 16 ++++++++--------
admin/index.php | 4 ++--
admin/upload.php | 6 +++---
admin/versements_activites.php | 8 ++++----
admin/versements_personnes.php | 8 ++++----
8 files changed, 33 insertions(+), 33 deletions(-)
diff --git a/admin/action.php b/admin/action.php
index e9785c2..86a998b 100644
--- a/admin/action.php
+++ b/admin/action.php
@@ -1,8 +1,8 @@
assign('anneesFiscales', $anneesFiscales);
diff --git a/admin/config.php b/admin/config.php
index 842ecb3..e5db4e6 100644
--- a/admin/config.php
+++ b/admin/config.php
@@ -1,10 +1,10 @@
requireAccess($session::SECTION_CONFIG, $session::ACCESS_ADMIN);
$art_sel = f('articlesCGI') ?: [];
@@ -64,7 +64,7 @@ if (f('save') && $form->check('recusfiscaux_config')) {
null !== $plugin->getConfig('signature') &&
$plugin->getConfig('signature') != $_SESSION['sig_file'][0]->path
) {
- $sig_file = \Garradin\Files\Files::get($plugin->getConfig('signature'));
+ $sig_file = \Paheko\Files\Files::get($plugin->getConfig('signature'));
if (null !== $sig_file) {
$sig_file->delete();
}
@@ -99,7 +99,7 @@ if (f('save') && $form->check('recusfiscaux_config')) {
}
$plugin->setConfig('champsNom', $champsNom);
- \Garradin\Utils::redirect(PLUGIN_URL . 'config.php?ok');
+ \Paheko\Utils::redirect(PLUGIN_URL . 'config.php?ok');
} catch (UserException $e) {
$form->addError($e->getMessage());
}
@@ -112,7 +112,7 @@ uasort($champsNom, function ($a, $b) {
$tpl->assign('ok', qg('ok') !== null);
$path = qg('path') ?: File::CONTEXT_CONFIG;
-$tpl->assign('default_signature', \Garradin\WWW_URL . "plugin/recusfiscaux/default_signature.png");
+$tpl->assign('default_signature', \Paheko\WWW_URL . "plugin/recusfiscaux/default_signature.png");
$tpl->assign('plugin_config', $plugin->getConfig());
$tpl->assign('plugin_css', ['style.css']);
$tpl->assign('numerotation', $plugin->getConfig('numerotation'));
diff --git a/admin/generer_recus.php b/admin/generer_recus.php
index a930188..c79e01b 100644
--- a/admin/generer_recus.php
+++ b/admin/generer_recus.php
@@ -1,13 +1,13 @@
needUpgrade()) {
diff --git a/admin/upload.php b/admin/upload.php
index 7fd5387..3d88274 100644
--- a/admin/upload.php
+++ b/admin/upload.php
@@ -1,8 +1,8 @@
Date: Wed, 4 Oct 2023 12:27:56 +0000
Subject: [PATCH 03/19] =?UTF-8?q?adaptation=20=C3=A0=20la=20nouvelle=20ges?=
=?UTF-8?q?tion=20de=20la=20config?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
FossilOrigin-Name: 8021f28f6ba17ffafbb4a1e5ffb4cb8486c3b585a486afd6a24f61db0b64841c
---
admin/config.php | 188 ++++++++++++++++++++--------------------
install.php | 25 ++++--
lib/Utils.php | 7 +-
templates/recu.skel | 4 +-
templates/recu_html.tpl | 4 +-
uninstall.php | 3 +-
upgrade.php | 4 +-
7 files changed, 125 insertions(+), 110 deletions(-)
diff --git a/admin/config.php b/admin/config.php
index e5db4e6..60c4981 100644
--- a/admin/config.php
+++ b/admin/config.php
@@ -7,114 +7,116 @@ use Paheko\Entities\Files\File;
use Paheko\Plugin\RecusFiscaux\Utils;
$session->requireAccess($session::SECTION_CONFIG, $session::ACCESS_ADMIN);
-$art_sel = f('articlesCGI') ?: [];
-$taux_sel = f('tauxReduction') ?: [];
-$noms_sel = f('champsNom') ?: [];
// récupérer les champs des noms
$champsNom = Utils::getChampsNom($config, $plugin);
-if (f('save') && $form->check('recusfiscaux_config')) {
- try {
- // objet de l'association
- if ($plugin->getConfig('objet_asso') != trim(f('objet_asso'))) {
- $plugin->setConfig('objet_asso', trim(f('objet_asso')));
- }
+$csrf_key = 'recusfiscaux_config';
- // articles du CGI
- $confArticles = $plugin->getConfig('articlesCGI');
- // effacer l'ancienne configuration
- for ($i = 0; $i < count($confArticles); ++$i) {
- $confArticles[$i]->valeur = false; // 0
- }
- // et copier la nouvelle
- foreach ($art_sel as $article) {
- $confArticles[$article]->valeur = true; // 1
- }
- $plugin->setConfig("articlesCGI", $confArticles);
+$form->runIf('save', function () use ($plugin, $champsNom) {
+ // Objet de l'asso
+ $plugin->setConfigProperty('objet_asso', trim(f('objet_asso')));
- // taux de réduction
- $confTaux = $plugin->getConfig('reduction');
- // effacer l'ancienne configuration
- for ($i = 0; $i < count($confTaux); ++$i) {
- $confTaux[$i]->valeur = false; // 0
- }
- // et copier la nouvelle
- foreach ($taux_sel as $taux) {
- $confTaux[$taux]->valeur = true; // 1
- }
- $plugin->setConfig("reduction", $confTaux);
-
- // Informations au sujet du responsable
- if ($plugin->getConfig('nom_responsable') != trim(f('nom_responsable'))) {
- $plugin->setConfig('nom_responsable', trim(f('nom_responsable')));
- }
- if ($plugin->getConfig('fonction_responsable') != trim(f('fonction_responsable'))) {
- $plugin->setConfig('fonction_responsable', trim(f('fonction_responsable')));
- }
- // ville
- if ($plugin->getConfig('ville_asso') != trim(f('ville_asso'))) {
- $plugin->setConfig('ville_asso', trim(f('ville_asso')));
- }
- // signature
-
- if (isset($_SESSION['sig_file']) && count($_SESSION['sig_file']) > 0) {
- // supprimer la signature précédente, si besoin
- if (
- null !== $plugin->getConfig('signature') &&
- $plugin->getConfig('signature') != $_SESSION['sig_file'][0]->path
- ) {
- $sig_file = \Paheko\Files\Files::get($plugin->getConfig('signature'));
- if (null !== $sig_file) {
- $sig_file->delete();
- }
- }
- // puis installer la nouvelle
- $plugin->setConfig('signature', $_SESSION['sig_file'][0]->path);
- }
-
- // autres informations
- // numérotation des reçus
- $configNum = $plugin->getConfig('numerotation');
- $formNum = clone $configNum;
- if ($configNum->prefixe != trim(f('prefixe'))) {
- $formNum->prefixe = trim(f('prefixe'));
- }
- $formNum->annee = f('annee');
- $formNum->membre = f('membre');
- $formNum->sequentiel = f('sequentiel');
- $formNum->valeur_init = f('valeur_init');
- $plugin->setConfig('numerotation', $formNum);
-
- // impression des adresses de courriel
- $plugin->setConfig('imprimerCourriel', f('imprimerCourriel'));
-
- // champs pour le nom et prénom
- foreach ($champsNom as $nom => $champ) {
- $champ->position = 0;
- }
- $i = -count($noms_sel);
- foreach ($noms_sel as $nom) {
- $champsNom[$nom]->position = $i++;
- }
- $plugin->setConfig('champsNom', $champsNom);
-
- \Paheko\Utils::redirect(PLUGIN_URL . 'config.php?ok');
- } catch (UserException $e) {
- $form->addError($e->getMessage());
+ // Articles du CGI
+ $confArticles = $plugin->getConfig('articlesCGI');
+ // effacer l'ancienne configuration
+ for ($i = 0; $i < count($confArticles); ++$i) {
+ $confArticles[$i]->valeur = false;
}
-}
+ // et copier la nouvelle
+ $art_sel = f('articlesCGI') ?: [];
+ foreach ($art_sel as $article) {
+ $confArticles[$article]->valeur = true;
+ }
+ $plugin->setConfigProperty('articlesCGI', $confArticles);
+
+ // Taux de réduction
+ $confTaux = $plugin->getConfig('reduction');
+ // effacer l'ancienne configuration
+ for ($i = 0; $i < count($confTaux); ++$i) {
+ $confTaux[$i]->valeur = false;
+ }
+ // et copier la nouvelle
+ $taux_sel = f('tauxReduction') ?: [];
+ foreach ($taux_sel as $taux) {
+ $confTaux[$taux]->valeur = true;
+ }
+ $plugin->setConfigProperty("reduction", $confTaux);
+
+ // Informations au sujet du responsable
+ $plugin->setConfigProperty('nom_responsable', trim(f('nom_responsable') ?: '') ?: null);
+ $plugin->setConfigProperty('fonction_responsable', trim(f('fonction_responsable') ?: '') ?: null);
+ $plugin->setConfigProperty('ville_asso', trim(f('ville_asso') ?: '') ?: null);
+
+ // signature
+ if (isset($_SESSION['sig_file']) && count($_SESSION['sig_file']) > 0) {
+ // supprimer la signature précédente, si besoin
+ if (
+ null !== $plugin->getConfig('signature')
+ &&
+ $plugin->getConfig('signature') != $_SESSION['sig_file'][0]->path
+ ) {
+ $sig_file = \Paheko\Files\Files::get($plugin->getConfig('signature'));
+ if (null !== $sig_file) {
+ $sig_file->delete();
+ }
+ }
+ // puis installer la nouvelle
+ $plugin->setConfigProperty('signature', $_SESSION['sig_file'][0]->path);
+ }
+
+ // Numérotation des reçus
+ $configNum = $plugin->getConfig('numerotation');
+ $formNum = clone $configNum;
+ if ($configNum->prefixe != trim(f('prefixe'))) {
+ $formNum->prefixe = trim(f('prefixe'));
+ }
+ $formNum->annee = f('annee');
+ $formNum->membre = f('membre');
+ $formNum->sequentiel = f('sequentiel');
+ $formNum->valeur_init = f('valeur_init');
+ $plugin->setConfigProperty('numerotation', $formNum);
+
+ // Impression des adresses de courriel
+ $plugin->setConfigProperty('imprimerCourriel', trim(f('imprimerCourriel') ?: '') ?: null);
+
+ // champs pour le nom et prénom
+ foreach ($champsNom as $nom => $champ) {
+ $champ->position = 0;
+ }
+ $noms_sel = f('champsNom') ?: [];
+ $i = -count($noms_sel);
+ foreach ($noms_sel as $nom) {
+ $champsNom[$nom]->position = $i++;
+ }
+ $plugin->setConfigProperty('champsNom', $champsNom);
+
+ // enregistrer la nouvelle config
+ $plugin->save();
+}, $csrf_key, PLUGIN_ADMIN_URL . 'config.php?ok');
+
+
+// test fonctions fichiers : voir files.sor
+// $fichiers = Files::list('config');
+// error_log("fichiers config = " . print_r($fichiers, true));
+// $fichiers = Files::list('ext/recusfiscaux');
+// error_log("fichiers ext/recusfiscaux = " . print_r($fichiers, true));
+$sig_file = Files::get('ext/recusfiscaux/default_signature.png');
+// error_log("sig_file = " . print_r($sig_file, true));
+
+//error_log("config.php::config=" . print_r($plugin->getConfig(), true));
+
// trier les champs de nom pour l'affichage
uasort($champsNom, function ($a, $b) {
return $a->position - $b->position;
});
-$tpl->assign('ok', qg('ok') !== null);
$path = qg('path') ?: File::CONTEXT_CONFIG;
-$tpl->assign('default_signature', \Paheko\WWW_URL . "plugin/recusfiscaux/default_signature.png");
+$tpl->assign('default_signature', '/' . 'ext/recusfiscaux/default_signature.png');
+// $tpl->assign('default_signature', \Paheko\WWW_URL . "plugin/recusfiscaux/default_signature.png");
$tpl->assign('plugin_config', $plugin->getConfig());
$tpl->assign('plugin_css', ['style.css']);
$tpl->assign('numerotation', $plugin->getConfig('numerotation'));
-$tpl->assign(compact('path', 'champsNom'));
+$tpl->assign(compact('csrf_key', 'path', 'champsNom'));
$tpl->display(PLUGIN_ROOT . '/templates/config.tpl');
diff --git a/install.php b/install.php
index 6fe5a5a..c9b26e3 100644
--- a/install.php
+++ b/install.php
@@ -1,10 +1,23 @@
get('name');
+const SIGNATURE_DEFAUT = 'default_signature.png';
+const CONFIG_INIT = 'config.json';
+
+// configuration initiale
+$config_init = json_decode(file_get_contents(Plugins::getPath($nom_plugin) . '/' . CONFIG_INIT),
+ true);
+
+// enregistrer dans la config du plugin
+foreach ($config_init as $cle => $valeur) {
+ $plugin->setConfigProperty($cle, $valeur);
+}
+$plugin->save();
// « signature » par défaut à remplacer (voir l'onglet de configuration)
-$path = __DIR__ . '/data/default_signature.png';
-$default_signature_file = (new File)->createAndStore('skel/plugin/recusfiscaux',
- 'default_signature.png',
- $path,
- null);
+$path = __DIR__ . '/data/' . SIGNATURE_DEFAUT;
+$default_signature_file = Files::createFromPath('ext/' . $nom_plugin . '/' . SIGNATURE_DEFAUT,
+ $path);
diff --git a/lib/Utils.php b/lib/Utils.php
index 2109cdb..d7c5fcf 100644
--- a/lib/Utils.php
+++ b/lib/Utils.php
@@ -3,6 +3,7 @@
namespace Paheko\Plugin\RecusFiscaux;
use Paheko\DB;
+use Paheko\Users\DynamicFields;
use KD2\ZipWriter;
class Utils
@@ -428,8 +429,8 @@ class Utils
$champsNom = (array) $plugin->getConfig('champsNom');
// récupérer dans la config Paheko les champs des membres
- // utilisés pour le nom et le préno
- $champsPaheko = $config->get('champs_membres')->listAssocNames();
+ // utilisés pour le nom et le prénom
+ $champsPaheko = DynamicFields::getInstance()->listAssocNames();
foreach ($champsPaheko as $name => $title)
{
@@ -458,7 +459,7 @@ class Utils
}
}
// mettre à jour la config du plugin
- $plugin->setConfig('champsNom', $champsNom);
+ $plugin->setConfigProperty('champsNom', $champsNom);
return $champsNom;
}
diff --git a/templates/recu.skel b/templates/recu.skel
index e3dcf3b..8691222 100644
--- a/templates/recu.skel
+++ b/templates/recu.skel
@@ -79,8 +79,8 @@
Bénéficiaire des versements
-
Association « {{$config.nom_asso}} »
- {{$config.adresse_asso}}
+
Association « {{$config.org_name}} »
+ {{$config.org_address}}
Objet : {{$objet_asso}}
diff --git a/templates/recu_html.tpl b/templates/recu_html.tpl
index 8fb840a..2abd833 100644
--- a/templates/recu_html.tpl
+++ b/templates/recu_html.tpl
@@ -33,8 +33,8 @@
Bénéficiaire des versements
-
Association « {$nom_asso} »
- {$adresse_asso}
+
Association « {$org_name} »
+ {$org_address}
Objet : {$objet_asso}
diff --git a/uninstall.php b/uninstall.php
index 430e8f0..4246dbe 100644
--- a/uninstall.php
+++ b/uninstall.php
@@ -1,11 +1,10 @@
delete();
}
diff --git a/upgrade.php b/upgrade.php
index 7b08b05..699d018 100644
--- a/upgrade.php
+++ b/upgrade.php
@@ -14,6 +14,6 @@ if (version_compare($old_version, '0.9', '<'))
$configNum->membre = false;
$configNum->sequentiel = false;
$configNum->valeur_init = 1;
- $plugin->setConfig('numerotation', $configNum);
- $plugin->setConfig('imprimerCourriel', false);
+ $plugin->setConfigProperty('numerotation', $configNum);
+ $plugin->setConfigProperty('imprimerCourriel', false);
}
From 979b1f41647f16a68878f68ccb03a5f991440095 Mon Sep 17 00:00:00 2001
From: engel <>
Date: Wed, 4 Oct 2023 12:34:48 +0000
Subject: [PATCH 04/19] modification mineures
FossilOrigin-Name: 4bbfe37468c90399ec476598d27d328876db01f0c1d710556f3ab36a95c6f172
---
templates/config.tpl | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/templates/config.tpl b/templates/config.tpl
index 0e60b4e..250a67e 100644
--- a/templates/config.tpl
+++ b/templates/config.tpl
@@ -1,16 +1,16 @@
{include file="%s/templates/_nav.tpl"|args:$plugin_root current_nav="config"}
+{form_errors}
+
Configuration
-{if $ok && !$form->hasErrors()}
+{if isset($_GET['ok'])}
La configuration a bien été enregistrée.
{/if}
-{form_errors}
-
@@ -186,7 +191,7 @@
var lesDivs = document.querySelectorAll('.actions');
for (i = 0; i < lesDivs.length; ++i) {
var up = document.createElement('a');
- up.className = 'icn up';
+ up.className = 'up icn-btn';
up.innerHTML = '↑';
up.title = 'Déplacer vers le haut';
up.onclick = function(e) {
From b53f089c87940cda19d50e0bfc51d7126e30db27 Mon Sep 17 00:00:00 2001
From: engel <>
Date: Thu, 12 Oct 2023 08:47:40 +0000
Subject: [PATCH 05/19] la table membres devient users
FossilOrigin-Name: b3f100b821b0fca9ad9416d202ba4c3fa6b010ea8fbb3e6ec1a7358a18ef2ec2
---
lib/Utils.php | 48 ++++++++++++++++++++++++------------------------
1 file changed, 24 insertions(+), 24 deletions(-)
diff --git a/lib/Utils.php b/lib/Utils.php
index d7c5fcf..ced8bca 100644
--- a/lib/Utils.php
+++ b/lib/Utils.php
@@ -55,8 +55,8 @@ class Utils
acc_accounts.code as codeCompte,
acc_accounts.label as nomCompte
FROM acc_transactions_users
- INNER JOIN membres
- ON acc_transactions_users.id_user = membres.id
+ INNER JOIN users
+ ON acc_transactions_users.id_user = users.id
INNER JOIN acc_transactions
ON acc_transactions_users.id_transaction = acc_transactions.id
INNER JOIN acc_transactions_lines
@@ -154,14 +154,14 @@ class Utils
$tri = Utils::combinerTri($champsNom);
$sql = sprintf(
'SELECT
- membres.id as idUser,
+ users.id as idUser,
acc_accounts.id as idCompte,
acc_accounts.code as codeCompte,
acc_transactions_lines.credit as versement,
acc_transactions.date
FROM acc_transactions_users
- INNER JOIN membres
- ON acc_transactions_users.id_user = membres.id
+ INNER JOIN users
+ ON acc_transactions_users.id_user = users.id
INNER JOIN acc_transactions
ON acc_transactions_users.id_transaction = acc_transactions.id
INNER JOIN acc_transactions_lines
@@ -203,12 +203,12 @@ class Utils
services_fees.id as idTarif,
acc_accounts.id as idCompte,
acc_accounts.code as codeCompte,
- membres.id as idUser,
+ users.id as idUser,
acc_transactions_lines.credit as versement,
acc_transactions.date
FROM acc_transactions_users
- INNER JOIN membres
- ON acc_transactions_users.id_user = membres.id
+ INNER JOIN users
+ ON acc_transactions_users.id_user = users.id
INNER JOIN acc_transactions
ON acc_transactions_users.id_transaction = acc_transactions.id
INNER JOIN services_users
@@ -253,12 +253,12 @@ class Utils
0 as idTarif,
acc_accounts.id as idCompte,
acc_accounts.code as codeCompte,
- membres.id as idUser,
+ users.id as idUser,
acc_transactions_lines.credit as versement,
acc_transactions.date
FROM acc_transactions_users
- INNER JOIN membres
- ON acc_transactions_users.id_user = membres.id
+ INNER JOIN users
+ ON acc_transactions_users.id_user = users.id
INNER JOIN acc_transactions
ON acc_transactions_users.id_transaction = acc_transactions.id
INNER JOIN acc_transactions_lines
@@ -293,17 +293,17 @@ class Utils
$tri = Utils::combinerTri($champsNom);
$sql = sprintf(
'SELECT
- membres.id as idUser,
- membres.numero,
- membres.email,
+ users.id as idUser,
+ users.numero,
+ users.email,
row_number() over(order by %s) as rang,
%s as nom,
- membres.adresse as adresse,
- membres.code_postal as codePostal,
- membres.ville as ville
+ users.adresse as adresse,
+ users.code_postal as codePostal,
+ users.ville as ville
FROM
acc_transactions_users,
- membres,
+ users,
acc_transactions
INNER JOIN acc_transactions_lines
ON acc_transactions_lines.id_transaction = acc_transactions.id
@@ -312,9 +312,9 @@ class Utils
AND
acc_transactions_users.id_transaction = acc_transactions.id
AND
- acc_transactions_users.id_user = membres.id
+ acc_transactions_users.id_user = users.id
)
- GROUP by membres.id
+ GROUP by users.id
ORDER by %1$s COLLATE U_NOCASE
',
$tri,
@@ -344,10 +344,10 @@ class Utils
private static function combinerChamps($champs)
{
$op = ' || " " || ';
- $result = 'ifnull(membres.' . $champs[0] . ', "")';
+ $result = 'ifnull(users.' . $champs[0] . ', "")';
for ($i = 1; $i < count($champs); ++$i)
{
- $result .= $op . 'ifnull(membres.' . $champs[$i] . ', "")';
+ $result .= $op . 'ifnull(users.' . $champs[$i] . ', "")';
}
return 'trim(' . $result . ')';
}
@@ -359,10 +359,10 @@ class Utils
*/
private static function combinerTri(array $champs) : string
{
- $tri = 'membres.' . $champs[0];
+ $tri = 'users.' . $champs[0];
for ($i = 1; $i < count($champs); ++$i)
{
- $tri .= ', membres.' . $champs[$i];
+ $tri .= ', users.' . $champs[$i];
}
return $tri;
}
From 8091c8b87d57e83b40848694299ddbc1ceeb407d Mon Sep 17 00:00:00 2001
From: engel <>
Date: Fri, 10 Nov 2023 11:31:18 +0000
Subject: [PATCH 06/19] Remplacement PLUGIN_URL ; ajout session_start()
FossilOrigin-Name: 7fad3fa0b91ae127517c4e9d9a62a316280e17c561855a6abde8711e3cac72f2
---
admin/action.php | 1 +
admin/choix_annee.php | 3 ++-
admin/config.php | 1 +
admin/index.php | 2 ++
admin/style.css | 5 +++++
admin/versements_activites.php | 10 +++++-----
admin/versements_personnes.php | 2 +-
lib/Utils.php | 2 +-
templates/index.tpl | 2 +-
9 files changed, 19 insertions(+), 9 deletions(-)
diff --git a/admin/action.php b/admin/action.php
index 86a998b..7776094 100644
--- a/admin/action.php
+++ b/admin/action.php
@@ -1,6 +1,7 @@
assign('anneesFiscales', $anneesFiscales);
diff --git a/admin/config.php b/admin/config.php
index 60c4981..a5d7c51 100644
--- a/admin/config.php
+++ b/admin/config.php
@@ -1,6 +1,7 @@
assign('plugin_config', $plugin->getConfig());
$tpl->assign('nbTaux', $nbTaux);
$tpl->assign('nbChamps', $nbChamps);
$tpl->assign('plugin_css', ['style.css']);
+$tpl->assign('plugin_url', \Paheko\Utils::plugin_url());
// envoyer au template
$tpl->display(PLUGIN_ROOT . '/templates/index.tpl');
diff --git a/admin/style.css b/admin/style.css
index eb52c78..e096fff 100644
--- a/admin/style.css
+++ b/admin/style.css
@@ -109,6 +109,11 @@ div.actions
display : inline;
}
+a.icn-btn {
+ font-family: "paheko", sans-serif;
+ font-size : 1.2em;
+}
+
dl.config
{
padding-bottom : 1ex;
diff --git a/admin/versements_activites.php b/admin/versements_activites.php
index 85a7f01..56114bf 100644
--- a/admin/versements_activites.php
+++ b/admin/versements_activites.php
@@ -16,7 +16,7 @@ if (! isset($_SESSION['tauxSelectionnes'])
&&
null === f('comptes'))
{
- \Paheko\Utils::redirect(PLUGIN_URL . 'index.php');
+ \Paheko\Utils::redirect(\Paheko\Utils::plugin_url() . 'index.php');
}
// tarifs sélectionnés
@@ -25,11 +25,11 @@ if (null !== f('tarifs')) {
} else if (! isset($_SESSION['tauxSelectionnes'])) {
$tarifsSelectionnes = [];
}
-error_log("\ntarifsSelectionnes=" . print_r($tarifsSelectionnes, true));
+// error_log("\ntarifsSelectionnes=" . print_r($tarifsSelectionnes, true));
// comptes sélectionnés
if (null !== f('comptes')) {
$_SESSION['comptesSelectionnes'] = f('comptes');
- error_log("\ncomptesSelectionnes=" . print_r($_SESSION['comptesSelectionnes'], true));
+ // error_log("\ncomptesSelectionnes=" . print_r($_SESSION['comptesSelectionnes'], true));
} /*
else if (! isset($_SESSION['tauxSelectionnes'])) {
$_SESSION['comptesSelectionnes'] = [];
@@ -72,7 +72,7 @@ if (count($lesTarifs) != 0)
$lesTarifs,
$lesComptes,
$champsNom);
- error_log("lesVersements=" . print_r($_SESSION['lesVersements'], true));
+ // error_log("lesVersements=" . print_r($_SESSION['lesVersements'], true));
}
// ajouter les versements sans tarif (tri par nom, compte, date)
@@ -86,7 +86,7 @@ if (isset($_SESSION['comptesSelectionnes']))
$_SESSION['lesVersements'][] = $versement;
}
}
-error_log("lesVersements=" . print_r($_SESSION['lesVersements'], true));
+//error_log("lesVersements=" . print_r($_SESSION['lesVersements'], true));
// préparation de l'affichage
$tpl->assign('lesVersements', $_SESSION['lesVersements']);
diff --git a/admin/versements_personnes.php b/admin/versements_personnes.php
index c23d423..8db95e8 100644
--- a/admin/versements_personnes.php
+++ b/admin/versements_personnes.php
@@ -11,7 +11,7 @@ if (! isset($_SESSION['taux_reduction'])
&&
null === $taux)
{
- \Paheko\Utils::redirect(PLUGIN_URL . 'index.php');
+ \Paheko\Utils::redirect(\Paheko\Utils::plugin_url() . 'index.php');
}
if (null !== $taux) {
$_SESSION['taux_reduction'] = $taux;
diff --git a/lib/Utils.php b/lib/Utils.php
index ced8bca..2bbb2f9 100644
--- a/lib/Utils.php
+++ b/lib/Utils.php
@@ -230,7 +230,7 @@ class Utils
$condition,
$tri
);
- error_log("\ngetVersementsTarifsComptes : sql=" . $sql);
+ // error_log("\ngetVersementsTarifsComptes : sql=" . $sql);
return $db->get($sql);
}
diff --git a/templates/index.tpl b/templates/index.tpl
index 9a6dc51..1f6ca84 100644
--- a/templates/index.tpl
+++ b/templates/index.tpl
@@ -4,7 +4,7 @@