home *** CD-ROM | disk | FTP | other *** search
/ Enter 2004 June / ENTER.ISO / files / xampp-win32-1.4.5-installer.exe / xampp / defines.lib.php < prev    next >
Encoding:
PHP Script  |  2004-06-30  |  6.6 KB  |  183 lines

  1. <?php
  2. /* $Id: defines.lib.php,v 2.6.2.9 2004/06/30 18:47:05 lem9 Exp $ */
  3. // vim: expandtab sw=4 ts=4 sts=4:
  4.  
  5. /**
  6.  * DEFINES VARIABLES & CONSTANTS
  7.  * Overview:
  8.  *    PMA_VERSION              (string) - phpMyAdmin version string
  9.  *    PMA_PHP_INT_VERSION      (int)    - eg: 30017 instead of 3.0.17 or
  10.  *                                        40006 instead of 4.0.6RC3
  11.  *    PMA_IS_WINDOWS           (bool)   - mark if phpMyAdmin running on windows
  12.  *                                        server
  13.  *    PMA_IS_GD2               (bool)   - true if GD2 is present
  14.  *    PMA_USR_OS               (string) - the plateform (os) of the user
  15.  *    PMA_USR_BROWSER_AGENT    (string) - the browser of the user
  16.  *    PMA_USR_BROWSER_VER      (double) - the version of this browser
  17.  */
  18. // phpMyAdmin release
  19. if (!defined('PMA_VERSION')) {
  20.     define('PMA_VERSION', '2.5.7-pl1');
  21. }
  22.  
  23. // php version
  24. if (!defined('PMA_PHP_INT_VERSION')) {
  25.     if (!preg_match('@([0-9]{1,2}).([0-9]{1,2}).([0-9]{1,2})@', phpversion(), $match)) {
  26.         $result = preg_match('@([0-9]{1,2}).([0-9]{1,2})@', phpversion(), $match);
  27.     }
  28.     if (isset($match) && !empty($match[1])) {
  29.         if (!isset($match[2])) {
  30.             $match[2] = 0;
  31.         }
  32.         if (!isset($match[3])) {
  33.             $match[3] = 0;
  34.         }
  35.         define('PMA_PHP_INT_VERSION', (int)sprintf('%d%02d%02d', $match[1], $match[2], $match[3]));
  36.         unset($match);
  37.     } else {
  38.         define('PMA_PHP_INT_VERSION', 0);
  39.     }
  40.     define('PMA_PHP_STR_VERSION', phpversion());
  41. }
  42.  
  43. // Whether the os php is running on is windows or not
  44. if (!defined('PMA_IS_WINDOWS')) {
  45.     if (defined('PHP_OS') && stristr(PHP_OS, 'win')) {
  46.         define('PMA_IS_WINDOWS', 1);
  47.     } else {
  48.         define('PMA_IS_WINDOWS', 0);
  49.     }
  50. }
  51.  
  52. function PMA_dl($module) {
  53.     if (!isset($GLOBALS['PMA_dl_allowed'])) {
  54.         if (!@ini_get('safe_mode') && @ini_get('enable_dl') && @function_exists('dl')) {
  55.             ob_start();
  56.             phpinfo(INFO_GENERAL); /* Only general info */
  57.             $a = strip_tags(ob_get_contents());
  58.             ob_end_clean();
  59.             /* Get GD version string from phpinfo output */
  60.             if (preg_match('@Thread Safety[[:space:]]*enabled@', $a)) {
  61.                 if (preg_match('@Server API[[:space:]]*\(CGI\|CLI\)@', $a)) {
  62.                     $GLOBALS['PMA_dl_allowed'] = TRUE;
  63.                 } else {
  64.                     $GLOBALS['PMA_dl_allowed'] = FALSE;
  65.                 }
  66.             } else {
  67.                 $GLOBALS['PMA_dl_allowed'] = TRUE;
  68.             }
  69.         } else {
  70.             $GLOBALS['PMA_dl_allowed'] = FALSE;
  71.         }
  72.     }
  73.     if (PMA_IS_WINDOWS) {
  74.         $suffix = '.dll';
  75.     } else {
  76.         $suffix = '.so';
  77.     }
  78.     if ($GLOBALS['PMA_dl_allowed']) {
  79.         return @dl($module . $suffix);
  80.     } else {
  81.         return FALSE;
  82.     }
  83. }
  84.  
  85. // Whether GD2 is present
  86. if (!defined('PMA_IS_GD2')) {
  87.     if ($cfg['GD2Available'] == 'yes') {
  88.         define('PMA_IS_GD2', 1);
  89.     } elseif ($cfg['GD2Available'] == 'no') {
  90.         define('PMA_IS_GD2', 0);
  91.     } else {
  92.         if (!@extension_loaded('gd')) {
  93.             PMA_dl('gd');
  94.         }
  95.         if (!@function_exists('imagecreatetruecolor')) {
  96.             define('PMA_IS_GD2', 0);
  97.         } else {
  98.             if (@function_exists('gd_info')) {
  99.                 $gd_nfo = gd_info();
  100.                 if (strstr($gd_nfo["GD Version"], '2.')) {
  101.                     define('PMA_IS_GD2', 1);
  102.                 } else {
  103.                     define('PMA_IS_GD2', 0);
  104.                 }
  105.             } else {
  106.                 /* We must do hard way... */
  107.                 ob_start();
  108.                 phpinfo(INFO_MODULES); /* Only modules */
  109.                 $a = strip_tags(ob_get_contents());
  110.                 ob_end_clean();
  111.                 /* Get GD version string from phpinfo output */
  112.                 if (preg_match('@GD Version[[:space:]]*\(.*\)@', $a, $v)) {
  113.                     if (strstr($v, '2.')) {
  114.                         define('PMA_IS_GD2', 1);
  115.                     } else {
  116.                         define('PMA_IS_GD2', 0);
  117.                     }
  118.                 } else {
  119.                     define('PMA_IS_GD2', 0);
  120.                 }
  121.             }
  122.         }
  123.     }
  124. }
  125.  
  126. // Determines platform (OS), browser and version of the user
  127. // Based on a phpBuilder article:
  128. //   see http://www.phpbuilder.net/columns/tim20000821.php
  129. if (!defined('PMA_USR_OS')) {
  130.     if (!empty($_SERVER['HTTP_USER_AGENT'])) {
  131.         $HTTP_USER_AGENT = $_SERVER['HTTP_USER_AGENT'];
  132.     } else if (!isset($HTTP_USER_AGENT)) {
  133.         $HTTP_USER_AGENT = '';
  134.     }
  135.  
  136.     // 1. Platform
  137.     if (strstr($HTTP_USER_AGENT, 'Win')) {
  138.         define('PMA_USR_OS', 'Win');
  139.     } else if (strstr($HTTP_USER_AGENT, 'Mac')) {
  140.         define('PMA_USR_OS', 'Mac');
  141.     } else if (strstr($HTTP_USER_AGENT, 'Linux')) {
  142.         define('PMA_USR_OS', 'Linux');
  143.     } else if (strstr($HTTP_USER_AGENT, 'Unix')) {
  144.         define('PMA_USR_OS', 'Unix');
  145.     } else if (strstr($HTTP_USER_AGENT, 'OS/2')) {
  146.         define('PMA_USR_OS', 'OS/2');
  147.     } else {
  148.         define('PMA_USR_OS', 'Other');
  149.     }
  150.  
  151.     // 2. browser and version
  152.     // (must check everything else before Mozilla)
  153.  
  154.     if (preg_match('@Opera(/| )([0-9].[0-9]{1,2})@', $HTTP_USER_AGENT, $log_version)) {
  155.         define('PMA_USR_BROWSER_VER', $log_version[2]);
  156.         define('PMA_USR_BROWSER_AGENT', 'OPERA');
  157.     } else if (preg_match('@MSIE ([0-9].[0-9]{1,2})@', $HTTP_USER_AGENT, $log_version)) {
  158.         define('PMA_USR_BROWSER_VER', $log_version[1]);
  159.         define('PMA_USR_BROWSER_AGENT', 'IE');
  160.     } else if (preg_match('@OmniWeb/([0-9].[0-9]{1,2})@', $HTTP_USER_AGENT, $log_version)) {
  161.         define('PMA_USR_BROWSER_VER', $log_version[1]);
  162.         define('PMA_USR_BROWSER_AGENT', 'OMNIWEB');
  163.     //} else if (ereg('Konqueror/([0-9].[0-9]{1,2})', $HTTP_USER_AGENT, $log_version)) {
  164.     // Konqueror 2.2.2 says Konqueror/2.2.2
  165.     // Konqueror 3.0.3 says Konqueror/3
  166.     } else if (preg_match('@(Konqueror/)(.*)(;)@', $HTTP_USER_AGENT, $log_version)) {
  167.         define('PMA_USR_BROWSER_VER', $log_version[2]);
  168.         define('PMA_USR_BROWSER_AGENT', 'KONQUEROR');
  169.     } else if (preg_match('@Mozilla/([0-9].[0-9]{1,2})@', $HTTP_USER_AGENT, $log_version)
  170.                && preg_match('@Safari/([0-9]*)@', $HTTP_USER_AGENT, $log_version2)) {
  171.         define('PMA_USR_BROWSER_VER', $log_version[1] . '.' . $log_version2[1]);
  172.         define('PMA_USR_BROWSER_AGENT', 'SAFARI');
  173.     } else if (preg_match('@Mozilla/([0-9].[0-9]{1,2})@', $HTTP_USER_AGENT, $log_version)) {
  174.         define('PMA_USR_BROWSER_VER', $log_version[1]);
  175.         define('PMA_USR_BROWSER_AGENT', 'MOZILLA');
  176.     } else {
  177.         define('PMA_USR_BROWSER_VER', 0);
  178.         define('PMA_USR_BROWSER_AGENT', 'OTHER');
  179.     }
  180. }
  181.  
  182. ?>
  183.