3 // vim: expandtab sw=4 ts=4 sts=4:
6 * DEFINES VARIABLES & CONSTANTS
8 * PMA_VERSION (string) - phpMyAdmin version string
9 * PMA_THEME_VERSION (int) - phpMyAdmin theme version integer
10 * PMA_THEME_GENERATION (int) - phpMyAdmin theme generation integer
11 * PMA_PHP_INT_VERSION (int) - eg: 30017 instead of 3.0.17 or
12 * 40006 instead of 4.0.6RC3
13 * PMA_IS_WINDOWS (bool) - mark if phpMyAdmin running on windows
14 * PMA_IS_IIS (bool) - true is phpMyAdmin is running
15 * on Microsoft IIS server
16 * PMA_IS_GD2 (bool) - true if GD2 is present
17 * PMA_USR_OS (string) - the plateform (os) of the user
18 * PMA_USR_BROWSER_AGENT (string) - the browser of the user
19 * PMA_USR_BROWSER_VER (double) - the version of this browser
22 if (!defined('PMA_VERSION')) {
23 define('PMA_VERSION', '2.7.0-beta2');
26 if (!defined('PMA_THEME_VERSION')) {
27 define('PMA_THEME_VERSION', 2);
30 if (!defined('PMA_THEME_GENERATION')) {
31 define('PMA_THEME_GENERATION', 2);
35 if (!defined('PMA_PHP_INT_VERSION')) {
36 if (!preg_match('@([0-9]{1,2}).([0-9]{1,2}).([0-9]{1,2})@', phpversion(), $match)) {
37 $result = preg_match('@([0-9]{1,2}).([0-9]{1,2})@', phpversion(), $match);
39 if (isset($match) && !empty($match[1])) {
40 if (!isset($match[2])) {
43 if (!isset($match[3])) {
46 define('PMA_PHP_INT_VERSION', (int)sprintf('%d%02d%02d', $match[1], $match[2], $match[3]));
49 define('PMA_PHP_INT_VERSION', 0);
51 define('PMA_PHP_STR_VERSION', phpversion());
54 // Whether the os php is running on is windows or not
55 if (!defined('PMA_IS_WINDOWS')) {
56 if (defined('PHP_OS') && stristr(PHP_OS
, 'win')) {
57 define('PMA_IS_WINDOWS', 1);
59 define('PMA_IS_WINDOWS', 0);
63 // Whether the Web server php is running on is IIS
64 if (!defined('PMA_IS_IIS')) {
65 if (isset($_SERVER['SERVER_SOFTWARE'])
66 && stristr($_SERVER['SERVER_SOFTWARE'], 'Microsoft/IIS')) {
67 define('PMA_IS_IIS', 1);
69 define('PMA_IS_IIS', 0);
73 function PMA_dl($module) {
74 if (!isset($GLOBALS['PMA_dl_allowed'])) {
75 if (!@ini_get
('safe_mode') && @ini_get
('enable_dl') && @function_exists
('dl')) {
77 phpinfo(INFO_GENERAL
); /* Only general info */
78 $a = strip_tags(ob_get_contents());
80 /* Get GD version string from phpinfo output */
81 if (preg_match('@Thread Safety[[:space:]]*enabled@', $a)) {
82 if (preg_match('@Server API[[:space:]]*\(CGI\|CLI\)@', $a)) {
83 $GLOBALS['PMA_dl_allowed'] = TRUE;
85 $GLOBALS['PMA_dl_allowed'] = FALSE;
88 $GLOBALS['PMA_dl_allowed'] = TRUE;
91 $GLOBALS['PMA_dl_allowed'] = FALSE;
99 if ($GLOBALS['PMA_dl_allowed']) {
100 return @dl
($module . $suffix);
106 // Whether GD2 is present
107 if (!defined('PMA_IS_GD2')) {
108 if ($cfg['GD2Available'] == 'yes') {
109 define('PMA_IS_GD2', 1);
110 } elseif ($cfg['GD2Available'] == 'no') {
111 define('PMA_IS_GD2', 0);
113 if (!@extension_loaded
('gd')) {
116 if (!@function_exists
('imagecreatetruecolor')) {
117 define('PMA_IS_GD2', 0);
119 if (@function_exists
('gd_info')) {
121 if (strstr($gd_nfo["GD Version"], '2.')) {
122 define('PMA_IS_GD2', 1);
124 define('PMA_IS_GD2', 0);
127 /* We must do hard way... */
129 phpinfo(INFO_MODULES
); /* Only modules */
130 $a = strip_tags(ob_get_contents());
132 /* Get GD version string from phpinfo output */
133 if (preg_match('@GD Version[[:space:]]*\(.*\)@', $a, $v)) {
134 if (strstr($v, '2.')) {
135 define('PMA_IS_GD2', 1);
137 define('PMA_IS_GD2', 0);
140 define('PMA_IS_GD2', 0);
147 // Determines platform (OS), browser and version of the user
148 // Based on a phpBuilder article:
149 // see http://www.phpbuilder.net/columns/tim20000821.php
150 if (!defined('PMA_USR_OS')) {
151 if (!empty($_SERVER['HTTP_USER_AGENT'])) {
152 $HTTP_USER_AGENT = $_SERVER['HTTP_USER_AGENT'];
153 } else if (!isset($HTTP_USER_AGENT)) {
154 $HTTP_USER_AGENT = '';
158 if (strstr($HTTP_USER_AGENT, 'Win')) {
159 define('PMA_USR_OS', 'Win');
160 } else if (strstr($HTTP_USER_AGENT, 'Mac')) {
161 define('PMA_USR_OS', 'Mac');
162 } else if (strstr($HTTP_USER_AGENT, 'Linux')) {
163 define('PMA_USR_OS', 'Linux');
164 } else if (strstr($HTTP_USER_AGENT, 'Unix')) {
165 define('PMA_USR_OS', 'Unix');
166 } else if (strstr($HTTP_USER_AGENT, 'OS/2')) {
167 define('PMA_USR_OS', 'OS/2');
169 define('PMA_USR_OS', 'Other');
172 // 2. browser and version
173 // (must check everything else before Mozilla)
175 if (preg_match('@Opera(/| )([0-9].[0-9]{1,2})@', $HTTP_USER_AGENT, $log_version)) {
176 define('PMA_USR_BROWSER_VER', $log_version[2]);
177 define('PMA_USR_BROWSER_AGENT', 'OPERA');
178 } else if (preg_match('@MSIE ([0-9].[0-9]{1,2})@', $HTTP_USER_AGENT, $log_version)) {
179 define('PMA_USR_BROWSER_VER', $log_version[1]);
180 define('PMA_USR_BROWSER_AGENT', 'IE');
181 } else if (preg_match('@OmniWeb/([0-9].[0-9]{1,2})@', $HTTP_USER_AGENT, $log_version)) {
182 define('PMA_USR_BROWSER_VER', $log_version[1]);
183 define('PMA_USR_BROWSER_AGENT', 'OMNIWEB');
184 //} else if (ereg('Konqueror/([0-9].[0-9]{1,2})', $HTTP_USER_AGENT, $log_version)) {
185 // Konqueror 2.2.2 says Konqueror/2.2.2
186 // Konqueror 3.0.3 says Konqueror/3
187 } else if (preg_match('@(Konqueror/)(.*)(;)@', $HTTP_USER_AGENT, $log_version)) {
188 define('PMA_USR_BROWSER_VER', $log_version[2]);
189 define('PMA_USR_BROWSER_AGENT', 'KONQUEROR');
190 } else if (preg_match('@Mozilla/([0-9].[0-9]{1,2})@', $HTTP_USER_AGENT, $log_version)
191 && preg_match('@Safari/([0-9]*)@', $HTTP_USER_AGENT, $log_version2)) {
192 define('PMA_USR_BROWSER_VER', $log_version[1] . '.' . $log_version2[1]);
193 define('PMA_USR_BROWSER_AGENT', 'SAFARI');
194 } else if (preg_match('@Mozilla/([0-9].[0-9]{1,2})@', $HTTP_USER_AGENT, $log_version)) {
195 define('PMA_USR_BROWSER_VER', $log_version[1]);
196 define('PMA_USR_BROWSER_AGENT', 'MOZILLA');
198 define('PMA_USR_BROWSER_VER', 0);
199 define('PMA_USR_BROWSER_AGENT', 'OTHER');