From e41129b0b7533068bd957e395db0e810956b19fb Mon Sep 17 00:00:00 2001 From: BuildTools Date: Sun, 22 Mar 2020 06:24:13 +0100 Subject: [PATCH] =?UTF-8?q?0.2.0:=20securit=C3=A9=20(json=5Fencode)=20+?= =?UTF-8?q?=C2=A0petite=20am=C3=A9liorations?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- garradin_plugin.ini | 2 +- lib/Facture.php | 55 +++++++++++++++-------------------- templates/clients.tpl | 12 ++++---- templates/facture_ajouter.tpl | 16 +++++----- uninstall.php | 2 +- upgrade.php | 27 ++++++++++++++--- www/admin/facture_ajouter.php | 7 +---- 7 files changed, 64 insertions(+), 57 deletions(-) diff --git a/garradin_plugin.ini b/garradin_plugin.ini index a686095..92bf02a 100644 --- a/garradin_plugin.ini +++ b/garradin_plugin.ini @@ -2,7 +2,7 @@ nom="Facturation" description="Permet d'éditer des factures et devis à ses membres et à une base de clients supplémentaire." auteur="zou" url="https://gitlab.com/ramoloss/garradin-plugin-facturation/" -version="0.1.0" +version="0.2.0" menu=1 config=1 min_version="0.9.2" \ No newline at end of file diff --git a/lib/Facture.php b/lib/Facture.php index 613e4d3..97b2b0e 100644 --- a/lib/Facture.php +++ b/lib/Facture.php @@ -55,40 +55,34 @@ class Facture throw new UserException("$k est de valeur non-attendue ($data)."); } break; -case 'receveur_id': - if (!is_numeric($datas[$k]) || $datas[$k] < 0 ) - { - throw new UserException("L'id du receveur est non-attendu ($data)."); + case 'receveur_id': + if (!is_numeric($datas[$k]) || $datas[$k] < 0) { + throw new UserException("L'id du receveur est non-attendu ($data)."); } break; -case 'date_emission': - if (!strtotime($datas[$k])) - { - throw new UserException("La date d'émission est non-attendue ($data)."); + case 'date_emission': + if (!strtotime($datas[$k])) { + throw new UserException("La date d'émission est non-attendue ($data)."); } break; -case 'date_echeance': - if (!strtotime($datas[$k])) - { - throw new UserException("La date d'émission est non-attendue ($data)."); + case 'date_echeance': + if (!strtotime($datas[$k])) { + throw new UserException("La date d'émission est non-attendue ($data)."); } - if (isset($datas['date_emission']) && (strtotime($datas[$k]) <= strtotime($datas['date_emission']) ) ) - { + if (isset($datas['date_emission']) && (strtotime($datas[$k]) <= strtotime($datas['date_emission']))) { throw new UserException("La date d'échéance est antérieure ou égale à la date d'émission ($data)."); } break; -case 'moyen_paiement': - $cats = new \Garradin\Compta\Categories; - if(!array_key_exists($datas[$k], $cats->listMoyensPaiement())) - { - throw new UserException("Le moyen de paiement ne correspond pas à la liste interne ($data)."); + case 'moyen_paiement': + $cats = new \Garradin\Compta\Categories; + if (!array_key_exists($datas[$k], $cats->listMoyensPaiement())) { + throw new UserException("Le moyen de paiement ne correspond pas à la liste interne ($data)."); } unset($cats); break; -case 'contenu': - if(!is_array($datas[$k]) || empty($datas[$k])) - { - throw new UserException("Le contenu du document est vide ($data)."); + case 'contenu': + if (!is_array($datas[$k]) || empty($datas[$k])) { + throw new UserException("Le contenu du document est vide ($data)."); } $total = 0; $vide = 1; @@ -108,12 +102,11 @@ case 'contenu': { throw new UserException("Toutes les désignations/prix sont vides."); } - $datas[$k] = serialize($datas[$k]); + $datas[$k] = json_encode($datas[$k]); break; -case 'total': - if(!isset($datas['contenu'])) - { - throw new UserException("Pas de contenu fourni pour vérifier le total."); + case 'total': + if (!isset($datas['contenu'])) { + throw new UserException("Pas de contenu fourni pour vérifier le total."); } if ($total != $datas[$k]) { @@ -151,7 +144,7 @@ case 'total': throw new UserException("Pas de facture retournée avec cet id."); } - $r->contenu = unserialize($r->contenu); + $r->contenu = json_decode($r->contenu, true); return $r; } @@ -164,7 +157,7 @@ case 'total': foreach ($r as $e) { - $e->contenu = unserialize((string)$e->contenu); + $e->contenu = json_decode((string)$e->contenu, true); } return $r; @@ -206,7 +199,7 @@ case 'total': foreach ($r as $e) { - $e->contenu = unserialize((string)$e->contenu); + $e->contenu = json_decode((string)$e->contenu, true); } return empty($r)?false:$r; diff --git a/templates/clients.tpl b/templates/clients.tpl index ac4b75d..19e3743 100644 --- a/templates/clients.tpl +++ b/templates/clients.tpl @@ -52,17 +52,17 @@ Ajouter un client
obligatoire
-
+
obligatoire
-
+
obligatoire
-
+
obligatoire
-
+
-
+
-
+
diff --git a/templates/facture_ajouter.tpl b/templates/facture_ajouter.tpl index ca1c462..4123285 100644 --- a/templates/facture_ajouter.tpl +++ b/templates/facture_ajouter.tpl @@ -13,8 +13,8 @@
@@ -25,18 +25,18 @@
*}
obligatoire et unique
-
+

Chaque facture doit comporter un numéro unique délivré chronologiquement et de façon continue.
Il faut que le système adopté par l'association garantisse que deux factures émises la même année ne peuvent pas porter le même numéro.


obligatoire
-
+
obligatoire
-
+
-
+
@@ -50,8 +50,8 @@
- - + +
obligatoire
diff --git a/uninstall.php b/uninstall.php index e876c45..79641e8 100644 --- a/uninstall.php +++ b/uninstall.php @@ -3,4 +3,4 @@ namespace Garradin; $db = DB::getInstance(); -$db->exec(file_get_contents(dirname(__FILE__) . "/data/schema_remove.sql")); +$db->import(dirname(__FILE__) . "/data/schema_remove.sql"); diff --git a/upgrade.php b/upgrade.php index 990e6e1..7754401 100644 --- a/upgrade.php +++ b/upgrade.php @@ -2,7 +2,26 @@ namespace Garradin; -$db = DB::getInstance(true); -$db->exec('BEGIN;'); -$db->exec(file_get_contents(dirname(__FILE__) . "/data/schema.sql")); -$db->exec('END;'); +$db = DB::getInstance(); +$db->import(dirname(__FILE__) . "/data/schema.sql"); + +# plugins_facturations_factures +# foreach(facture ) +# $tmp = unserialize(désignations) +# $designation = json_encode($tmp) + + + +// $r = (array) DB::getInstance()->get('SELECT *, strftime(\'%s\', date_emission) AS date_emission, +// strftime(\'%s\', date_echeance) AS date_echeance +// FROM plugin_facturation_factures'); + +$r = (array) DB::getInstance()->get('SELECT * FROM plugin_facturation_factures'); + +foreach ($r as $e) { + $e->contenu =json_encode(unserialize((string) $e->contenu)); + $db->update('plugin_facturation_factures', $e, $db->where('id', (int)$e->id)); +} + +// var_dump($db->update('plugin_facturation_factures', $r)); + diff --git a/www/admin/facture_ajouter.php b/www/admin/facture_ajouter.php index 49c925b..7e022b8 100644 --- a/www/admin/facture_ajouter.php +++ b/www/admin/facture_ajouter.php @@ -91,14 +91,9 @@ if (f('add')) } -$tpl->assign('type', f('type') ?: ''); -$tpl->assign('numero_facture', f('numero_facture') ?: ''); -$tpl->assign('date_emission', f('date_emission') ?: ''); -$tpl->assign('date_echeance', f('date_echeance') ?: ''); -$tpl->assign('reglee', f('reglee') ?: 'off'); -$tpl->assign('base_receveur', f('base_receveur') ?: ''); $tpl->assign('client_id', f('client') ?: -1); $tpl->assign('membre_id', f('membre') ?: -1); + $designations = []; $prix = []; if (($d = f('designation')) && ($p = f('prix')))