From c4a3f80a6dccdff9b2abff6f159ef8fdd4382787 Mon Sep 17 00:00:00 2001 From: polo Date: Mon, 15 Jul 2024 17:49:31 +0200 Subject: =?UTF-8?q?d=C3=A9placement=20dossier=20d'ex=C3=A9cution,=20suppre?= =?UTF-8?q?ssion=20de=20Config::checkPath,=20bugs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Config.php | 45 +++++++----------------------- src/Latex.php | 4 +-- src/dependances.php | 2 +- src/files.php | 38 ++++++++++++++++++++----- src/latex_templates/devis.php | 2 +- src/latex_templates/enveloppe_recto.php | 2 +- src/latex_templates/facture.php | 2 +- src/latex_templates/location.php | 2 +- src/main.php | 49 +++++++++++++++++---------------- src/main_loop.php | 2 +- 10 files changed, 74 insertions(+), 74 deletions(-) mode change 100755 => 100644 src/main.php (limited to 'src') 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 static public $business_postcode = '29000'; static public $business_city = 'Quimper'; static public $db_name = "ordipolo"; - static public $db_path = '../data/'; - static public $latex_path = '../data/latex/'; - static public $pdf_path = '../data/pdf/'; - static public $pub_path = "../pub/"; + static public $db_path = 'data/'; + static public $latex_path = 'data/latex/'; + static public $pdf_path = 'data/pdf/'; + static public $pub_path = "pub/"; static public $flyer = "flyer.xcf"; static public $business_card = "carte.sla"; static public $image_editor = 'gimp'; @@ -26,8 +26,8 @@ class Config //~ static public $dsn = ''; // ça pourrait être bien de founir sqlite avec l'application pour supprimer une dépendance - //~ static public $sqliteBin = '../lib/sqlite_linux'; - //~ static public $sqliteBin = '../lib/sqlite_win.exe'; + //~ static public $sqliteBin = 'lib/sqlite_linux'; + //~ static public $sqliteBin = 'lib/sqlite_win.exe'; static private $raw_data; @@ -44,14 +44,10 @@ class Config { if(isset(self::$$field)) // vérification du nom du champ { - // vérification du contenu - if(self::fieldIsPath($field)) // cas où le champ db_path, latex_path, pdf_path ou pub_path + // problème du slash à la fin du nom d'un dossier + if(self::fieldIsPath($field)) // pour db_path, latex_path, pdf_path et pub_path { - if(self::checkPath($field, $value)) - { - self::$$field = self::slashAtEndOfPath($value); - //self::$$field = $value; - } + self::$$field = self::slashAtEndOfPath($value); } else // tester le reste? { @@ -83,28 +79,6 @@ class Config } } - static private function checkPath($field, $value): bool - { - if(!file_exists($value)) - { - 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"; - return false; - } - if(!is_writable($value)) - { - if($value == self::$$field) - { - echo "debug: le dossier " . $value . " n'est pas autorisé en écriture\n"; - } - else - { - 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"; - } - return false; - } - return true; - } - static public function slashAtEndOfPath($path): string { if(!str_ends_with($path, '/')) @@ -117,6 +91,7 @@ class Config } } + // à faire plus tard // transformer les chemins pour qu'ils soient relatifs au dossier 'src' où s'exécute le programme 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 public function makeLatex() { $data = $this->data; // tableau à inséré dans du code latex - include('latex_templates/' . $this->type . '.php'); + include('src/latex_templates/' . $this->type . '.php'); $this->latex = $latex; // buffer récupéré par ob_get_clean() // QUESTION: @@ -143,7 +143,7 @@ abstract class PrestaLatex extends Latex // 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 - include('latex_templates/' . $this->type . '.php'); + include('src/latex_templates/' . $this->type . '.php'); // on retourne le buffer // 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 @@ // - zenity // - sqlite 3 // - sqlitebrowser (GUI pour sqlite) -// - la distribution texlive et pdflatex +// - la distribution texlive (ce fichier teste la présence de pdflatex) // sqlitebrowser est optionnel mais vivement recommandé // 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 @@ function makeFile($path, $file_name, $data) { - file_put_contents($path. $file_name, $data); - chmod($path . $file_name, 0644); // droits en octal + //~ if(is_writable('../' . $path)) + //~ { + file_put_contents($path. $file_name, $data); + chmod($path . $file_name, 0644); // droits en octal + //~ } //~ protected function createFile(string $latex, string $file_name, string $latexPath) //~ { @@ -24,11 +27,31 @@ function makeFile($path, $file_name, $data) function makeFolder(string $path) { + $rights = 0755; // droits en octal + if(!file_exists($path)) { - mkdir($path); - chmod($path, 0755); // droits en octal + //~ if(is_writable('../' . $path)) + //~ { + mkdir($path); + chmod($path, $rights); + //~ } + //~ else + //~ { + //~ echo "debug: la création du dossier " . $path . " est impossible\n"; + //~ } } + else + { + //~ if(is_writable($path)) + //~ { + chmod($path, $rights); + //~ } + //~ else + //~ { + //~ echo "debug: la modification des droits du dossier " . $path . " est impossible\n"; + //~ } + } } // commande système pdflatex @@ -38,12 +61,13 @@ function latexToPdf(string $latex_path, string $file_name, string $pdf_path) $output_dir = ''; if($pdf_path !== '') { - $output_dir = '-output-directory=' . $pdf_path . ' '; + $output_dir = '-output-directory=' . $pdf_path; } // compilation - //echo 'pdflatex ' . $output_dir . $latex_path . $file_name . "\n"; - exec('pdflatex ' . $output_dir . $latex_path . $file_name); + //echo 'pdflatex ' . $output_dir . ' ' . $latex_path . $file_name . "\n"; + //die; + exec('pdflatex ' . $output_dir . ' ' . $latex_path . $file_name); // nettoyage $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(); \definecolor{vert}{rgb}{0.07, 0.46, 0.13} % saisie en vert \begin{center} - \includegraphics{latex_templates/ordipolo.png}\\ + \includegraphics{src/latex_templates/ordipolo.png}\\ \Large\textbf{Dépannage informatique - Assistance à domicile} \end{center} 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(); \begin{document} \setlength{\parindent}{0cm} - \includegraphics{latex_templates/ordipolo.png}\\ + \includegraphics{src/latex_templates/ordipolo.png}\\ \large\textbf{Dépannage informatique - Assistance à domicile} \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(); \definecolor{vert}{rgb}{0.07, 0.46, 0.13} % saisie en vert \begin{center} - \includegraphics{latex_templates/ordipolo.png}\\ + \includegraphics{src/latex_templates/ordipolo.png}\\ \Large\textbf{Dépannage informatique - Assistance à domicile} \end{center} 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(); \definecolor{vert}{rgb}{0.07, 0.46, 0.13} % saisie en vert \begin{center} - \includegraphics{latex_templates/ordipolo.png}\\ + \includegraphics{src/latex_templates/ordipolo.png}\\ \Large\textbf{Dépannage informatique - Assistance à domicile} \end{center} diff --git a/src/main.php b/src/main.php old mode 100755 new mode 100644 index 95e5627..fb2b85e --- a/src/main.php +++ b/src/main.php @@ -3,15 +3,16 @@ // src/main.php //require('model/File.php'); -require('files.php'); -require('functions.php'); +require('src/files.php'); +require('src/functions.php'); // configuration du programme par l'utilisateur -require('Config.php'); // classe structure de données, lit config.php et préviens les erreurs (par exemple les / aux chemins manquants) -Config::readFile('../config.ini'); +require('src/Config.php'); // classe structure de données, lit config.ini et préviens les erreurs (par exemple les / aux chemins manquants) +Config::readFile('config/config.ini'); +Config::hydrate(); +makeFolder(Config::$db_path); makeFolder(Config::$latex_path); makeFolder(Config::$pdf_path); -Config::hydrate(); // et à coder peut-être plus tard //require('config_window.php'); // configuration user-friendly et assistée avec des messages d'erreur et des indications @@ -25,33 +26,33 @@ $sqlitebrowser_enable = false; $sqlite_cli = ''; // commande sqlite ou sqlite3 $x_term_command = ''; // commande terminal en mode graphique -require('dependances.php'); // vérification des dépendances -require('Dates.php'); // gère dates et timestamps +require('src/dependances.php'); // vérification des dépendances +require('src/Dates.php'); // gère dates et timestamps Dates::$date_format = Config::$date_format; // dates européennes ou américaines -require('model/DB.php'); // connexion en héritant de PDO +require('src/model/DB.php'); // connexion en héritant de PDO // création du DSN à mettre ailleurs (dans Model?) DB::$dsn = 'sqlite:' . Config::$db_path; // Data Source Name = 1er paramètre du constructeur de PDO: $bdd = new PDO($dsn); -require('model/Model.php'); // class Model extends DB, requêtes SQL -require('model/StructTablesDB.php'); +require('src/model/Model.php'); // class Model extends DB, requêtes SQL +require('src/model/StructTablesDB.php'); Model::createTables(); -require('model/Clients.php'); -require('model/Prestations.php'); -require('model/DevisFactures.php'); -require('model/CESU.php'); -require('model/Locations.php'); +require('src/model/Clients.php'); +require('src/model/Prestations.php'); +require('src/model/DevisFactures.php'); +require('src/model/CESU.php'); +require('src/model/Locations.php'); -require('view/Zenity.php'); // générer ler commandes système zenity -require('view/ZenitySetup.php'); // texte dans les fenêtres ET instanciation (un objet = une commande) +require('src/view/Zenity.php'); // générer ler commandes système zenity +require('src/view/ZenitySetup.php'); // texte dans les fenêtres ET instanciation (un objet = une commande) -require('Latex.php'); // générer le code LaTeX +require('src/Latex.php'); // générer le code LaTeX // boucle principale -require('sections/1_customer.php'); -require('sections/2_service.php'); -require('sections/3_modify_data.php'); -require('sections/4_get_document.php'); -require('sections/5_view_data.php'); -require('main_loop.php'); // action !! +require('src/sections/1_customer.php'); +require('src/sections/2_service.php'); +require('src/sections/3_modify_data.php'); +require('src/sections/4_get_document.php'); +require('src/sections/5_view_data.php'); +require('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 @@