summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Latex.php16
-rw-r--r--src/model/CESU.php1
-rw-r--r--src/model/Clients.php8
-rw-r--r--src/model/DB.php20
-rw-r--r--src/model/DevisFactures.php1
-rw-r--r--src/model/Locations.php1
-rw-r--r--src/model/Model.php13
-rw-r--r--src/model/Prestations.php3
-rw-r--r--à faire.txt11
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
46 46
47 public function makeLatex() 47 public function makeLatex()
48 { 48 {
49 $data = $this->data; 49 $data = $this->data; // tableau à inséré dans du code latex
50
51 // on obtient la variable $latex avec ob_get_clean()
52 // le include() ici, c'est du génie ou c'est moche ou les deux?
53 // un nouveau fichier php est inséré à chaque itération
54 include('latex_templates/' . $this->type . '.php'); 50 include('latex_templates/' . $this->type . '.php');
51 $this->latex = $latex; // buffer récupéré par ob_get_clean()
55 52
56 // on retourne le buffer 53 // QUESTION:
57 // normallement le code PHP inséré avec include est nettoyé en quittant la fonction 54 // cette utilisation de include(), c'est du génie ou c'est moche ou les deux?
58 $this->latex = $latex; 55 // un nouveau fichier est inséré à chaque appel de makeLatex()
59 //return($latex); 56 // puis la mémoire est libérée à la fin de la fonction
57 // le PHP inséré fait donc partie de cette "mémoire"
60 } 58 }
61 59
62 // getters 60 // 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
26 } 26 }
27 public function set(string $entry, string $input) 27 public function set(string $entry, string $input)
28 { 28 {
29 $input = $this->cleanSpecialChars($input); // possibilité que $input devienne une chaine vide
29 switch($entry) 30 switch($entry)
30 { 31 {
31 case "Tâche effectuée:": 32 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
44 } 44 }
45 public function set(string $entry, string $input) 45 public function set(string $entry, string $input)
46 { 46 {
47 $input = $this->cleanSpecialChars($input); // possibilité que $input devienne une chaine vide
47 switch($entry) 48 switch($entry)
48 { 49 {
49 case "Prénom Nom:": 50 case "Prénom Nom:":
@@ -104,8 +105,9 @@ class Clients extends Model
104 } 105 }
105 public function setTelephone($value) 106 public function setTelephone($value)
106 { 107 {
107 // type string parce que 108 // type string parce que:
108 // 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) 109 // - zenity renvoie une chaine
110 // - permet de garder le 0 au début et d'inscrire plusieurs numéros
109 $this->telephone = (string) $value; 111 $this->telephone = (string) $value;
110 return $this; 112 return $this;
111 } 113 }
@@ -124,6 +126,7 @@ class Clients extends Model
124 $this->type = (string) $value; 126 $this->type = (string) $value;
125 return $this; 127 return $this;
126 } 128 }
129
127 public function typeToClient(): bool 130 public function typeToClient(): bool
128 { 131 {
129 if($this->type != 'client') 132 if($this->type != 'client')
@@ -137,7 +140,6 @@ class Clients extends Model
137 } 140 }
138 } 141 }
139 142
140
141 public function findByKeywords(array $keywords, string $field): array // n'hydrate pas les variables, on doit choisir un client et hydrater ensuite 143 public function findByKeywords(array $keywords, string $field): array // n'hydrate pas les variables, on doit choisir un client et hydrater ensuite
142 { 144 {
143 $result = []; 145 $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 @@
1<?php 1<?php
2// src/model/DB.php 2// src/model/DB.php
3 3
4// cette classe applique le pattern "singleton" 4// cette classe applique le pattern "singleton", il empêche la classe PDO d'être instanciée plusieurs fois
5// but: ne permettre qu'une seule instance de la classe (laquelle sera éventuellement globale) 5// l'instance est récupérable partout mais sans les inconvénients d'une variable globale
6 6
7// comment? 7// comment?
8// - Un attribut privé et statique contiendra l'instance unique de la classe 8// - le constructeur est privé, c'est à cette condition que l'instanciation devient contrôlable
9// - Un constructeur privé afin d'empêcher l'instanciation depuis l'extérieur de la classe 9// - notre instance unique est stockée dans un attribut privé et statique
10// - Une méthode statique qui permet soit d'instancier la classe soit de retourner l'unique instance créée. 10// - une méthode statique appele le contructeur si l'instance unique n'existe pas encore, puis retourne l'instance
11 11
12class DB extends PDO 12class DB extends PDO
13{ 13{
14 // paramètres du constructeur de PDO (avec sqlite seul le premier est nécessaire) 14 // paramètres du constructeur de PDO
15 public static $dsn = ''; // Data Source Name = 1er paramètre 15 public static $dsn = ''; // Data Source Name = préfixe + hôte + port + nom de la base + encodage
16 //~ public static $dbms = 'sqlite';
17 //~ public static $user = ''; 16 //~ public static $user = '';
18 //~ public static $password = ''; 17 //~ public static $password = '';
19 //~ public static $options = ''; 18 //~ public static $options = '';
19
20 private static $Instance; 20 private static $Instance;
21 21
22 private function __construct() // exécuté une seul fois à cause du "if" dans getInstance() 22 private function __construct() // exécuté une seul fois à cause du "if" dans getInstance()
@@ -36,12 +36,12 @@ class DB extends PDO
36 } 36 }
37 } 37 }
38 38
39 // créer son objet avec: $Bdd = parent::getInstance(); 39 // créer son objet depuis Model avec: $db = parent::getInstance();
40 public static function getInstance(): self 40 public static function getInstance(): self
41 { 41 {
42 if(self::$Instance === null) 42 if(self::$Instance === null)
43 { 43 {
44 self::$Instance = new self(); 44 self::$Instance = new self;
45 } 45 }
46 return self::$Instance; 46 return self::$Instance;
47 } 47 }
diff --git a/src/model/DevisFactures.php b/src/model/DevisFactures.php
index 7c31f13..c667fb2 100644
--- a/src/model/DevisFactures.php
+++ b/src/model/DevisFactures.php
@@ -65,6 +65,7 @@ class DevisFactures extends Model
65 65
66 public function set(string $entry, string $input) // trouve la bonne méthode 66 public function set(string $entry, string $input) // trouve la bonne méthode
67 { 67 {
68 $input = $this->cleanSpecialChars($input); // possibilité que $input devienne une chaine vide
68 switch($entry) 69 switch($entry)
69 { 70 {
70 case "Tâches:": 71 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
36 } 36 }
37 public function set(string $entry, string $input) 37 public function set(string $entry, string $input)
38 { 38 {
39 $input = $this->cleanSpecialChars($input); // possibilité que $input devienne une chaine vide
39 switch($entry) 40 switch($entry)
40 { 41 {
41 case "Désignation:": 42 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
64 // méthode lancée par des objets de type enfants 64 // méthode lancée par des objets de type enfants
65 function hydrateFromForm(string $data_string, Object $Presta = NULL): bool // quand l'objet est $Details, on hydrate aussi $Presta 65 function hydrateFromForm(string $data_string, Object $Presta = NULL): bool // quand l'objet est $Details, on hydrate aussi $Presta
66 { 66 {
67 //~ $tableSize = count(StructTablesDB::$structureOfTables[$this->getTable()]); // int 67 $data_string = $this->cleanSpecialChars($data_string); // possibilité que $data_string devienne une chaine vide
68
69 if($data_string !== '') 68 if($data_string !== '')
70 { 69 {
71 $data_array = explode('|', $data_string); // array 70 $data_array = explode('|', $data_string); // array
@@ -130,13 +129,19 @@ abstract class Model extends DB
130 } 129 }
131 } 130 }
132 131
132 protected function cleanSpecialChars(string $data): string
133 {
134 $search = ['"'];
135 return str_replace($search, '', $data);
136 }
137
133 138
134 // exécuter le SQL 139 // exécuter le SQL
135 // les attributs correspondent aux ? dans les requêtes préparées 140 // les $attributs correspondent aux ? dans les requêtes préparées
136 // ne pas surcharger la méthode PDO::query() qui n'est pas compatible 141 // ne pas surcharger la méthode PDO::query() qui n'est pas compatible
137 protected function execQuery(string $sql, array $attributes = null) 142 protected function execQuery(string $sql, array $attributes = null)
138 { 143 {
139 $this->db = parent::getInstance(); // connexion 144 $this->db = parent::getInstance(); // parent::, self:: et DB:: sont équivalents
140 145
141 if($attributes !== null) // requête préparée 146 if($attributes !== null) // requête préparée
142 { 147 {
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
70 } 70 }
71 public function set(string $entry, string $input) 71 public function set(string $entry, string $input)
72 { 72 {
73 $input = $this->cleanSpecialChars($input); // possibilité que $input devienne une chaine vide
73 switch($entry) 74 switch($entry)
74 { 75 {
75 case "Numéro prestation:": 76 case "Numéro prestation:":
@@ -134,7 +135,7 @@ class Prestations extends Model
134 } 135 }
135 public function setCommentaires(string $value) 136 public function setCommentaires(string $value)
136 { 137 {
137 $this->commentaires = $value; 138 $this->commentaires = $this->cleanSpecialChars($value); // possibilité que $this->commentaires devienne une chaine vide
138 return $this; 139 return $this;
139 } 140 }
140 public function setNumeroPresta($value) 141 public function setNumeroPresta($value)
diff --git a/à faire.txt b/à faire.txt
index d976496..7799ef4 100644
--- a/à faire.txt
+++ b/à faire.txt
@@ -1,13 +1,8 @@
1BUGS:
2
3dans 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
4
5
6À FAIRE: 1À FAIRE:
7 2
8permettre de modifier le code prestation dans "Modifier une prestation" 3permettre de modifier le code_presta dans "Modifier une prestation"
9 4
10gérer les carac¨res spéciaux: " 5si aucun client n'est trouvé, montrer tous les clients
11 6
12erreur de bash avec zenity: > 7erreur de bash avec zenity: >
13 8
@@ -17,7 +12,7 @@ taille des fenêtres zenity (avec gtk4)
17 12
18une classe CodePresta? 13une classe CodePresta?
19 14
20pouvoir faire plusieurs modification d'une presta sans devoir la retrouver à chaque fois 15pouvoir faire plusieurs modifications d'une presta sans devoir la retrouver à chaque fois
21 16
22possibilité d'imprimer une facture vierge avec juste les coordonnées d'un client pour remplir sur-place 17possibilité d'imprimer une facture vierge avec juste les coordonnées d'un client pour remplir sur-place
23 18