// +----------------------------------------------------------------------+
// | Authors: Sterling Hughes <sterling@php.net> |
// | Stig Bakken <ssb@fast.no> |
+// | Tomas V.V.Cox <cox@idecnet.com> |
+// | |
// +----------------------------------------------------------------------+
//
// $Id$
}
// }}}
+
+ /**
+ * 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()