From 546302cde914a2143f86e6a384cbc5085d55396a Mon Sep 17 00:00:00 2001 From: polo Date: Sun, 2 Jun 2024 23:19:01 +0200 Subject: =?UTF-8?q?m=C3=A9thode=20cleanSpecialChars()=20pour=20g=C3=A9rer?= =?UTF-8?q?=20les=20",=20un=20peu=20sale?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Latex.php | 16 +++++++--------- src/model/CESU.php | 1 + src/model/Clients.php | 8 +++++--- src/model/DB.php | 20 ++++++++++---------- src/model/DevisFactures.php | 1 + src/model/Locations.php | 1 + src/model/Model.php | 13 +++++++++---- src/model/Prestations.php | 3 ++- "\303\240 faire.txt" | 11 +++-------- 9 files changed, 39 insertions(+), 35 deletions(-) diff --git a/src/Latex.php b/src/Latex.php index fd76f7b..6f1219f 100644 --- a/src/Latex.php +++ b/src/Latex.php @@ -46,17 +46,15 @@ abstract class Latex public function makeLatex() { - $data = $this->data; - - // on obtient la variable $latex avec ob_get_clean() - // le include() ici, c'est du génie ou c'est moche ou les deux? - // un nouveau fichier php est inséré à chaque itération + $data = $this->data; // tableau à inséré dans du code latex include('latex_templates/' . $this->type . '.php'); + $this->latex = $latex; // buffer récupéré par ob_get_clean() - // on retourne le buffer - // normallement le code PHP inséré avec include est nettoyé en quittant la fonction - $this->latex = $latex; - //return($latex); + // QUESTION: + // cette utilisation de include(), c'est du génie ou c'est moche ou les deux? + // un nouveau fichier est inséré à chaque appel de makeLatex() + // puis la mémoire est libérée à la fin de la fonction + // le PHP inséré fait donc partie de cette "mémoire" } // getters diff --git a/src/model/CESU.php b/src/model/CESU.php index f6c6630..8bea94d 100644 --- a/src/model/CESU.php +++ b/src/model/CESU.php @@ -26,6 +26,7 @@ class CESU extends Model } public function set(string $entry, string $input) { + $input = $this->cleanSpecialChars($input); // possibilité que $input devienne une chaine vide switch($entry) { case "Tâche effectuée:": diff --git a/src/model/Clients.php b/src/model/Clients.php index 0f70eb6..ce38d86 100644 --- a/src/model/Clients.php +++ b/src/model/Clients.php @@ -44,6 +44,7 @@ class Clients extends Model } public function set(string $entry, string $input) { + $input = $this->cleanSpecialChars($input); // possibilité que $input devienne une chaine vide switch($entry) { case "Prénom Nom:": @@ -104,8 +105,9 @@ class Clients extends Model } public function setTelephone($value) { - // type string parce que - // zenity renvoie une chaine, on peut ainsi garder le 0 au début et avoir plusieurs numéros (séparés par virgule et espace) + // type string parce que: + // - zenity renvoie une chaine + // - permet de garder le 0 au début et d'inscrire plusieurs numéros $this->telephone = (string) $value; return $this; } @@ -124,6 +126,7 @@ class Clients extends Model $this->type = (string) $value; return $this; } + public function typeToClient(): bool { if($this->type != 'client') @@ -137,7 +140,6 @@ class Clients extends Model } } - public function findByKeywords(array $keywords, string $field): array // n'hydrate pas les variables, on doit choisir un client et hydrater ensuite { $result = []; diff --git a/src/model/DB.php b/src/model/DB.php index 4e54015..47407ba 100644 --- a/src/model/DB.php +++ b/src/model/DB.php @@ -1,22 +1,22 @@ cleanSpecialChars($input); // possibilité que $input devienne une chaine vide switch($entry) { case "Tâches:": diff --git a/src/model/Locations.php b/src/model/Locations.php index ead2727..103cecd 100644 --- a/src/model/Locations.php +++ b/src/model/Locations.php @@ -36,6 +36,7 @@ class Locations extends Model } public function set(string $entry, string $input) { + $input = $this->cleanSpecialChars($input); // possibilité que $input devienne une chaine vide switch($entry) { case "Désignation:": diff --git a/src/model/Model.php b/src/model/Model.php index 1fdab7d..fad25b3 100644 --- a/src/model/Model.php +++ b/src/model/Model.php @@ -64,8 +64,7 @@ abstract class Model extends DB // méthode lancée par des objets de type enfants function hydrateFromForm(string $data_string, Object $Presta = NULL): bool // quand l'objet est $Details, on hydrate aussi $Presta { - //~ $tableSize = count(StructTablesDB::$structureOfTables[$this->getTable()]); // int - + $data_string = $this->cleanSpecialChars($data_string); // possibilité que $data_string devienne une chaine vide if($data_string !== '') { $data_array = explode('|', $data_string); // array @@ -130,13 +129,19 @@ abstract class Model extends DB } } + protected function cleanSpecialChars(string $data): string + { + $search = ['"']; + return str_replace($search, '', $data); + } + // exécuter le SQL - // les attributs correspondent aux ? dans les requêtes préparées + // les $attributs correspondent aux ? dans les requêtes préparées // ne pas surcharger la méthode PDO::query() qui n'est pas compatible protected function execQuery(string $sql, array $attributes = null) { - $this->db = parent::getInstance(); // connexion + $this->db = parent::getInstance(); // parent::, self:: et DB:: sont équivalents if($attributes !== null) // requête préparée { diff --git a/src/model/Prestations.php b/src/model/Prestations.php index 8591e83..88eb4f0 100644 --- a/src/model/Prestations.php +++ b/src/model/Prestations.php @@ -70,6 +70,7 @@ class Prestations extends Model } public function set(string $entry, string $input) { + $input = $this->cleanSpecialChars($input); // possibilité que $input devienne une chaine vide switch($entry) { case "Numéro prestation:": @@ -134,7 +135,7 @@ class Prestations extends Model } public function setCommentaires(string $value) { - $this->commentaires = $value; + $this->commentaires = $this->cleanSpecialChars($value); // possibilité que $this->commentaires devienne une chaine vide return $this; } public function setNumeroPresta($value) diff --git "a/\303\240 faire.txt" "b/\303\240 faire.txt" index d976496..7799ef4 100644 --- "a/\303\240 faire.txt" +++ "b/\303\240 faire.txt" @@ -1,13 +1,8 @@ -BUGS: - -dans le menu Modifier une prestation lorsqu'on utilise la chaine: "runtime Redist Visual C++ pour VS 2015", les espaces entre des guillemets doubles provoquent un saut de ligne - - À FAIRE: -permettre de modifier le code prestation dans "Modifier une prestation" +permettre de modifier le code_presta dans "Modifier une prestation" -gérer les caractères spéciaux: " +si aucun client n'est trouvé, montrer tous les clients erreur de bash avec zenity: > @@ -17,7 +12,7 @@ taille des fenêtres zenity (avec gtk4) une classe CodePresta? -pouvoir faire plusieurs modification d'une presta sans devoir la retrouver à chaque fois +pouvoir faire plusieurs modifications d'une presta sans devoir la retrouver à chaque fois possibilité d'imprimer une facture vierge avec juste les coordonnées d'un client pour remplir sur-place -- cgit v1.2.3