$string['environment'] = 'Environment';
$string['environmenterrortodo'] = 'You must solve all the environmental problems (errors) found above before proceeding to install this Moodle version!';
$string['environmenterrorupgrade'] = 'Warning: you should solve all the environmental problems (errors) found above before proceeding to upgrade this Moodle version! Upgrading without fixing these requirements could cause problems such as data loss. Are you sure you want to continue with the upgrade?';
+$string['environmenmustfixsetting'] = 'PHP setting must be changed.';
+$string['environmenshouldfixsetting'] = 'PHP setting should be changed.';
+$string['environmentsettingok'] = 'Recommended setting detected';
$string['environmentok'] = 'Your server environment meets all minimum requirements.';
$string['environmentrecommendcustomcheck'] = 'if this test fails, it indicates a potential problem';
$string['environmentrecommendinstall'] = 'should be installed and enabled for best results';
$string['frontpageroles'] = 'Front Page roles';
$string['frontpagesettings'] = 'Front Page settings';
$string['fullnamedisplay'] = 'Full Name Format';
+$string['gdrecommended'] = 'GD extension is used for conversion of images, some features such as user progile images will not be available if missing.';
$string['gdversion'] = 'GD version';
$string['generalsettings'] = 'General settings';
$string['geoipfile'] = 'GeoIP City data file';
$string['sessioncookiepath'] = 'Cookie path';
$string['sessionhandling'] = 'Session Handling';
$string['sessiontimeout'] = 'Timeout';
+$string['settingsafemode'] = 'Moodle is not fully compatible with safe mode, please ask server administrator to turn it off. Running Moodle under safe mode is not supported, please expect various problems if you do so.';
+$string['settingfileuploads'] = 'File uploading is required for normal operation, please neable it in PHP configuration.';
+$string['settingmemorylimit'] = 'Insufficient memory detected, please set higher memory limit in PHP settings.';
$string['showblocksonmodpages'] = 'Show blocks on module pages';
$string['showdetails'] = 'Show details';
$string['simpletest'] = 'Unit tests';
define('NO_CUSTOM_CHECK_FOUND', 12);
define('CUSTOM_CHECK_FILE_MISSING', 13);
define('CUSTOM_CHECK_FUNCTION_MISSING', 14);
+ define('NO_PHP_SETTINGS_NAME_FOUND', 15);
/**
* This function will perform the whole check, returning
if ($print_table) {
print_moodle_environment($result && $status, $environment_results);
}
-
return ($result && $status);
}
} else {
$stringtouse = 'environmentrecommendcustomcheck';
}
+ } else if ($environment_result->getPart() == 'php_setting') {
+ if ($status) {
+ $stringtouse = 'environmentsettingok';
+ } else if ($environment_result->getLevel() == 'required') {
+ $stringtouse = 'environmenmustfixsetting';
+ } else {
+ $stringtouse = 'environmenshouldfixsetting';
+ }
} else {
if ($environment_result->getLevel() == 'required') {
$stringtouse = 'environmentrequireinstall';
$phpext_results = environment_check_php_extensions($version);
$results = array_merge($results, $phpext_results);
+ $phpsetting_results = environment_check_php_settings($version);
+ $results = array_merge($results, $phpsetting_results);
+
$custom_results = environment_custom_checks($version);
$results = array_merge($results, $custom_results);
return $results;
}
+/**
+ * This function will check if php extensions requirements are satisfied
+ * @param string $version xml version we are going to use to test this server
+ * @return array array of results encapsulated in one environment_result object
+ */
+function environment_check_php_settings($version) {
+
+ $results = array();
+
+/// Get the enviroment version we need
+ if (!$data = get_environment_for_version($version)) {
+ /// Error. No version data found
+ $result = new environment_results('php_setting');
+ $result->setStatus(false);
+ $result->setErrorCode(NO_VERSION_DATA_FOUND);
+ return $result;
+ }
+
+/// Extract the php_setting part
+ if (!isset($data['#']['PHP_SETTINGS']['0']['#']['PHP_SETTING'])) {
+ /// No PHP section found - ignore
+ return $results;
+ }
+/// Iterate over settings checking them and creating the needed environment_results
+ foreach($data['#']['PHP_SETTINGS']['0']['#']['PHP_SETTING'] as $setting) {
+ $result = new environment_results('php_setting');
+ /// Check for level
+ $level = get_level($setting);
+ $result->setLevel($level);
+ /// Check for extension name
+ if (!isset($setting['@']['name'])) {
+ $result->setStatus(false);
+ $result->setErrorCode(NO_PHP_SETTINGS_NAME_FOUND);
+ } else {
+ $setting_name = $setting['@']['name'];
+ $setting_value = $setting['@']['value'];
+ $result->setInfo($setting_name);
+
+ if ($setting_name == 'memory_limit') {
+ $current = ini_get('memory_limit');
+ if ($current == -1) {
+ $result->setStatus(true);
+ } else {
+ $current = get_real_size($current);
+ $minlimit = get_real_size($setting_value);
+ if ($current < $minlimit) {
+ @ini_set('memory_limit', $setting_value);
+ $current = ini_get('memory_limit');
+ $current = get_real_size($current);
+ }
+ $result->setStatus($current >= $minlimit);
+ }
+
+ } else {
+ $current = ini_get_bool($setting_name);
+ /// The name exists. Just check if it's an installed extension
+ if ($current == $setting_value) {
+ $result->setStatus(true);
+ } else {
+ $result->setStatus(false);
+ }
+ }
+ }
+
+ /// Do any actions defined in the XML file.
+ process_environment_result($setting, $result);
+
+ /// Add the result to the array of results
+ $results[] = $result;
+ }
+
+
+ return $results;
+}
+
/**
* This function will do the custom checks.
* @param string $version xml version we are going to use to test this server.
*/
class environment_results {
- var $part; //which are we checking (database, php, php_extension)
+ var $part; //which are we checking (database, php, php_extension, php_extension)
var $status; //true/false
var $error_code; //integer. See constants at the beginning of the file
var $level; //required/optional