mirror of
https://github.com/moodle/moodle.git
synced 2025-03-18 22:50:19 +01:00
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:
parent
36372e0cde
commit
9bdc03bc06
@ -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 {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
?>
|
||||
|
Loading…
x
Reference in New Issue
Block a user