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 --- 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 ++++++++++ 7 files changed, 373 insertions(+) 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 (limited to 'php') 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 @@ +