summaryrefslogtreecommitdiff
path: root/src/dependances.php
blob: f2144a7511f1bfaa692b0b3068605583daab8d41 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<?php
// src/dependances.php
// Vérification des dépendances nécessaires au fonctionnement de ce programme.

// Environnement dans lequel ce programmes a été créé:
// - système archlinux avec un bureau et l'interpréteur bash (sh non testé)
// - PHP 8.1
// - paquet php-sqlite et module pdo_sqlite activé dans le php.ini
// - zenity
// - sqlite 3
// - sqlitebrowser (GUI pour sqlite)
// - 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

// zenity disponible
if(exec("zenity --version 2> /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.\nUn environnemet graphique est également nécéssaire.\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");
}