Index: PEAR.php =================================================================== RCS file: /repository/php4/pear/PEAR.php,v retrieving revision 1.20 diff -u -r1.20 PEAR.php --- PEAR.php 31 Aug 2001 19:13:24 -0000 1.20 +++ PEAR.php 4 Oct 2001 17:14:45 -0000 @@ -489,6 +489,61 @@ } // }}} + + /** + * Converts a php version string to an array + * (supported formats are: X.X.X, X.X.X-dev, X.X.XplX) + * + * @param string $version A valid php version (ie. 4.0.7) + * @return array + * @see PEAR::phpVersionIs() + */ + function _explodePHPVersion($version) + { + @list($v, ) = explode('-', $version); // 4.0.7-dev + list($mayor, $minor, $sub) = explode('.', $v); + @list($sub, $patch) = explode('pl', $sub); // 4.0.14pl1 + if ($patch === null) { + $patch = 0; + } + return array($mayor, $minor, $sub, $patch); + } + + /** + * Find if a version is minor or greater than a given PHP version + * (useful for dependencies checking). + * Usage: + * PEAR::phpVersionIs('4.0.7') => if version 4.0.7 if minor than + * the current version + * PEAR::phpVersionIs(null, '4.0.12pl3') => if version 4.0.12pl3 is greater + * PEAR::phpVersionIs('4.0.5', '4.0.7') => if version is between 4.0.5 and 4.0.7 + * + * @param string $minorthan PHP version that should be minor than the given version + * @param string $greaterthan PHP version that should be greater + * @param string $version The PHP version to compare with (defaults to current) + * + * @return bool If the comparation was successful or not + */ + function phpVersionIs($minorthan = null, $greaterthan = null, $version = PHP_VERSION) + { + $version = PEAR::_explodePHPVersion($version); + $ret = false; + if ($minorthan) { + $minor = PEAR::_explodePHPVersion($minorthan); + for ($i=0; $i < count($version)-1 && $minor[$i] == $version[$i]; $i++); + if ($minor[$i] >= $version[$i]) { + return false; + } + $ret = true; + } + if ($greaterthan) { + $greater = PEAR::_explodePHPVersion($greaterthan); + for ($i=0; $i < count($version)-1 && $greater[$i] == $version[$i]; $i++); + $ret = ($greater[$i] > $version[$i]) ? true : false; + } + return $ret; + } + } // {{{ _PEAR_call_destructors()