diff options
| author | polo <ordipolo@gmx.fr> | 2023-02-25 02:27:22 +0100 |
|---|---|---|
| committer | polo <ordipolo@gmx.fr> | 2023-02-25 02:27:22 +0100 |
| commit | 9d8133643773912d54fb0c7d86ef04e6acffa8c9 (patch) | |
| tree | 8048a9eeded086e9e9c00ce0a68b9454c171d085 /src/functions.php | |
| parent | 209c0b93c529356a094d7133a717e8f6ee6d90c6 (diff) | |
| download | AppliGestionPHP-9d8133643773912d54fb0c7d86ef04e6acffa8c9.tar.gz AppliGestionPHP-9d8133643773912d54fb0c7d86ef04e6acffa8c9.tar.bz2 AppliGestionPHP-9d8133643773912d54fb0c7d86ef04e6acffa8c9.zip | |
lire tables, modifications BDD, création documents et enveloppes latex, suppression de traits.php
Diffstat (limited to 'src/functions.php')
| -rw-r--r-- | src/functions.php | 82 |
1 files changed, 71 insertions, 11 deletions
diff --git a/src/functions.php b/src/functions.php index b8779e8..89bfbc9 100644 --- a/src/functions.php +++ b/src/functions.php | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | <?php | 1 | <?php |
| 2 | // src/functions.php | 2 | // src/functions.php |
| 3 | // | 3 | // |
| 4 | // gros fourre-tout, à ranger plus tard | 4 | // utilisées par main.php et les fonctions de la boucle principale |
| 5 | 5 | ||
| 6 | 6 | ||
| 7 | // commande pour lancer une application graphique en ouvrant un fichier | 7 | // commande pour lancer une application graphique en ouvrant un fichier |
| @@ -40,25 +40,85 @@ function makeFolder(string $path) | |||
| 40 | if(!file_exists($path)) | 40 | if(!file_exists($path)) |
| 41 | { | 41 | { |
| 42 | mkdir($path); | 42 | mkdir($path); |
| 43 | chmod($path, 0755); | 43 | chmod($path, 0755); // droits en octal |
| 44 | } | 44 | } |
| 45 | } | 45 | } |
| 46 | 46 | ||
| 47 | function makeLatexAndPdfDocument($file_name, $template, Clients $Client, Prestations $Presta = null, $Details = null) // $Details peut être de type DevisFactures ou Locations | 47 | function makeLatexAndPdfDocument($documentType, Clients $Client = null, Prestations $Presta = null, $Details = null) // $Details peut être de type DevisFactures ou Locations |
| 48 | { | 48 | { |
| 49 | //~ $data = ; // tableau associatif avec des données des différents objets | 49 | $latex = ''; |
| 50 | $latex = getLatexFromTemplate($template, $data); | 50 | $year = ''; |
| 51 | file_put_contents($latex_path . $file_name, $latex); // injection des variables & écriture du fichier | 51 | $data = []; |
| 52 | $file_name = $documentType . '.tex'; | ||
| 53 | $latex_path = Config::$latex_path; | ||
| 54 | $pdf_path = Config::$pdf_path; | ||
| 55 | |||
| 56 | // tableau associatif avec des données des différents objets | ||
| 57 | // note: la propriété 'commentaires' de $Presta écrase celle de $Client (pas grave, les clients n'ont pas besoin d'en avoir connaissance) | ||
| 58 | // encore une fois, ce programme est destiné à un usage privé et hors ligne, sans déclaration CNIL | ||
| 59 | |||
| 60 | if($Client == null) // verso d'une enveloppe | ||
| 61 | { | ||
| 62 | $data[0] = Config::$business_guy; | ||
| 63 | $data[1] = Config::$business_address; | ||
| 64 | $data[2] = implode(str_split(Config::$business_postcode)); | ||
| 65 | $data[3] = Config::$business_city; | ||
| 66 | |||
| 67 | $latex = makeLatex($documentType, $data); // injection des variables | ||
| 68 | $file_name = 'enveloppe_verso'; | ||
| 69 | } | ||
| 70 | else | ||
| 71 | { | ||
| 72 | $data = $Client->getAll(); | ||
| 73 | |||
| 74 | if($Presta == null) // recto d'une enveloppe | ||
| 75 | { | ||
| 76 | $latex_path .= 'enveloppes_recto/'; | ||
| 77 | $pdf_path .= 'enveloppes_recto/'; | ||
| 78 | $data['code_postal'] = implode(' \ ', str_split($data['code_postal'])); // code postal avec 2 espaces entre chaque chiffre: 2 \ 9 \ 0 \ 0 \ 0 | ||
| 79 | $latex = makeLatex($documentType, $data); // injection des variables | ||
| 80 | $file_name = $Client->getCodeClient() . '.tex'; | ||
| 81 | } | ||
| 82 | else // facture, devis, location | ||
| 83 | { | ||
| 84 | $data = array_merge($data, $Presta->getAll()); | ||
| 85 | $Date = new Dates($Presta->getDate()); // entrée = timestamp (doit être un "int"!!) | ||
| 86 | $year = $Date->getYear(); | ||
| 87 | |||
| 88 | // créer un sous-dossier pour la nouvelle année | ||
| 89 | $latex_path .= $year . '/'; | ||
| 90 | $pdf_path .= $year . '/'; | ||
| 91 | |||
| 92 | if($Details != null) | ||
| 93 | { | ||
| 94 | $data = array_merge($data, $Details->getAll()); | ||
| 95 | } | ||
| 96 | |||
| 97 | $latex = makeLatex($documentType, $data, $Date); // injection des variables | ||
| 98 | $file_name = $Presta->getCodePresta() . '.tex'; | ||
| 99 | } | ||
| 100 | } | ||
| 101 | |||
| 102 | // création des fichiers | ||
| 103 | makeFolder($latex_path); | ||
| 104 | makeFolder($pdf_path); | ||
| 105 | file_put_contents($latex_path. $file_name, $latex); // écriture du fichier | ||
| 52 | latexToPdf($latex_path, $file_name, $pdf_path); | 106 | latexToPdf($latex_path, $file_name, $pdf_path); |
| 53 | } | 107 | } |
| 54 | 108 | ||
| 55 | function getLatexFromTemplate(string $template, $data) | 109 | function makeLatex(string $documentType, array $data, Dates $Date = null) |
| 56 | { | 110 | { |
| 57 | // variables à injecter | 111 | $date = ''; |
| 58 | $nom_client = "M. Duchmol"; | 112 | if($Date != null) |
| 113 | { | ||
| 114 | $date = $Date->getDate(); | ||
| 115 | $date = preg_replace('#\D#', '/', $date); // date avec des slashs / parce que j'aime bien | ||
| 116 | } | ||
| 59 | 117 | ||
| 60 | // on obtient la variable $latex avec ob_get_clean() | 118 | // on obtient la variable $latex avec ob_get_clean() |
| 61 | include('latex_templates/' . $template . '.php'); | 119 | // le include() ici, c'est du génie ou c'est moche ou les deux? |
| 120 | // un nouveau fichier php est inséré à chaque itération | ||
| 121 | include('latex_templates/' . $documentType . '.php'); | ||
| 62 | 122 | ||
| 63 | // on retourne le buffer | 123 | // on retourne le buffer |
| 64 | // normallement le code PHP inséré avec include est nettoyé en quittant la fonction | 124 | // normallement le code PHP inséré avec include est nettoyé en quittant la fonction |
| @@ -76,7 +136,7 @@ function latexToPdf(string $latexPath, string $fileName, string $pdfPath) | |||
| 76 | 136 | ||
| 77 | // compilation | 137 | // compilation |
| 78 | exec('pdflatex ' . $outputDir . $latexPath . $fileName); | 138 | exec('pdflatex ' . $outputDir . $latexPath . $fileName); |
| 79 | 139 | ||
| 80 | // nettoyage | 140 | // nettoyage |
| 81 | $basename = basename($fileName, '.tex'); | 141 | $basename = basename($fileName, '.tex'); |
| 82 | unlink($pdfPath . $basename . '.aux'); | 142 | unlink($pdfPath . $basename . '.aux'); |
