summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpolo <ordipolo@gmx.fr>2024-07-15 17:49:31 +0200
committerpolo <ordipolo@gmx.fr>2024-07-15 17:49:31 +0200
commitc4a3f80a6dccdff9b2abff6f159ef8fdd4382787 (patch)
tree000a98fcff60aba9cd0784f181c0ac4a4056a2c4
parent14f68d7d93cd6e498a7d15cf5ce5b227ed0683a7 (diff)
downloadAppliGestionPHP-c4a3f80a6dccdff9b2abff6f159ef8fdd4382787.zip
déplacement dossier d'exécution, suppression de Config::checkPath, bugs
-rw-r--r--README.txt9
-rw-r--r--config/config.ini (renamed from config.ini)14
-rwxr-xr-xindex.php7
-rw-r--r--src/Config.php45
-rw-r--r--src/Latex.php4
-rw-r--r--src/dependances.php2
-rw-r--r--src/files.php38
-rw-r--r--src/latex_templates/devis.php2
-rw-r--r--src/latex_templates/enveloppe_recto.php2
-rw-r--r--src/latex_templates/facture.php2
-rw-r--r--src/latex_templates/location.php2
-rw-r--r--[-rwxr-xr-x]src/main.php49
-rw-r--r--src/main_loop.php2
-rw-r--r--à faire.txt7
14 files changed, 98 insertions, 87 deletions
diff --git a/README.txt b/README.txt
index 172bbb0..344e932 100644
--- a/README.txt
+++ b/README.txt
@@ -17,8 +17,15 @@ version minimale de php =
17- php-sqlite (le moteur de base de données dans une extension php, si nécessaire activer pdo-sqlite dans le php.ini) 17- php-sqlite (le moteur de base de données dans une extension php, si nécessaire activer pdo-sqlite dans le php.ini)
18- un environnement graphique (pas de mode console pure) 18- un environnement graphique (pas de mode console pure)
19- zenity (fenêtres GTK pour scripts bash) 19- zenity (fenêtres GTK pour scripts bash)
20- une distribution LaTeX, on a besoin de la commande pdflatex (j'utilise TeX Live)
21- interpréteurs supportés: sh, bash, ksh, csh, tcsh 20- interpréteurs supportés: sh, bash, ksh, csh, tcsh
21- la distribution LaTeX texlive
22
23texlive doit contenir:
24- pdflatex (compilation en pdf)
25- langfrench
26- graphicx (insersion d'image)
27- tabularx
28- texlive-pictures (pour tikz)
22 29
23dépendances optionnelles mais vivement recommandées: 30dépendances optionnelles mais vivement recommandées:
24- sqlite (= la version CLI du moteur, sqlite est une dépendance de nombreuses applications, il est probablement déjà installé sur votre PC) 31- sqlite (= la version CLI du moteur, sqlite est une dépendance de nombreuses applications, il est probablement déjà installé sur votre PC)
diff --git a/config.ini b/config/config.ini
index 8820b5d..6f72cb4 100644
--- a/config.ini
+++ b/config/config.ini
@@ -15,17 +15,17 @@ business_city = 'Quimper'
15db_name = dev 15db_name = dev
16 16
17; défaut = racine de l'appli = dossier parent de celui du code source 17; défaut = racine de l'appli = dossier parent de celui du code source
18db_path = '../data/' 18db_path = 'data/'
19 19
20; emplacement où seront mis les documents créés 20; emplacement où seront mis les documents créés
21; note: en revanche modifier les "templates" n'est pas possible 21; note: en revanche modifier les "templates" n'est pas possible
22;latex_path = '../data/latex/' 22;latex_path = 'data/latex/'
23latex_path = '../data/latex/' 23latex_path = 'data/latex/'
24;pdf_path = '../data/pdf/' 24;pdf_path = 'data/pdf/'
25pdf_path = '../data/pdf/' 25pdf_path = 'data/pdf/'
26 26
27;pub = '../pub/' 27;pub = 'pub/'
28pub_path = '../pub/' ;dossier pub inclu dans l'appli 28pub_path = 'pub/' ;dossier pub inclu dans l'appli
29 29
30;flyer = flyer.xcf 30;flyer = flyer.xcf
31flyer = flyer.xcf 31flyer = flyer.xcf
diff --git a/index.php b/index.php
index 094758a..f8e93a9 100755
--- a/index.php
+++ b/index.php
@@ -2,14 +2,11 @@
2<?php 2<?php
3// index.php 3// index.php
4 4
5// le programme peut être lancé sans distinction par le lanceur, par un ./index.php ou par un ./main.php 5require('src/main.php');
6// l'exécution a donc lieu dans le dossier "src", normallement on fait pas exactemet ça comme ça
7chdir('src');
8require('main.php');
9 6
10 7
11// possibilité de renommer ce fichier AppliGestionPHP.sh et d'adapter le contenu, et d'ajouter un AppliGestionPHP.exe 8// possibilité de renommer ce fichier AppliGestionPHP.sh et d'adapter le contenu, et d'ajouter un AppliGestionPHP.exe
12 9
13// contenu de AppliGestionPHP.sh 10// contenu de AppliGestionPHP.sh
14//~ #!/bin/sh 11//~ #!/bin/sh
15//~ php php/main.php 12//~ php src/main.php
diff --git a/src/Config.php b/src/Config.php
index b4f8e5b..16aa8ed 100644
--- a/src/Config.php
+++ b/src/Config.php
@@ -10,10 +10,10 @@ class Config
10 static public $business_postcode = '29000'; 10 static public $business_postcode = '29000';
11 static public $business_city = 'Quimper'; 11 static public $business_city = 'Quimper';
12 static public $db_name = "ordipolo"; 12 static public $db_name = "ordipolo";
13 static public $db_path = '../data/'; 13 static public $db_path = 'data/';
14 static public $latex_path = '../data/latex/'; 14 static public $latex_path = 'data/latex/';
15 static public $pdf_path = '../data/pdf/'; 15 static public $pdf_path = 'data/pdf/';
16 static public $pub_path = "../pub/"; 16 static public $pub_path = "pub/";
17 static public $flyer = "flyer.xcf"; 17 static public $flyer = "flyer.xcf";
18 static public $business_card = "carte.sla"; 18 static public $business_card = "carte.sla";
19 static public $image_editor = 'gimp'; 19 static public $image_editor = 'gimp';
@@ -26,8 +26,8 @@ class Config
26 //~ static public $dsn = ''; 26 //~ static public $dsn = '';
27 27
28 // ça pourrait être bien de founir sqlite avec l'application pour supprimer une dépendance 28 // ça pourrait être bien de founir sqlite avec l'application pour supprimer une dépendance
29 //~ static public $sqliteBin = '../lib/sqlite_linux'; 29 //~ static public $sqliteBin = 'lib/sqlite_linux';
30 //~ static public $sqliteBin = '../lib/sqlite_win.exe'; 30 //~ static public $sqliteBin = 'lib/sqlite_win.exe';
31 31
32 static private $raw_data; 32 static private $raw_data;
33 33
@@ -44,14 +44,10 @@ class Config
44 { 44 {
45 if(isset(self::$$field)) // vérification du nom du champ 45 if(isset(self::$$field)) // vérification du nom du champ
46 { 46 {
47 // rification du contenu 47 // problème du slash à la fin du nom d'un dossier
48 if(self::fieldIsPath($field)) // cas où le champ db_path, latex_path, pdf_path ou pub_path 48 if(self::fieldIsPath($field)) // pour db_path, latex_path, pdf_path et pub_path
49 { 49 {
50 if(self::checkPath($field, $value)) 50 self::$$field = self::slashAtEndOfPath($value);
51 {
52 self::$$field = self::slashAtEndOfPath($value);
53 //self::$$field = $value;
54 }
55 } 51 }
56 else // tester le reste? 52 else // tester le reste?
57 { 53 {
@@ -83,28 +79,6 @@ class Config
83 } 79 }
84 } 80 }
85 81
86 static private function checkPath($field, $value): bool
87 {
88 if(!file_exists($value))
89 {
90 echo "debug: le fichier config.ini comporte une erreur, le dossier " . $value . " renseigné pour le champ " . $field . " n'existe pas,\nla valeur par défaut: " . self::$$field . " sera utilisé\n";
91 return false;
92 }
93 if(!is_writable($value))
94 {
95 if($value == self::$$field)
96 {
97 echo "debug: le dossier " . $value . " n'est pas autorisé en écriture\n";
98 }
99 else
100 {
101 echo "debug: le dossier " . $value . " renseigné pour le champ " . $field . " dans le fichier config.ini n'est pas autorisé en écriture,\nla valeur par défaut: " . self::$$field . " sera utilisée\n";
102 }
103 return false;
104 }
105 return true;
106 }
107
108 static public function slashAtEndOfPath($path): string 82 static public function slashAtEndOfPath($path): string
109 { 83 {
110 if(!str_ends_with($path, '/')) 84 if(!str_ends_with($path, '/'))
@@ -117,6 +91,7 @@ class Config
117 } 91 }
118 } 92 }
119 93
94
120 // à faire plus tard 95 // à faire plus tard
121 // transformer les chemins pour qu'ils soient relatifs au dossier 'src' où s'exécute le programme 96 // transformer les chemins pour qu'ils soient relatifs au dossier 'src' où s'exécute le programme
122 static private function adjustRelativePath($input) 97 static private function adjustRelativePath($input)
diff --git a/src/Latex.php b/src/Latex.php
index 6f1219f..f7f18ea 100644
--- a/src/Latex.php
+++ b/src/Latex.php
@@ -47,7 +47,7 @@ abstract class Latex
47 public function makeLatex() 47 public function makeLatex()
48 { 48 {
49 $data = $this->data; // tableau à inséré dans du code latex 49 $data = $this->data; // tableau à inséré dans du code latex
50 include('latex_templates/' . $this->type . '.php'); 50 include('src/latex_templates/' . $this->type . '.php');
51 $this->latex = $latex; // buffer récupéré par ob_get_clean() 51 $this->latex = $latex; // buffer récupéré par ob_get_clean()
52 52
53 // QUESTION: 53 // QUESTION:
@@ -143,7 +143,7 @@ abstract class PrestaLatex extends Latex
143 // on obtient la variable $latex avec ob_get_clean() 143 // on obtient la variable $latex avec ob_get_clean()
144 // le include() ici, c'est du génie ou c'est moche ou les deux? 144 // le include() ici, c'est du génie ou c'est moche ou les deux?
145 // un nouveau fichier php est inséré à chaque itération 145 // un nouveau fichier php est inséré à chaque itération
146 include('latex_templates/' . $this->type . '.php'); 146 include('src/latex_templates/' . $this->type . '.php');
147 147
148 // on retourne le buffer 148 // on retourne le buffer
149 // normallement le code PHP inséré avec include est nettoyé en quittant la fonction 149 // normallement le code PHP inséré avec include est nettoyé en quittant la fonction
diff --git a/src/dependances.php b/src/dependances.php
index ab37b3a..f2144a7 100644
--- a/src/dependances.php
+++ b/src/dependances.php
@@ -9,7 +9,7 @@
9// - zenity 9// - zenity
10// - sqlite 3 10// - sqlite 3
11// - sqlitebrowser (GUI pour sqlite) 11// - sqlitebrowser (GUI pour sqlite)
12// - la distribution texlive et pdflatex 12// - la distribution texlive (ce fichier teste la présence de pdflatex)
13 13
14// sqlitebrowser est optionnel mais vivement recommandé 14// sqlitebrowser est optionnel mais vivement recommandé
15// si il manque, le programme ouvrira à la place un terminal permettant d'utiliser la version CLI de sqlite si celle-ci est disponible 15// si il manque, le programme ouvrira à la place un terminal permettant d'utiliser la version CLI de sqlite si celle-ci est disponible
diff --git a/src/files.php b/src/files.php
index e78cfba..0bda901 100644
--- a/src/files.php
+++ b/src/files.php
@@ -5,8 +5,11 @@
5 5
6function makeFile($path, $file_name, $data) 6function makeFile($path, $file_name, $data)
7{ 7{
8 file_put_contents($path. $file_name, $data); 8 //~ if(is_writable('../' . $path))
9 chmod($path . $file_name, 0644); // droits en octal 9 //~ {
10 file_put_contents($path. $file_name, $data);
11 chmod($path . $file_name, 0644); // droits en octal
12 //~ }
10 13
11 //~ protected function createFile(string $latex, string $file_name, string $latexPath) 14 //~ protected function createFile(string $latex, string $file_name, string $latexPath)
12 //~ { 15 //~ {
@@ -24,11 +27,31 @@ function makeFile($path, $file_name, $data)
24 27
25function makeFolder(string $path) 28function makeFolder(string $path)
26{ 29{
30 $rights = 0755; // droits en octal
31
27 if(!file_exists($path)) 32 if(!file_exists($path))
28 { 33 {
29 mkdir($path); 34 //~ if(is_writable('../' . $path))
30 chmod($path, 0755); // droits en octal 35 //~ {
36 mkdir($path);
37 chmod($path, $rights);
38 //~ }
39 //~ else
40 //~ {
41 //~ echo "debug: la création du dossier " . $path . " est impossible\n";
42 //~ }
31 } 43 }
44 else
45 {
46 //~ if(is_writable($path))
47 //~ {
48 chmod($path, $rights);
49 //~ }
50 //~ else
51 //~ {
52 //~ echo "debug: la modification des droits du dossier " . $path . " est impossible\n";
53 //~ }
54 }
32} 55}
33 56
34// commande système pdflatex 57// commande système pdflatex
@@ -38,12 +61,13 @@ function latexToPdf(string $latex_path, string $file_name, string $pdf_path)
38 $output_dir = ''; 61 $output_dir = '';
39 if($pdf_path !== '') 62 if($pdf_path !== '')
40 { 63 {
41 $output_dir = '-output-directory=' . $pdf_path . ' '; 64 $output_dir = '-output-directory=' . $pdf_path;
42 } 65 }
43 66
44 // compilation 67 // compilation
45 //echo 'pdflatex ' . $output_dir . $latex_path . $file_name . "\n"; 68 //echo 'pdflatex ' . $output_dir . ' ' . $latex_path . $file_name . "\n";
46 exec('pdflatex ' . $output_dir . $latex_path . $file_name); 69 //die;
70 exec('pdflatex ' . $output_dir . ' ' . $latex_path . $file_name);
47 71
48 // nettoyage 72 // nettoyage
49 $basename = basename($file_name, '.tex'); 73 $basename = basename($file_name, '.tex');
diff --git a/src/latex_templates/devis.php b/src/latex_templates/devis.php
index ba6b635..b686d22 100644
--- a/src/latex_templates/devis.php
+++ b/src/latex_templates/devis.php
@@ -44,7 +44,7 @@ ob_start();
44 \definecolor{vert}{rgb}{0.07, 0.46, 0.13} % saisie en vert 44 \definecolor{vert}{rgb}{0.07, 0.46, 0.13} % saisie en vert
45 45
46 \begin{center} 46 \begin{center}
47 \includegraphics{latex_templates/ordipolo.png}\\ 47 \includegraphics{src/latex_templates/ordipolo.png}\\
48 \Large\textbf{Dépannage informatique - Assistance à domicile} 48 \Large\textbf{Dépannage informatique - Assistance à domicile}
49 \end{center} 49 \end{center}
50 50
diff --git a/src/latex_templates/enveloppe_recto.php b/src/latex_templates/enveloppe_recto.php
index 294e589..9e22090 100644
--- a/src/latex_templates/enveloppe_recto.php
+++ b/src/latex_templates/enveloppe_recto.php
@@ -15,7 +15,7 @@ ob_start();
15 15
16\begin{document} 16\begin{document}
17 \setlength{\parindent}{0cm} 17 \setlength{\parindent}{0cm}
18 \includegraphics{latex_templates/ordipolo.png}\\ 18 \includegraphics{src/latex_templates/ordipolo.png}\\
19 \large\textbf{Dépannage informatique - Assistance à domicile} 19 \large\textbf{Dépannage informatique - Assistance à domicile}
20 20
21 \setlength{\parindent}{7,9cm} 21 \setlength{\parindent}{7,9cm}
diff --git a/src/latex_templates/facture.php b/src/latex_templates/facture.php
index db75cc3..8226cc2 100644
--- a/src/latex_templates/facture.php
+++ b/src/latex_templates/facture.php
@@ -39,7 +39,7 @@ ob_start();
39 \definecolor{vert}{rgb}{0.07, 0.46, 0.13} % saisie en vert 39 \definecolor{vert}{rgb}{0.07, 0.46, 0.13} % saisie en vert
40 40
41 \begin{center} 41 \begin{center}
42 \includegraphics{latex_templates/ordipolo.png}\\ 42 \includegraphics{src/latex_templates/ordipolo.png}\\
43 \Large\textbf{Dépannage informatique - Assistance à domicile} 43 \Large\textbf{Dépannage informatique - Assistance à domicile}
44 \end{center} 44 \end{center}
45 45
diff --git a/src/latex_templates/location.php b/src/latex_templates/location.php
index 9b2c485..4b6cfcb 100644
--- a/src/latex_templates/location.php
+++ b/src/latex_templates/location.php
@@ -32,7 +32,7 @@ ob_start();
32 \definecolor{vert}{rgb}{0.07, 0.46, 0.13} % saisie en vert 32 \definecolor{vert}{rgb}{0.07, 0.46, 0.13} % saisie en vert
33 33
34 \begin{center} 34 \begin{center}
35 \includegraphics{latex_templates/ordipolo.png}\\ 35 \includegraphics{src/latex_templates/ordipolo.png}\\
36 \Large\textbf{Dépannage informatique - Assistance à domicile} 36 \Large\textbf{Dépannage informatique - Assistance à domicile}
37 \end{center} 37 \end{center}
38 38
diff --git a/src/main.php b/src/main.php
index 95e5627..fb2b85e 100755..100644
--- a/src/main.php
+++ b/src/main.php
@@ -3,15 +3,16 @@
3// src/main.php 3// src/main.php
4 4
5//require('model/File.php'); 5//require('model/File.php');
6require('files.php'); 6require('src/files.php');
7require('functions.php'); 7require('src/functions.php');
8 8
9// configuration du programme par l'utilisateur 9// configuration du programme par l'utilisateur
10require('Config.php'); // classe structure de données, lit config.php et préviens les erreurs (par exemple les / aux chemins manquants) 10require('src/Config.php'); // classe structure de données, lit config.ini et préviens les erreurs (par exemple les / aux chemins manquants)
11Config::readFile('../config.ini'); 11Config::readFile('config/config.ini');
12Config::hydrate();
13makeFolder(Config::$db_path);
12makeFolder(Config::$latex_path); 14makeFolder(Config::$latex_path);
13makeFolder(Config::$pdf_path); 15makeFolder(Config::$pdf_path);
14Config::hydrate();
15// et à coder peut-être plus tard 16// et à coder peut-être plus tard
16//require('config_window.php'); // configuration user-friendly et assistée avec des messages d'erreur et des indications 17//require('config_window.php'); // configuration user-friendly et assistée avec des messages d'erreur et des indications
17 18
@@ -25,33 +26,33 @@ $sqlitebrowser_enable = false;
25$sqlite_cli = ''; // commande sqlite ou sqlite3 26$sqlite_cli = ''; // commande sqlite ou sqlite3
26$x_term_command = ''; // commande terminal en mode graphique 27$x_term_command = ''; // commande terminal en mode graphique
27 28
28require('dependances.php'); // vérification des dépendances 29require('src/dependances.php'); // vérification des dépendances
29require('Dates.php'); // gère dates et timestamps 30require('src/Dates.php'); // gère dates et timestamps
30Dates::$date_format = Config::$date_format; // dates européennes ou américaines 31Dates::$date_format = Config::$date_format; // dates européennes ou américaines
31 32
32require('model/DB.php'); // connexion en héritant de PDO 33require('src/model/DB.php'); // connexion en héritant de PDO
33// création du DSN à mettre ailleurs (dans Model?) 34// création du DSN à mettre ailleurs (dans Model?)
34DB::$dsn = 'sqlite:' . Config::$db_path; // Data Source Name = 1er paramètre du constructeur de PDO: $bdd = new PDO($dsn); 35DB::$dsn = 'sqlite:' . Config::$db_path; // Data Source Name = 1er paramètre du constructeur de PDO: $bdd = new PDO($dsn);
35 36
36require('model/Model.php'); // class Model extends DB, requêtes SQL 37require('src/model/Model.php'); // class Model extends DB, requêtes SQL
37require('model/StructTablesDB.php'); 38require('src/model/StructTablesDB.php');
38Model::createTables(); 39Model::createTables();
39 40
40require('model/Clients.php'); 41require('src/model/Clients.php');
41require('model/Prestations.php'); 42require('src/model/Prestations.php');
42require('model/DevisFactures.php'); 43require('src/model/DevisFactures.php');
43require('model/CESU.php'); 44require('src/model/CESU.php');
44require('model/Locations.php'); 45require('src/model/Locations.php');
45 46
46require('view/Zenity.php'); // générer ler commandes système zenity 47require('src/view/Zenity.php'); // générer ler commandes système zenity
47require('view/ZenitySetup.php'); // texte dans les fenêtres ET instanciation (un objet = une commande) 48require('src/view/ZenitySetup.php'); // texte dans les fenêtres ET instanciation (un objet = une commande)
48 49
49require('Latex.php'); // générer le code LaTeX 50require('src/Latex.php'); // générer le code LaTeX
50 51
51// boucle principale 52// boucle principale
52require('sections/1_customer.php'); 53require('src/sections/1_customer.php');
53require('sections/2_service.php'); 54require('src/sections/2_service.php');
54require('sections/3_modify_data.php'); 55require('src/sections/3_modify_data.php');
55require('sections/4_get_document.php'); 56require('src/sections/4_get_document.php');
56require('sections/5_view_data.php'); 57require('src/sections/5_view_data.php');
57require('main_loop.php'); // action !! 58require('src/main_loop.php'); // action !!
diff --git a/src/main_loop.php b/src/main_loop.php
index 64eeccf..645a7ee 100644
--- a/src/main_loop.php
+++ b/src/main_loop.php
@@ -1,5 +1,5 @@
1<?php 1<?php
2// src/sections/main_loop.php 2// src/main_loop.php
3// 3//
4// -- BOUCLE PRINCIPALE -- 4// -- BOUCLE PRINCIPALE --
5 5
diff --git a/à faire.txt b/à faire.txt
index 1ef4271..613a0c1 100644
--- a/à faire.txt
+++ b/à faire.txt
@@ -1,5 +1,12 @@
1À FAIRE: 1À FAIRE:
2 2
3src/files.php: dans makeFile() et makeFolder()
4améliorer is_writable() pour renvoyer true du moment que PHP peut écrire
5
6latex: supprimer la dépendance à tikz, paquet texlive-pictures, qui n'est utilisé que dans les devis
7
8src/dependances.php: tester les dépendances de texlive
9
3proposer un choix oui/non à la modification du champ devis signé 10proposer un choix oui/non à la modification du champ devis signé
4 11
5permettre de modifier le code_presta dans "Modifier une prestation" 12permettre de modifier le code_presta dans "Modifier une prestation"