X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=admin%2Fsystem_diagnostics.php;h=665b6f02c701c5694bb90743bb7e44768da77a18;hb=39150665d5955716247c6c6e06adbcc2cad037a9;hp=3b2bfbb834ac89baa2ca3e91e5b5f48c056817ab;hpb=6785915cf06bc5a4c4869b649a5e7a6d46bdac04;p=fa-stable.git diff --git a/admin/system_diagnostics.php b/admin/system_diagnostics.php index 3b2bfbb8..665b6f02 100644 --- a/admin/system_diagnostics.php +++ b/admin/system_diagnostics.php @@ -34,22 +34,22 @@ $system_tests = array('tst_mysql', 'tst_php', 'tst_server', 'tst_system', 'tst_b function tst_mysql() { - $test['descr'] = _('MySQL version'). ' >3.23.58'; + $test['descr'] = _('MySQL version'). ' >=4.1'; $test['type'] = 3; $test['test'] = mysql_get_server_info(); - $test['result'] = $test['test']>'3.23.58'; - $test['comments'] = _('Upgrade MySQL server to version at least 3.23.58'); + $test['result'] = $test['test']>='4.1'; + $test['comments'] = _('Upgrade MySQL server to version at least 4.1'); return $test; } function tst_php() { - $test['descr'] = _('PHP version').' >4.3.2'; + $test['descr'] = _('PHP version').' >=4.3.3'; $test['type'] = 3; $test['test'] = phpversion(); - $test['result'] = $test['test']>'4.3.2'; - $test['comments'] = _('Upgrade PHP to version at least 4.3.2'); + $test['result'] = $test['test']>='4.3.3'; + $test['comments'] = _('Upgrade PHP to version at least 4.3.3'); return $test; } @@ -114,7 +114,7 @@ function tst_debug() $test['type'] = 0; $test['test'] = $go_debug ? _("Yes") : _("No"); $test['result'] = $go_debug != 0; - $test['comments'] = _('To switch debugging on set $go_debug=1 in config.php file'); + $test['comments'] = _('To switch debugging on set $go_debug>0 in config.php file'); return $test; } @@ -160,25 +160,26 @@ function tst_dbversion() function tst_subdirs() { - global $db_connections, $comp_path; + global $db_connections; $comp_subdirs = array('images', 'pdf_files', 'backup','js_cache'); $test['descr'] = _('Company subdirectories consistency'); $test['type'] = 3; - $test['test'] = array($comp_path.'/*'); + $test['test'] = array(company_path().'/*'); foreach($comp_subdirs as $sub) { - $test['test'][] = $comp_path.'/*/'.$sub; + $test['test'][] = company_path().'/*/'.$sub; } $test['result'] = true; - + + $comp_path = company_path(); if (!is_dir($comp_path) || !is_writable($comp_path) ) { $test['result'] = false; $test['comments'][] = sprintf(_("'%s' is not writeable"), $comp_path); return $test; }; foreach ($db_connections as $n => $comp) { - $path = "$comp_path/$n"; + $path = company_path($n); if (!is_dir($path) || !is_writable($path) ) { $test['result'] = false; $test['comments'][] = sprintf(_("'%s' is not writeable"), $path); @@ -189,6 +190,16 @@ function tst_subdirs() if (!is_dir($spath) || !is_writable($spath) ) { $test['result'] = false; $test['comments'][] = sprintf(_("'%s' is not writeable"), $spath); + } else { + $dir = opendir($spath); + while (false !== ($fname = readdir($dir))) { + // check only *.js files. Manually installed package can contain other + // non-writable files which are non-crucial for normal operations + if (preg_match('/.*(\.js)/', $fname) && !is_writable("$spath/$fname")) { + $test['result'] = false; + $test['comments'][] = sprintf(_("'%s' is not writeable"), "$spath/$fname"); + } + } } } } @@ -216,29 +227,41 @@ function tst_langs() $test['result'] = true; $test['comments'] = array(); - $old = setlocale(LC_MESSAGES, '0'); + $fname = $path_to_root.'/lang'; + $test['test'][] = $fname; + if (!(is_dir($fname) && is_writable($fname))) { + $test['result'] = false; + $test['comments'][] = _("Languages folder should be writeable."); + } + $fname = $path_to_root.'/lang/installed_languages.inc'; + $test['test'][] = $fname; + if (!(is_file($fname) && is_writable($fname))) { + $test['result'] = false; + $test['comments'][] = _("Languages configuration file should be writeable."); + } + $langs = array(); foreach ($installed_languages as $lang) { $langs[] = $lang['code']; if ($lang['code'] == 'en_GB') continue; // native FA language - + $file = $path_to_root.'/lang/'.$lang['code'].'/LC_MESSAGES/'.$lang['code']; - $file .= function_exists('gettext') ? '.mo' : '.po'; + if (@$lang['version']) + $file .= '-'.$lang['version']; + $file .= function_exists('gettext') ? '.mo' : '.po'; if (!is_file($file)) { $test['result'] = false; $test['comments'][] = sprintf( _('Missing %s translation file.'), $file); } if (!$_SESSION['get_text']->check_support($lang['code'], $lang['encoding'])) - { + { $test['result'] = false; $test['comments'][] = sprintf(_('Missing system locale: %s'), $lang['code'].".".$lang['encoding']); - }; + }; } - - setlocale(LC_MESSAGES, $old); $test['test'] = $langs; @@ -272,17 +295,17 @@ function tst_dbconfig() function tst_extconfig() { - global $path_to_root, $db_connections, $comp_path; + global $path_to_root, $db_connections; - $test['descr'] = _('Extensions configuration files'); + $test['descr'] = _('Extensions system'); $test['type'] = 3; - $test['test'] = $path_to_root.'/installed_extensions.php'; - $test['result'] = is_file($test['test']) && is_writable($test['test']); - $test['test'] . ','.$comp_path.'/*/installed_extensions.php'; - $test['comments'][] = sprintf(_("'%s' file should be writeable"), $test['test']); + $fname = $path_to_root.'/installed_extensions.php'; + $test['test'][] = $fname; + $test['result'] = is_file($fname) && is_writable($fname); + $test['test'][] = company_path().'/*/installed_extensions.php'; foreach ($db_connections as $n => $comp) { - $path = "$comp_path/$n"; + $path = company_path($n); if (!is_dir($path)) continue; $path .= "/installed_extensions.php"; @@ -292,11 +315,50 @@ function tst_extconfig() continue; }; } + $fname = $path_to_root.'/modules'; + $test['test'][] = $fname; + $test['result'] &= is_dir($fname) && is_writable($fname); + $fname = $path_to_root.'/modules/_cache'; + + $test['test'][] = $fname; + $test['result'] &= is_dir($fname) && is_writable($fname); + $fname = $path_to_root.'/themes'; + + $test['test'][] = $fname; + $test['result'] &= is_dir($fname) && is_writable($fname); + if(!$test['result']) + $test['comments'][] = _("Extensions configuration files and directories should be writeable"); + + $themedir = opendir($fname); + while (false !== ($fname = readdir($themedir))) + { + if ($fname!='.' && $fname!='..' && $fname!='CVS' && is_dir($path_to_root.'/themes/'.$fname) + && !in_array($fname, array('aqua', 'cool', 'default'))) + { + $test['test'][] = $fname; + $test['result'] = is_writable($path_to_root.'/themes/'.$fname); + if (!$test['result']) { + $test['comments'][] = + sprintf(_("Non-standard theme directory '%s' is not writable"), $fname); + break; + } + } + } + closedir($themedir); + + $test['test'][] = 'OpenSSL PHP extension'; + if (!extension_loaded('openssl')) { + $test['result'] = false; + $test['comments'][] = _("OpenSSL PHP extension have to be enabled to use extension repository system."); + } elseif (!function_exists('openssl_verify')) { + $test['result'] = false; + $test['comments'][] = _("OpenSSL have to be available on your server to use extension repository system."); + } return $test; } //------------------------------------------------------------------------------------------------- -start_table("$table_style width=80%"); +start_table(TABLESTYLE, "width=80%"); $th = array(_("Test"), _('Test type'), _("Value"), _("Comments")); table_header($th); @@ -315,7 +377,11 @@ foreach ($system_tests as $test) $comm = is_array(@$result['comments']) ? implode('
', $result['comments']) : @$result['comments']; - label_cell($result['result'] ? _('Ok') : ''.$comm.''); + $color = ($result['result'] ? 'green': + ($result['type']==3 ? 'red' : + ($result['type']==2 ? 'orange' : 'green'))); + label_cell("". + ($result['result'] ? _('Ok') : ''.$comm.'').''); end_row(); }