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 --- README.txt | 9 ++++- config.ini | 61 --------------------------------- config/config.ini | 61 +++++++++++++++++++++++++++++++++ index.php | 7 ++-- 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 +- "\303\240 faire.txt" | 7 ++++ 15 files changed, 152 insertions(+), 141 deletions(-) delete mode 100644 config.ini create mode 100644 config/config.ini mode change 100755 => 100644 src/main.php 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 = - php-sqlite (le moteur de base de données dans une extension php, si nécessaire activer pdo-sqlite dans le php.ini) - un environnement graphique (pas de mode console pure) - zenity (fenêtres GTK pour scripts bash) -- une distribution LaTeX, on a besoin de la commande pdflatex (j'utilise TeX Live) - interpréteurs supportés: sh, bash, ksh, csh, tcsh +- la distribution LaTeX texlive + +texlive doit contenir: +- pdflatex (compilation en pdf) +- langfrench +- graphicx (insersion d'image) +- tabularx +- texlive-pictures (pour tikz) dépendances optionnelles mais vivement recommandées: - 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.ini deleted file mode 100644 index 8820b5d..0000000 --- a/config.ini +++ /dev/null @@ -1,61 +0,0 @@ -; fichier à modifier soi-même -; les lignes commentées correspondent aux réglages par défaut -; ils seront utilisés si une information manque ou est mal renseignée ici - -; ATTENTION aux chemins relatifs! -; ils sont relatifs par rapport au dossier 'src' où s'exécute le programme - -business_name = ORDIPOLO -business_guy = 'Paul Jusot' -business_address = "2A rue de l'île de Man" -business_postcode = '29000' -business_city = 'Quimper' - -;db_name = ordipolo -db_name = dev - -; défaut = racine de l'appli = dossier parent de celui du code source -db_path = '../data/' - -; emplacement où seront mis les documents créés -; note: en revanche modifier les "templates" n'est pas possible -;latex_path = '../data/latex/' -latex_path = '../data/latex/' -;pdf_path = '../data/pdf/' -pdf_path = '../data/pdf/' - -;pub = '../pub/' -pub_path = '../pub/' ;dossier pub inclu dans l'appli - -;flyer = flyer.xcf -flyer = flyer.xcf - -;business_card = carte.sla -business_card = carte.sla - -;image_editor = gimp -image_editor = gimp - -;publishing = scribus -publishing = scribus - -;sqliteGUI = sqlitebrowser -sqlite_gui = sqlitebrowser - -; format des dates, choisir 'euro' exemple 28-11-2022 OU 'usa' exemple 11/28/2022 -;date_format = 'euro' -date_format = 'euro' - - -;x_terminal = xterm -; -- état actuel du programme -- -; les terminaux gérés sont: xterm, urxvt, lxterminal, xfce4-terminal, gnome-terminal, konsole, Terminal (MAC, désactivé tant que non testé) -; ajouter à l'accaz: i3-sensible-terminal (pour i3), lxterminal-qt (pour lubuntu) -; le choix est automatique en prenant le 1er terminal disponible, ceux-ci sont testés un par un dans l'ordre de la liste ci-dessus - - -sgbd = 'sqlite' -;dsn = ''; - -;sqliteBin = '../lib/sqlite_linux' -;sqliteBin = '../lib/sqlite_win.exe' diff --git a/config/config.ini b/config/config.ini new file mode 100644 index 0000000..6f72cb4 --- /dev/null +++ b/config/config.ini @@ -0,0 +1,61 @@ +; fichier à modifier soi-même +; les lignes commentées correspondent aux réglages par défaut +; ils seront utilisés si une information manque ou est mal renseignée ici + +; ATTENTION aux chemins relatifs! +; ils sont relatifs par rapport au dossier 'src' où s'exécute le programme + +business_name = ORDIPOLO +business_guy = 'Paul Jusot' +business_address = "2A rue de l'île de Man" +business_postcode = '29000' +business_city = 'Quimper' + +;db_name = ordipolo +db_name = dev + +; défaut = racine de l'appli = dossier parent de celui du code source +db_path = 'data/' + +; emplacement où seront mis les documents créés +; note: en revanche modifier les "templates" n'est pas possible +;latex_path = 'data/latex/' +latex_path = 'data/latex/' +;pdf_path = 'data/pdf/' +pdf_path = 'data/pdf/' + +;pub = 'pub/' +pub_path = 'pub/' ;dossier pub inclu dans l'appli + +;flyer = flyer.xcf +flyer = flyer.xcf + +;business_card = carte.sla +business_card = carte.sla + +;image_editor = gimp +image_editor = gimp + +;publishing = scribus +publishing = scribus + +;sqliteGUI = sqlitebrowser +sqlite_gui = sqlitebrowser + +; format des dates, choisir 'euro' exemple 28-11-2022 OU 'usa' exemple 11/28/2022 +;date_format = 'euro' +date_format = 'euro' + + +;x_terminal = xterm +; -- état actuel du programme -- +; les terminaux gérés sont: xterm, urxvt, lxterminal, xfce4-terminal, gnome-terminal, konsole, Terminal (MAC, désactivé tant que non testé) +; ajouter à l'accaz: i3-sensible-terminal (pour i3), lxterminal-qt (pour lubuntu) +; le choix est automatique en prenant le 1er terminal disponible, ceux-ci sont testés un par un dans l'ordre de la liste ci-dessus + + +sgbd = 'sqlite' +;dsn = ''; + +;sqliteBin = '../lib/sqlite_linux' +;sqliteBin = '../lib/sqlite_win.exe' diff --git a/index.php b/index.php index 094758a..f8e93a9 100755 --- a/index.php +++ b/index.php @@ -2,14 +2,11 @@ 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 @@