Added the higer level check_moodle_environment()

It's the only one to be used from the rest of code.
Changed recommended to optional.
This commit is contained in:
stronk7 2006-01-16 22:07:59 +00:00
parent 36372e0cde
commit 9bdc03bc06

View File

@ -1,4 +1,4 @@
<?php //$Ia:d$
<?php //$Id$
///////////////////////////////////////////////////////////////////////////
// //
@ -46,6 +46,57 @@ define(NO_PHP_EXTENSIONS_SECTION_FOUND, 10);
define(NO_PHP_EXTENSIONS_NAME_FOUND, 11);
define(NO_PHP_EXTENSION_WITH_NAME, 12);
//--- Presentation functions to display all the interface ---//
//--- Logic functions to parse and detect everything ---//
/**
* This function will perform the whole check, returning
* true or false as final result. Also, he full array of
* environment_result will be returned in the parameter list.
* The function looks for the best version to compare and
* everything. This is the only function that should be called
* ever from the rest of Moodle.
* @param string version version to check.
* @param array results array of results checked.
* @return boolean true/false, depending of results
*/
function check_moodle_environment($version, &$environment_results) {
/// Get the more recent version before the requested
if (!$version = get_latest_version_available($version)) {
return false;
}
/// Perform all the checks
if(!$environment_results = environment_check($version)) {
return false;
}
/// Iterate over all the results looking for some error in required items
foreach ($environment_results as $environment_result) {
if (empty($environment_result->result) && $environment_result->level == 'required') {
return false;
}
}
return true;
}
/**
* This function will normalize any version to just a serie of numbers
* separated by dots. Everything else will be removed.
@ -113,12 +164,52 @@ function get_list_of_environment_versions ($contents) {
return $versions;
}
/**
* This function will return the most recent version in the environment.xml
* file previous or equal to the version requested
* @param string version top version from which we start to look backwards
* @return string more recent version or false if not found
*/
function get_latest_version_available ($version) {
/// Normalize the version requested
$version = normalize_version($version);
/// Load xml file
if (!$contents = load_environment_xml()) {
return false;
}
/// Detect available versions
if (!$versions = get_list_of_environment_versions($contents)) {
return false;
}
/// First we look for exact version
if (in_array($version, $versions)) {
return $version;
} else {
$found_version = false;
/// Not exact match, so we are going to iterate over the list searching
/// for the latest version before the requested one
foreach ($versions as $arrversion) {
if (version_compare($arrversion, $version, '<')) {
$found_version = $arrversion;
}
}
}
return $found_version;
}
/**
* This function will return the xmlized data belonging to one Moodle version
* @return mixed the xmlized structure or false on error
*/
function get_environment_for_version($version) {
/// Normalize the version requested
$version = normalize_version($version);
/// Load xml file
if (!$contents = load_environment_xml()) {
return false;
@ -148,6 +239,9 @@ function get_environment_for_version($version) {
*/
function environment_check($version) {
/// Normalize the version requested
$version = normalize_version($version);
$results = array(); //To store all the results
$results[] = environment_check_database($version);
@ -172,6 +266,7 @@ function environment_check_php_extensions($version) {
/// Get the enviroment version we need
if (!$data = get_environment_for_version($version)) {
/// Error. No version data found
$result = new environment_results('php_extensions');
$result->setStatus(false);
$result->setErrorCode(NO_VERSION_DATA_FOUND);
return $result;
@ -180,6 +275,7 @@ function environment_check_php_extensions($version) {
/// Extract the php_extension part
if (!isset($data['#']['PHP_EXTENSIONS']['0']['#']['PHP_EXTENSION'])) {
/// Error. No PHP section found
$result = new environment_results('php_extensions');
$result->setStatus(false);
$result->setErrorCode(NO_PHP_EXTENSIONS_SECTION_FOUND);
return $result;
@ -190,7 +286,7 @@ function environment_check_php_extensions($version) {
/// Check for level
if (isset($extension['@']['level'])) {
$level = $extension['@']['level'];
if ($level != 'recommended') {
if ($level != 'optional') {
$level = 'required';
}
}
@ -245,7 +341,7 @@ function environment_check_php($version) {
/// Extract level and version
if (isset($data['#']['PHP']['0']['@']['level'])) {
$level = $data['#']['PHP']['0']['level'];
if ($level != 'recommended') {
if ($level != 'optional') {
$level = 'required';
}
}
@ -306,7 +402,7 @@ function environment_check_database($version) {
/// Extract level
if (isset($data['#']['DATABASE']['0']['@']['level'])) {
$level = $data['#']['DATABASE']['0']['level'];
if ($level != 'recommended') {
if ($level != 'optional') {
$level = 'required';
}
}
@ -366,6 +462,10 @@ function environment_check_database($version) {
//--- Helper Class to return results to caller ---//
/**
* This class is used to return the results of the environment
* main functions (environment_check_xxxx)
@ -374,7 +474,7 @@ class environment_results {
var $result; //true/false
var $error_code; //integer. See constants at the beginning of the file
var $level; //required/recommended
var $level; //required/optional
var $current_version; //current version detected
var $needed_version; //version needed
var $info; //Aux. info (DB vendor, library...)
@ -413,7 +513,7 @@ class environment_results {
/**
* Set the level
* @param string the level (required, recommended)
* @param string the level (required, optional)
*/
function setLevel($level) {
$this->level=$level;
@ -444,6 +544,4 @@ class environment_results {
}
}
?>