From efe371fd6e883dde99ca6d90a7aae99eb4aeadea Mon Sep 17 00:00:00 2001 From: polo Date: Fri, 25 Nov 2022 03:59:32 +0100 Subject: =?UTF-8?q?premi=C3=A8re=20sauvegarde=20git?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LaTeX/devis.tex | 79 ++++++++++++++++++ LaTeX/enveloppe_recto.tex | 21 +++++ LaTeX/enveloppe_verso.tex | 13 +++ LaTeX/facture.tex | 80 ++++++++++++++++++ LaTeX/location.tex | 44 ++++++++++ LaTeX/ordipolo.png | Bin 0 -> 46751 bytes README.txt | 26 ++++++ config.php | 44 ++++++++++ index.php | 203 ++++++++++++++++++++++++++++++++++++++++++++++ logiciel compta.desktop | 10 +++ ordipolo.sqlite | 0 php/Database.php | 26 ++++++ php/ZenityClasses.php | 111 +++++++++++++++++++++++++ php/compileLatex.php | 30 +++++++ php/dependances.php | 100 +++++++++++++++++++++++ php/functions.php | 26 ++++++ php/saisie.php | 59 ++++++++++++++ php/zenity_text.php | 21 +++++ pub/carte ordipolo.png | Bin 0 -> 2517728 bytes pub/carte.sla | 107 ++++++++++++++++++++++++ pub/flyer.pdf | Bin 0 -> 7977278 bytes pub/flyer.xcf | Bin 0 -> 15707907 bytes 22 files changed, 1000 insertions(+) create mode 100644 LaTeX/devis.tex create mode 100644 LaTeX/enveloppe_recto.tex create mode 100644 LaTeX/enveloppe_verso.tex create mode 100644 LaTeX/facture.tex create mode 100644 LaTeX/location.tex create mode 100644 LaTeX/ordipolo.png create mode 100644 README.txt create mode 100644 config.php create mode 100755 index.php create mode 100755 logiciel compta.desktop create mode 100644 ordipolo.sqlite create mode 100644 php/Database.php create mode 100644 php/ZenityClasses.php create mode 100644 php/compileLatex.php create mode 100644 php/dependances.php create mode 100644 php/functions.php create mode 100644 php/saisie.php create mode 100644 php/zenity_text.php create mode 100644 pub/carte ordipolo.png create mode 100644 pub/carte.sla create mode 100644 pub/flyer.pdf create mode 100644 pub/flyer.xcf diff --git a/LaTeX/devis.tex b/LaTeX/devis.tex new file mode 100644 index 0000000..debcdc5 --- /dev/null +++ b/LaTeX/devis.tex @@ -0,0 +1,79 @@ +\documentclass{report} + +\usepackage[french]{babel} +\usepackage{lmodern} % police latin modern +\usepackage[utf8]{inputenc} % encodage d'entrée (document) +\usepackage[T1]{fontenc} % encodage de sortie (rendu) +\usepackage[top=2cm, bottom=2cm, left=2cm, right=2cm]{geometry} % marges +\usepackage{graphicx} % insertions d'images +\usepackage{textcomp} % pour N° +\usepackage{xcolor} % texte en couleur +\usepackage{tabularx} % dimensions des tableaux automatique +\usepackage{tikz} % le rectangle + +\begin{document} + \setlength{\parindent}{0cm} % supprimer les alinéas + \large{} + \pagestyle{empty} % en-tête et pied de page vides + \definecolor{vert}{rgb}{0.07, 0.46, 0.13} % saisie en vert + + \begin{center} + \includegraphics{ordipolo.png}\\ + \Large\textbf{Dépannage informatique - Assistance à domicile} + \end{center} + + 2 A rue de l'île de Man, 29000 Quimper + + SIRET : 814 320 610 00011 + + \begin{tabularx}{0.67\linewidth}{@{}X@{}@{}X@{}} + Tel : 06.63.85.48.82 & Courriel : ordipolo@gmx.fr + \end{tabularx} + + Plus d'infos sur le site web: https\string://ordipolo.fr\\ + % \string supprime l'espace devant les : + + \begin{center} + \large\textbf{DEVIS} + \end{center} + + CLIENT\\ + + \begin{tabularx}{\linewidth}{@{}X@{}@{}X@{}} + Mme, M : \textcolor{vert}{} & + Date du devis : \textcolor{vert}{}\\ + Adresse : \textcolor{vert}{} & + Delai de livraison : \textcolor{vert}{}\\ + \end{tabularx}\\\\ + + PRESTATION\\ + + \textcolor{vert}{} + + Total main d'oeuvre : \textcolor{vert}{}\\ + + PIÈCES\\ + + \textcolor{vert}{} + + Total pièces : \textcolor{vert}{}\\ + + TOTAL\\ + + Déplacement : \textcolor{vert}{} + + Total HT : \textcolor{vert}{} + + \textit{(TVA non applicable, article 293B du code général des impôts)} + + Référence du devis : \textcolor{vert}{}\\ + + Devis reçu avant l'exécution des travaux, signature du client :\\ + \begin{tikzpicture} + \draw (0,0) rectangle (4,2); + \end{tikzpicture}\\ + + \small{}NOTA BENE\\ + + Si le délai de livraison n’est pas précisé, c’est naturellement le délai légal de 30 jours qui est appliqué. Lorsqu'Ordi Polo garde (ou prête) un ordinateur le temps nécessaire à la réparation, le prêt peut être formalisé par un document signé par les deux parties. Le dépannage inclut principalement l'intervention sur les logiciels et si nécessaire le démontage et remontage de la machine nécessaires au nettoyage de la poussière ou au remplacement d'une pièce. Ordi Polo ne répare pas les composants électroniques défectueux et n'est pas responsable des dysfonctionnements de l'ordinateur dont l'origine est matérielle. Ordi Polo ne vend pas de matériel mais peut conseiller ou réaliser les démarches d’un achat. +\end{document} \ No newline at end of file diff --git a/LaTeX/enveloppe_recto.tex b/LaTeX/enveloppe_recto.tex new file mode 100644 index 0000000..d1f3f43 --- /dev/null +++ b/LaTeX/enveloppe_recto.tex @@ -0,0 +1,21 @@ +\documentclass[]{report} + +\usepackage[french]{babel} +\usepackage{lmodern} % police latin modern +\usepackage[utf8]{inputenc} % encodage d'entrée (document) +\usepackage[T1]{fontenc} % encodage de sortie (rendu) +\usepackage{graphicx} % insertions d'images +\usepackage[papersize={22cm, 11cm}, top=1cm, left=1cm, bottom=1cm]{geometry} +\pagestyle{empty} + +\begin{document} + \setlength{\parindent}{0cm} + \includegraphics{ordipolo.png}\\ + \large\textbf{Dépannage informatique - Assistance à domicile} + + \setlength{\parindent}{7,9cm} + \begin{minipage}[b][5,8cm]{12cm} + \LARGE{M. Truc\\3, rue Machin\\\\\\} + \LARGE{2 \ 9 \ 0 \ 0 \ 0 \ \ \ \ QUIMPER} + \end{minipage} +\end{document} \ No newline at end of file diff --git a/LaTeX/enveloppe_verso.tex b/LaTeX/enveloppe_verso.tex new file mode 100644 index 0000000..24baa8a --- /dev/null +++ b/LaTeX/enveloppe_verso.tex @@ -0,0 +1,13 @@ +\documentclass[]{report} + +\usepackage[french]{babel} +\usepackage{lmodern} % police latin modern +\usepackage[utf8]{inputenc} % encodage d'entrée (document) +\usepackage[T1]{fontenc} % encodage de sortie (rendu) +\usepackage[papersize={22cm, 11cm}, top=0.6cm, left=4.5cm]{geometry} +\pagestyle{empty} + +\begin{document} + \setlength{\parindent}{0cm} + \Large{Paul Jusot\\2A, rue de l'île de Man\\29000 QUIMPER} +\end{document} \ No newline at end of file diff --git a/LaTeX/facture.tex b/LaTeX/facture.tex new file mode 100644 index 0000000..babb2ab --- /dev/null +++ b/LaTeX/facture.tex @@ -0,0 +1,80 @@ +\documentclass{report} + +\usepackage[french]{babel} +\usepackage{lmodern} % police latin modern +\usepackage[utf8]{inputenc} % encodage d'entrée (document) +\usepackage[T1]{fontenc} % encodage de sortie (rendu) +\usepackage[top=2cm, bottom=2cm, left=2cm, right=2cm]{geometry} % marges +\usepackage{graphicx} % insertions d'images +\usepackage{textcomp} % pour N° +\usepackage{xcolor} % texte en couleur +\usepackage{tabularx} % dimensions des tableaux automatique + +\begin{document} + \setlength{\parindent}{0cm} % supprimer les alinéas + \large{} + \pagestyle{empty} % en-tête et pied de page vides + \definecolor{vert}{rgb}{0.07, 0.46, 0.13} % saisie en vert + + \begin{center} + \includegraphics{ordipolo.png}\\ + \Large\textbf{Dépannage informatique - Assistance à domicile} + \end{center} + + 2 A rue de l'île de Man, 29000 Quimper + + SIRET : 814 320 610 00011 + + \begin{tabularx}{0.67\linewidth}{@{}X@{}@{}X@{}} + Tel : 06.63.85.48.82 & Courriel : ordipolo@gmx.fr + \end{tabularx} + + Plus d'infos sur le site web: https\string://ordipolo.fr\\ + % \string supprime l'espace devant les : + + \begin{center} + \large\textbf{FACTURE} + \end{center} + + CLIENT\\ + + \begin{tabularx}{\linewidth}{@{}X@{}@{}X@{}} + Mme, M : \textcolor{vert}{} & + Date : \textcolor{vert}{}\\ + \end{tabularx}\\ + Adresse : \textcolor{vert}{}\\ + + PRESTATION\\ + + \textcolor{vert}{} + + Modèle de l'ordinateur : \textcolor{vert}{} + + Système d'exploitation : \textcolor{vert}{} + + Données à conserver : \textcolor{vert}{} + + Clé d'activation : \textcolor{vert}{}\\ + + Total main d'oeuvre : \textcolor{vert}{}\\ + + PIÈCES\\ + + \textcolor{vert}{} + + Total pièces : \textcolor{vert}{}\\ + + TOTAL\\ + + Déplacement : \textcolor{vert}{} + + Total HT : \textcolor{vert}{} + + \textit{(TVA non applicable, article 293B du code général des impôts)} + + Référence de la facture : \textcolor{vert}{}\\ + + \small{}NOTA BENE\\ + + Lorsqu'Ordi Polo garde (ou prête) un ordinateur le temps nécessaire à la réparation, le prêt peut être formalisé par un document signé par les deux parties. Le dépannage inclut principalement l'intervention sur les logiciels et si nécessaire le démontage et remontage de la machine nécessaires au nettoyage de la poussière ou au remplacement d'une pièce. Ordi Polo ne répare pas les composants électroniques défectueux et n'est pas responsable des dysfonctionnements de l'ordinateur dont l'origine est matérielle. Ordi Polo ne vend pas de matériel mais peut conseiller ou réaliser les démarches d’un achat. +\end{document} \ No newline at end of file diff --git a/LaTeX/location.tex b/LaTeX/location.tex new file mode 100644 index 0000000..bcfb1e5 --- /dev/null +++ b/LaTeX/location.tex @@ -0,0 +1,44 @@ +\documentclass{report} + +\usepackage[french]{babel} +\usepackage{lmodern} % police latin modern +\usepackage[utf8]{inputenc} % encodage d'entrée (document) +\usepackage[T1]{fontenc} % encodage de sortie (rendu) +\usepackage[top=2cm, bottom=2cm, left=2cm, right=2cm]{geometry} % marges +\usepackage{graphicx} % insertions d'images +\usepackage{textcomp} % pour N° +\usepackage{xcolor} % texte en couleur +%\usepackage{wrapfig} % placer texte et image côte-à-côte +\usepackage{tabularx} % dimensions des tableaux automatique + +\begin{document} + \setlength{\parindent}{0cm} % supprimer les alinéas + \large{} + \pagestyle{empty} % en-tête et pied de page vides + \definecolor{vert}{rgb}{0.07, 0.46, 0.13} % saisie en vert + + \begin{center} + \includegraphics{ordipolo.png}\\ + \Large\textbf{Dépannage informatique - Assistance à domicile} + \end{center} + + 2 A rue de l'île de Man, 29000 Quimper + + SIRET : 814 320 610 00011 + + \begin{tabularx}{0.67\linewidth}{@{}X@{}@{}X@{}} + Tel : 06.63.85.48.82 & Courriel : ordipolo@gmx.fr + \end{tabularx} + + Plus d'infos sur le site web: https\string://ordipolo.fr\\ + % \string supprime l'espace devant les : + + CLIENT\\ + + \begin{tabularx}{\linewidth}{@{}X@{}@{}X@{}} + Mme, M : \textcolor{vert}{} & + Date : \textcolor{vert}{}\\ + \end{tabularx}\\ + Adresse : \textcolor{vert}{}\\ + +\end{document} \ No newline at end of file diff --git a/LaTeX/ordipolo.png b/LaTeX/ordipolo.png new file mode 100644 index 0000000..2acd67d Binary files /dev/null and b/LaTeX/ordipolo.png differ diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..b3f5904 --- /dev/null +++ b/README.txt @@ -0,0 +1,26 @@ +OS compatible: +linux! +bsd et mac sont probablement compatibles si les dépendances requises sont disponibles +pas de version windows prévue + +dépendances obligatoires: +- php-cli (si votre distribution sépare php serveur web de php ligne de commande, installer le paquet php-cli) +version minimale de php = +- php-sqlite (moteur de base de données, activer si nécessaire le module pdo-sqlite dans le php.ini) +- zenity (fenêtres GTK pour scripts console) +- une distribution LaTeX pour le compiler en fichiers PDF à l'aide de la commande pdflatex (j'utilise TeX Live) +- interpréteurs sh, bash, ksh, csh, tcsh + +dépendances optionnelles: +- sqlitebrowser (interface graphique pour sqlite) +si absent, le script essaie de lancer "sqlite3" dans "xterm" + + +configuration: +- veuillez modifier les variables dans config.php +ATTENTION, si vous ne savez pas ce que vous faîtes, ne faites rien. +Pour réparer la configuration, saisissez une chaîne vide ou la valeur par défaut comme dans les exemples ci-dessous. + chaîne vide: +$receipts = ''; + valeur par défaut: +$receipts = '~/ORDIPOLO/factures/'; diff --git a/config.php b/config.php new file mode 100644 index 0000000..c34309d --- /dev/null +++ b/config.php @@ -0,0 +1,44 @@ +get()); +$MenuPrincipal = new Zenity_list($menu_principal_text, $menu_principal_entrees); +$QuestionNouveauClient = new Zenity_question($question_nouveau_client_text); +$MenuEnregistrement = new Zenity_list($menu_enregistrement_text, $menu_enregistrement_entrees); +$MenuDocuments = new Zenity_list($menu_documents_text, $menu_documents_entrees); +$MenuCommunication = new Zenity_list($menu_communication_text, $menu_communication_entrees); +$RechercheClient = new zenity_entry($recherche_client_text); +$ResultatsRechercheClient = new zenity_list($resultats_recherche_client_text, []); +$NouveauClient = new Zenity_forms($nouveau_client_text, $nouveau_client_entrees); +$Calendrier = new Zenity_calendar($calendar_text); +$FormulairePrestation = new Zenity_forms($formulaire_text, $formulaire_entrees); +$CommentairePrestation = new Zenity_entry($commentaire_prestation_text); + +// boucle principale +$boucle = true; +while($boucle) +{ + // menu principal + $choix_niv1 = exec($MenuPrincipal->get()); + + // enregistrement + if($choix_niv1 == 'Nouvelle prestation') + { + // est ce que le client est déjà dans la base? + if(exec($QuestionNouveauClient->get()) == 0) // $? = 0 signifie oui + { + // saisie du nom du client et recherche + $client_saisie = exec($RechercheClient->get()); + + // sélection parmi les résultats + $ResultatsRechercheClient->set_entries(recherche_client($client_saisie)); + $choix_niv2 = exec($ResultatsRechercheClient->get()); + if($choix_niv2 != '') + { + echo "client trouvé\n"; + } + else // chaîne vide + { + echo "client pas trouvé\n"; + exec($NouveauClient->get()); + + // enregistrement dans la BDD + + } + + // récupération des infos dans la BDD + + } + else + { + echo "nouveau client\n"; + exec($NouveauClient->get()); + + // enregistrement dans la BDD + + } + + // infos sur la prestation + $choix_niv2 = exec($MenuEnregistrement->get()); + $continuer = true; + if($choix_niv2 == "Devis") + { + $type = 'DEVIS'; + } + elseif($choix_niv2 == "Facture") + { + $type = 'FACTURE'; + } + elseif($choix_niv2 == "CESU") + { + $type = 'CESU'; + } + elseif($choix_niv2 == "Pas de prestation") + { + $type = ''; + } + else + { + $continuer = false; // retour menu principal + } + + if($continuer) + { + exec($Calendrier->get()); + exec($FormulairePrestation->get()); + // enregistrement date et prestation en BDD + exec($CommentairePrestation->get()); + // enregistrement commentaire en BDD + } + } + + elseif($choix_niv1 == 'Fichier clients') + { + // quel affichage? un grand tableau avec zenity? une page web? un document LaTeX? + } + + // documents à imprimer + elseif($choix_niv1 == 'Créer/imprimer un document') + { + $choix_niv2 = exec($MenuDocuments->get()); + if($choix_niv2 == 'Devis') + { + + } + elseif($choix_niv2 == 'Facture') + { + + } + elseif($choix_niv2 == 'Lettre avec adresse') + { + + } + elseif($choix_niv2 == 'Livre des recettes') + { + + } + elseif($choix_niv2 == "Registre des achats") + { + + } + elseif($choix_niv2 == "Bilan annuel") + { + + } + else + { + // retour menu principal + } + } + + // Supports de communication + elseif($choix_niv1 == 'Communication') + { + $choix_niv2 = exec($MenuCommunication->get()); + if($choix_niv2 == 'Flyer (nécessite gimp)') + { + exec(window_app_command('gimp', $flyer)); + } + elseif($choix_niv2 == 'Carte de visite (nécessite scribus)') + { + exec(window_app_command('scribus', $business_card)); + } + elseif($choix_niv2 == 'Explorateur de fichiers') + { + exec(window_app_command($file_explorer, $pub)); + } + else + { + // retour menu principal + } + } + + // BDD + elseif($choix_niv1 == 'Base de données') + { + if($sqlitebrowser_enable) + { + exec(window_app_command('sqlitebrowser', $db_place)); + } + else + { + exec($x_term_command . ' ' . $sqlite_cli . ' ' . $db_place); // correpond à priori à: xterm -e sqlite3 ~/ORDIPOLO/Appli_PHP/ordipolo.sqlite + } + } + else + { + $boucle = false; // byebye + } +} + +// sauvegarder la base de données diff --git a/logiciel compta.desktop b/logiciel compta.desktop new file mode 100755 index 0000000..37ac1f3 --- /dev/null +++ b/logiciel compta.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Name=logiciel compta +Comment= +Exec=/home/paulo/ORDIPOLO/Appli_PHP/index.php +Icon=/home/paulo/ORDIPOLO/PUB/logo.png +Path=/home/paulo/ORDIPOLO/Appli_PHP +Terminal=false +StartupNotify=false diff --git a/ordipolo.sqlite b/ordipolo.sqlite new file mode 100644 index 0000000..e69de29 diff --git a/php/Database.php b/php/Database.php new file mode 100644 index 0000000..81ce669 --- /dev/null +++ b/php/Database.php @@ -0,0 +1,26 @@ +setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); +} +catch (Exception $e) +{ + die('Erreur : '.$e->getMessage()); +} + + +// requêtes SQL +class SQL +{ + // créer les tables si elles n'existent pas encore + static function create_tables() + { + //$db->exec("CREATE TABLE IF NOT EXISTS matable (ID INTEGER PRIMARY KEY, champ1 INTEGER, champ2 TEXT);"); + // + // + } +} diff --git a/php/ZenityClasses.php b/php/ZenityClasses.php new file mode 100644 index 0000000..c286d14 --- /dev/null +++ b/php/ZenityClasses.php @@ -0,0 +1,111 @@ +text = $text; + $this->rows= $rows; + $this->command .= $this->command_type; + $this->command .= ' --title="' . $this->title . '"'; + $this->command .= ' --text="' . $this->text . '"'; + } + + public function get() + { + return($this->command); + } +} + + +class Zenity_list extends Zenity_cmd +{ + public function __construct($text, array $rows) + { + $this->command_type = ' --list'; + parent::__construct($text, $rows); + $this->height = 80 + count($this->rows) * 25; + $this->command .= ' --width=' . $this->width; + $this->command .= ' --height=' . $this->height; + $this->command .= ' --hide-header'; // ligne inutile, il y a déjà le --text + self::one_column_zenity_list($this->rows); + } + + public function set_entries($rows_set) // variable renseignée après la construction + { + $this->rows = $rows_set; + } + + private function one_column_zenity_list($rows) + { + $output = ' --column=""'; + foreach($rows as $entry) + { + $output .= ' "' . $entry . '"'; // forme: ' "choix 1" "choix 2"' + } + $this->command .= $output; + } +} + +class Zenity_question extends Zenity_cmd +{ + public function __construct($text) + { + $this->command_type = ' --question'; + parent::__construct($text); + $this->command .= ' && echo $?'; + // la sortie de "zenity --question" est le statut de sortie "$?" + // $? vaut 0 pour oui, 1 pour non, à ceci près que pour non zenity ne renvoie rien + } +} + +class Zenity_forms extends Zenity_cmd +{ + public function __construct($text, array $rows) + { + $this->command_type = ' --forms'; + parent::__construct($text, $rows); + //$this->height = 80 + count($this->rows) * 25; // à tester, mais devrait produire le rendu attendu + self::entries_zenity_forms($this->rows); + } + + private function entries_zenity_forms($entries) + { + $output = ''; + foreach($entries as $one_entry) + { + $output .= ' --add-entry="' . $one_entry . '"'; // forme: ' "choix 1" "choix 2"' + } + $this->command .= $output; + } +} + +class Zenity_calendar extends Zenity_cmd +{ + public function __construct($text) + { + $this->command_type = ' --calendar'; + parent::__construct($text); + } +} + +class Zenity_entry extends Zenity_cmd +{ + public function __construct($text) + { + $this->command_type = ' --entry'; + parent::__construct($text); + } +} diff --git a/php/compileLatex.php b/php/compileLatex.php new file mode 100644 index 0000000..ccd9dab --- /dev/null +++ b/php/compileLatex.php @@ -0,0 +1,30 @@ + /dev/null") == '') // commande qui n'ouvre pas de fenêtre, erreur si la chaine est vide parce que la sortie d'erreur va dans /dev/null +{ + printf("Impossible de lancer zenity. Veuillez installer le paquet zenity\n"); + exit(); +} + +// compilateur pdflatex disponible +if(exec("pdflatex -version 2> /dev/null") == '') // erreur si la chaine est vide parce que la sortie d'erreur va dans /dev/null +{ + printf("Impossible de lancer pdflatex. Veuillez installer une distribution LaTeX.\n"); + exit(); +} + +// test de la présence du paquet php-sqlite +// compliqué? dépend de l'OS? +// note: l'erreur se produit dès le démarrage de PHP si le php.ini est bon mais qu'il manque le paquet + +// module pdo_sqlite de PHP activé? +if(!extension_loaded("pdo_sqlite")) +{ + printf("Impossible d'utiliser la base de données. Veuillez installer le paquet php-sqlite ET activer l'extension pdo_sqlite dans le fichier php.ini.\n"); + exit(); +} + + +// client sqlite +if($exec_mode == 'gui') +{ + // sqlitebrowser disponible + if(exec("which sqlitebrowser 2> /dev/null") != '') // which parcourt les dossiers du PATH et affiche les chemins trouvés, erreur si la chaine est vide parce que la sortie d'erreur va dans /dev/null + { + $sqlitebrowser_enable = true; + } + // terminal en mode graphique disponible, permettra d'y utiliser sqlite dans la console + else + { + printf("Sqlitebrowser n'est pas disponible. J'espère que vous maîtrisez le SQL.\n"); + + if(exec("which xterm 2> /dev/null") != '' && exec("xterm -v 2> /dev/null") != '') + { + $x_term_ccommand = 'xterm -e'; + } + elseif(exec("which urxvt 2> /dev/null") != '') + { + $x_term_ccommand = 'urxvt -e'; + } + elseif(exec("which lxterminal 2> /dev/null") != '' && exec("lxterminal -v 2> /dev/null") != '') + { + $x_term_ccommand = 'lxterminal -e'; + } + elseif(exec("which xfce4-terminal 2> /dev/null") != '' && exec("xfce4-terminal -V 2> /dev/null") != '') + { + $x_term_ccommand = 'xfce4-terminal -x'; + } + elseif(exec("which gnome-terminal 2> /dev/null") != '') + { + $x_term_ccommand = 'gnome-terminal --'; + } + elseif(exec("which konsole 2> /dev/null") != '' && exec("konsole -v 2> /dev/null") != '') + { + $x_term_ccommand = 'konsole -e'; + } + // pour MAC - NON TESTÉ !! (possibilité de détecter le système avec uname?) + //~ elseif(exec("which Terminal 2> /dev/null") != '') + //~ { + //~ $x_term_ccommand = 'open -a Terminal -e'; // ne marche probablement pas + //~ } + else + { + printf("Impossible d'ouvrir un terminal pour y lancer sqlite. Veuillez installer un terminal en mode graphique (par exemple xterm).\n"); + } + } +} + +// sqlite CLI disponible +if(exec("which sqlite 2> /dev/null") != '' && exec("sqlite --version 2> /dev/null") != '') +{ + $sqlite_cli = 'sqlite'; +} +elseif(exec("which sqlite3 2> /dev/null") != '' && exec("sqlite3 --version 2> /dev/null") != '') +{ + $sqlite_cli = 'sqlite3'; +} +else +{ + printf("Impossible de lancer sqlite dans le terminal en utilisant la commande ' . $sqlite_cli . '\n"); +} diff --git a/php/functions.php b/php/functions.php new file mode 100644 index 0000000..61bc13e --- /dev/null +++ b/php/functions.php @@ -0,0 +1,26 @@ + /dev/null 2>&1 &'; + // stdout > /dev/null et & permettent de rendre la main à PHP + // stderr > stdout pour cacher un message inutile + return $command; +} + +function recherche_client(string $saisie): array +{ + $resultats = []; + + // recherche dans la BDD + + + return($resultats); +} diff --git a/php/saisie.php b/php/saisie.php new file mode 100644 index 0000000..4b41fbf --- /dev/null +++ b/php/saisie.php @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + +