/** * Get version bounds from two version strings, that can be on the * format '5', '5.2', '5.x.x' even be 'false' */ function GetVersionBounds($minimumVersion, $maximumVersion) { $current = VersionStringToArray(phpversion()); # PHP ALWAYS HAS FULL VERSION STRING!! $minimum = VersionStringToArray($minimumVersion, '0'); // Any higher version is accepted! if ($maximumVersion === false) { return array('current' => $current, 'lower' => $minimum, 'upper' => VersionStringToArray('99.99.99')); } else { if ($maximumVersion !== false) { return array('current' => $current, 'lower' => $minimum, 'upper' => VersionStringToArray($maximumVersion, '99')); } else { // Create upper bounds from the required version, such that // any undefined values will be maximum return array('current' => $current, 'lower' => $minimum, 'upper' => VersionStringToArray($minversion, '99')); } } }
// If minimum PHP version is required if ($steps[STEP_PHPREQUIRES]['phpversion'] !== false) { $page->SubTitle('PHP Version', 'notepad'); $bounds = GetVersionBounds($steps[STEP_PHPREQUIRES]['phpversion'], $steps[STEP_PHPREQUIRES]['maxversion']); $CurLow = CompareVersons($bounds['current'], $bounds['lower']); $CurHig = CompareVersons($bounds['current'], $bounds['upper']); // Start the version table $page->StartTable(4, array('class' => 'dbtests', 'cellspacing' => '0', 'cellpadding' => '0')); // Display the requirements $page->AddTableData('', array('class' => 'currentico')); $page->AddTableData('Required:', array('style' => 'padding-right:15px;')); // If range is defined or not if ($steps[STEP_PHPREQUIRES]['maxversion'] === false) { $str = ' or later'; } else { $str = ' - ' . implode('.', VersionStringToArray($steps[STEP_PHPREQUIRES]['maxversion'])); } $page->AddTableData(implode('.', $bounds['lower']) . $str, array('style' => 'padding-right:15px;')); $page->AddTableData(''); // If current version is equal or higher than lower bound // and is below the upper bound - then accepted! if ($CurLow >= 0 && $CurHig < 0) { $page->AddTableData('', array('class' => 'okayico')); $page->AddTableData('You have:'); $page->AddTableData(phpversion(), array('style' => 'text-align:center;')); $page->AddTableData('Supported!', array('class' => 'okay')); } else { $phpversion = false; if ($CurLow < 0) { $str = 'Below required version!'; } else {
if($key == 'phpversion') { $version = implode('.', VersionStringToArray($value, '0')); if($version != $value) $show .= ' <span style="color:#8F8F8F; font-size:11px;">(becomes minimum: '.$version.')</span>'; $page->AddTableData('<tt>'.$show.'</tt>'); } /* -----------------------( PHP VERSION STRING )----------------------- */ else if($key == 'maxversion') { if($value === false) $value = 'x'; $version = implode('.', VersionStringToArray($value, '99')); if($version != $value) $show .= ' <span style="color:#8F8F8F; font-size:11px;">(becomes maximum: '.$version.')</span>'; $page->AddTableData('<tt>'.$show.'</tt>'); } /* -----------------------( PHP EXTENSIONS )----------------------- */ else if($key == 'extensions' && is_array($value)) { $show = ''; foreach($value as $ext=>$title) { if(IsExtensionInstalled($ext)) $show .= '['.GetAsGreen($ext).'] '.$title.'<br />'; else $show .= '['.GetAsRed($ext).'] '.$title.'<br />';