X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=admin%2Fsystem_diagnostics.php;h=4b1e555a62bab73bf1f46b85b31b51c90e8b705e;hb=df660a601cabb0afe7f3246884f16207b9a0c314;hp=060a2ec8c2537179051dba736cb3d8adf523292d;hpb=d8863db36cebcc809e1d9000c1f4c81dc4e460d1;p=fa-stable.git diff --git a/admin/system_diagnostics.php b/admin/system_diagnostics.php index 060a2ec8..4b1e555a 100644 --- a/admin/system_diagnostics.php +++ b/admin/system_diagnostics.php @@ -17,335 +17,10 @@ include($path_to_root . "/includes/session.inc"); page(_($help_context = "System Diagnostics")); include($path_to_root . "/includes/ui.inc"); - -// Type of requirement for positive test result -$test_level = array( - 0 => _('Info'), - 1 => _('Optional'), - 2 => _('Recomended'), - 3 => _('Required ') -); - -$system_tests = array('tst_mysql', 'tst_php', 'tst_server', 'tst_system', 'tst_browser', - 'tst_gettext', 'tst_debug', 'tst_logging', - 'tst_dbversion', 'tst_subdirs', 'tst_langs', 'tst_tmpdir', 'tst_sessionpath', - 'tst_dbconfig', 'tst_config', 'tst_extconfig' - ); - -function tst_mysql() -{ - $test['descr'] = _('MySQL version'). ' >=4.1'; - $test['type'] = 3; - $test['test'] = mysql_get_server_info(); - $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.3'; - $test['type'] = 3; - $test['test'] = phpversion(); - $test['result'] = $test['test']>='4.3.3'; - $test['comments'] = _('Upgrade PHP to version at least 4.3.3'); - - return $test; -} - -function tst_system() -{ - $test['descr'] = _('Server system'); - $test['type'] = 0; - $test['test'] = PHP_OS; - $test['result'] = true; - - return $test; -} - -function tst_sessionpath() -{ - $test['descr'] = _('Session save path'); - $test['type'] = 0; - $test['test'] = session_save_path(); - $test['result'] = true; - - return $test; -} - -function tst_browser() -{ - $test['descr'] = _('Browser type'); - $test['type'] = 0; - $test['test'] = $_SERVER['HTTP_USER_AGENT']; - $test['result'] = true; - $test['comments'] = _('Any browser is supported'); - - return $test; -} - -function tst_server() -{ - $test['descr'] = _('Http server type'); - $test['test'] = $_SERVER['SERVER_SOFTWARE']; - $test['type'] = 0; - $test['result'] = true; - $test['comments'] = _('Any server is supported'); - - return $test; -} - -function tst_gettext() -{ - $test['descr'] = _('Native gettext'); - $test['test'] = function_exists('gettext') ? _('Yes'): _('No'); - $test['type'] = 1; - $test['result'] = true; - $test['comments'] = _('In case of no getext support, php emulation is used'); - - return $test; -} - -function tst_debug() -{ - global $go_debug; - $test['descr'] = _('Debugging mode'); - $test['type'] = 0; - $test['test'] = $go_debug ? _("Yes") : _("No"); - $test['result'] = $go_debug != 0; - $test['comments'] = _('To switch debugging on set $go_debug>0 in config.php file'); - - return $test; -} - -function tst_logging() -{ - global $error_logfile; - - $test['descr'] = _('Error logging'); - $test['type'] = 2; - // if error lgging is on, but log file does not exists try write - if ($error_logfile && !is_file($error_logfile)) - { - @fclose(@fopen($error_logfile, 'w')); - } - $test['result'] = @$error_logfile != '' && is_writable($error_logfile); - $test['test'] = @$error_logfile == '' ? _("Disabled") : $error_logfile; - - if (@$error_logfile == '') - $test['comments'] = _('To switch error logging set $error_logging in config.php file'); - else - if (!is_writable($error_logfile)) - $test['comments'] = _('Log file is not writeable'); - - return $test; -} -// -// Installed FA database structure version -// -function tst_dbversion() -{ - global $core_version; - $test['descr'] = _('Current database version'); - $test['type'] = 3; - $test['test'] = get_company_pref('version_id'); - $test['result'] = $test['test'] == $core_version; - $test['comments'] = _('Database structure seems to be not upgraded to current version') - ." ($core_version)"; - - return $test; -} - - -function tst_subdirs() -{ - global $db_connections; - - $comp_subdirs = array('images', 'pdf_files', 'backup','js_cache'); - - $test['descr'] = _('Company subdirectories consistency'); - $test['type'] = 3; - $test['test'] = array(company_path().'/*'); - foreach($comp_subdirs as $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 = company_path($n); - if (!is_dir($path) || !is_writable($path) ) { - $test['result'] = false; - $test['comments'][] = sprintf(_("'%s' is not writeable"), $path); - continue; - }; - foreach($comp_subdirs as $sub) { - $spath = $path.'/'.$sub; - 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"); - } - } - } - } - } - return $test; -} - -function tst_tmpdir() -{ - global $path_to_root; - - $test['descr'] = _('Temporary directory'); - $test['type'] = 3; - $test['test'] = $path_to_root.'/tmp'; - $test['result'] = is_dir($test['test']) && is_writable($test['test']); - $test['comments'][] = sprintf(_("'%s' is not writeable"), $test['test']); - return $test; -} - -function tst_langs() -{ - global $installed_languages, $path_to_root; - - $test['descr'] = _('Language configuration consistency'); - $test['type'] = 3; - $test['result'] = true; - $test['comments'] = array(); - - $old = setlocale(LC_MESSAGES, '0'); - - $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 (!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; - - return $test; -} - -function tst_config() -{ - global $path_to_root; - - $test['descr'] = _('Main config file'); - $test['type'] = 2; - $test['test'] = $path_to_root.'/config.php'; - $test['result'] = is_file($test['test']) && !is_writable($test['test']); - $test['comments'][] = sprintf(_("'%s' file should be read-only"), $test['test']); - return $test; -} - -function tst_dbconfig() -{ - global $path_to_root; - - $test['descr'] = _('Database auth file'); - $test['type'] = 2; - $test['test'] = $path_to_root.'/config_db.php'; - $test['result'] = is_file($test['test']) && !is_writable($test['test']); - $test['comments'][] = sprintf(_("'%s' file should be read-only if you do not plan to add or change companies"), $test['test']); - - return $test; -} - -function tst_extconfig() -{ - global $path_to_root, $db_connections; - - $test['descr'] = _('Extensions system'); - $test['type'] = 3; - $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'; - $test['comments'][] = _("Extensions configuration files and directories should be writeable"); - - foreach ($db_connections as $n => $comp) { - $path = company_path($n); - if (!is_dir($path)) continue; - - $path .= "/installed_extensions.php"; - if (!is_file($path) || !is_writable($path) ) { - $test['result'] = false; - $test['comments'][] = sprintf(_("'%s' is not writeable"), $path); - 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); - - return $test; -} +include($path_to_root . "/includes/system_tests.inc"); //------------------------------------------------------------------------------------------------- -start_table(TABLESTYLE, "width=80%"); -$th = array(_("Test"), _('Test type'), _("Value"), _("Comments")); -table_header($th); - -$k = 0; //row colour counter -foreach ($system_tests as $test) -{ - alt_table_row_color($k); - $result = $test(); - if (!$result) continue; - label_cell($result['descr']); - label_cell($test_level[$result['type']]); - - $res = is_array(@$result['test']) ? implode('
', $result['test']) - : $result['test']; - label_cell($res); - - $comm = is_array(@$result['comments']) ? implode('
', $result['comments']) - : @$result['comments']; - $color = ($result['result'] ? 'green': - ($result['type']==3 ? 'red' : - ($result['type']==2 ? 'orange' : 'green'))); - label_cell("". - ($result['result'] ? _('Ok') : ''.$comm.'').''); - end_row(); -} +display_system_tests(); -end_table(); end_page(); -?>