summaryrefslogtreecommitdiff
path: root/php/dependances.php
blob: 4a5667ed009f54d319c232fdb0567fcb4e3df340 (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
<?php
// php/dependances.php
// Vérification des dépendances nécessaires au fonctionnement de ce programmes.

// Environnement dans lequel ce programmes a été créé:
// - système archlinux avec l'interpréteur bash
// - PHP 8.1 + paquet php-sqlite
// - module pdo_sqlite activé dans le fichier php.ini
// - sqlitebrowser (interface graphique pour sqlite)
// - distribution LaTeX texlive
// - zenity

// 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\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");
}