From 5e9cd37107a51a4b370bbe6b40ce4177c03c26ff Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 21 Sep 2012 00:13:20 +0200 Subject: [PATCH] Uniformise look of PHP Info page. --- htdocs/admin/system/database.php | 2 +- htdocs/admin/system/dolibarr.php | 224 +++++++++++++++++++++++- htdocs/admin/system/os.php | 2 +- htdocs/admin/system/phpinfo.php | 128 ++++++-------- htdocs/admin/system/web.php | 2 +- htdocs/core/lib/admin.lib.php | 29 +++ htdocs/core/menus/init_menu_auguria.sql | 1 - htdocs/core/menus/standard/eldy.lib.php | 1 - htdocs/langs/fr_FR/mails.lang | 2 +- 9 files changed, 309 insertions(+), 82 deletions(-) diff --git a/htdocs/admin/system/database.php b/htdocs/admin/system/database.php index 33cb8a640a2..555e87374c0 100644 --- a/htdocs/admin/system/database.php +++ b/htdocs/admin/system/database.php @@ -39,7 +39,7 @@ $form=new Form($db); llxHeader(); -print_fiche_titre($langs->trans("DatabaseConfiguration"),'','setup'); +print_fiche_titre($langs->trans("InfoDatabase"),'','setup'); // Database print ''; diff --git a/htdocs/admin/system/dolibarr.php b/htdocs/admin/system/dolibarr.php index 8ff3a0e896b..63e8088e62c 100644 --- a/htdocs/admin/system/dolibarr.php +++ b/htdocs/admin/system/dolibarr.php @@ -42,7 +42,7 @@ $form=new Form($db); llxHeader(); -print_fiche_titre("Dolibarr",'','setup'); +print_fiche_titre($langs->trans("InfoDolibarr"),'','setup'); // Version $var=true; @@ -212,6 +212,228 @@ print '
  => '.$langs->trans("File encodin print '
'; print '
'; + + +// Parameters in conf.php file (when a parameter start with ?, it is shown only if defined) +$configfileparameters=array( +'dolibarr_main_url_root', +'dolibarr_main_url_root_alt', +'dolibarr_main_document_root', +'dolibarr_main_document_root_alt', +'dolibarr_main_data_root', +'separator', +'dolibarr_main_db_host', +'dolibarr_main_db_port', +'dolibarr_main_db_name', +'dolibarr_main_db_type', +'dolibarr_main_db_user', +'dolibarr_main_db_pass', +'dolibarr_main_db_character_set', +'dolibarr_main_db_collation', +'?dolibarr_main_db_prefix', +'separator', +'dolibarr_main_authentication', +'separator', +'?dolibarr_main_auth_ldap_login_attribute', +'?dolibarr_main_auth_ldap_host', +'?dolibarr_main_auth_ldap_port', +'?dolibarr_main_auth_ldap_version', +'?dolibarr_main_auth_ldap_dn', +'?dolibarr_main_auth_ldap_admin_login', +'?dolibarr_main_auth_ldap_admin_pass', +'?dolibarr_main_auth_ldap_debug', +'separator', +'?dolibarr_lib_ADODB_PATH', +'?dolibarr_lib_TCPDF_PATH', +'?dolibarr_lib_FPDI_PATH', +'?dolibarr_lib_NUSOAP_PATH', +'?dolibarr_lib_PHPEXCEL_PATH', +'?dolibarr_lib_GEOIP_PATH', +'?dolibarr_lib_ODTPHP_PATH', +'?dolibarr_lib_ODTPHP_PATHTOPCLZIP', +'?dolibarr_js_CKEDITOR', +'?dolibarr_js_JQUERY', +'?dolibarr_js_JQUERY_UI', +'?dolibarr_js_JQUERY_FLOT', +'?dolibarr_font_DOL_DEFAULT_TTF', +'?dolibarr_font_DOL_DEFAULT_TTF_BOLD', +'separator', +'?dolibarr_mailing_limit_sendbyweb', +'?dolibarr_strict_mode' +); +$configfilelib=array( +// 'separator', +$langs->trans("URLRoot"), +$langs->trans("URLRoot").' (alt)', +$langs->trans("DocumentRootServer"), +$langs->trans("DocumentRootServer").' (alt)', +$langs->trans("DataRootServer"), +'separator', +$langs->trans("DatabaseServer"), +$langs->trans("DatabasePort"), +$langs->trans("DatabaseName"), +$langs->trans("DriverType"), +$langs->trans("DatabaseUser"), +$langs->trans("DatabasePassword"), +$langs->trans("DBStoringCharset"), +$langs->trans("DBSortingCharset"), +$langs->trans("Prefix"), +'separator', +$langs->trans("AuthenticationMode"), +'separator', +'dolibarr_main_auth_ldap_login_attribute', +'dolibarr_main_auth_ldap_host', +'dolibarr_main_auth_ldap_port', +'dolibarr_main_auth_ldap_version', +'dolibarr_main_auth_ldap_dn', +'dolibarr_main_auth_ldap_admin_login', +'dolibarr_main_auth_ldap_admin_pass', +'dolibarr_main_auth_ldap_debug', +'separator', +'dolibarr_lib_ADODB_PATH', +'dolibarr_lib_TCPDF_PATH', +'dolibarr_lib_FPDI_PATH', +'dolibarr_lib_NUSOAP_PATH', +'dolibarr_lib_PHPEXCEL_PATH', +'dolibarr_lib_GEOIP_PATH', +'dolibarr_lib_ODTPHP_PATH', +'dolibarr_lib_ODTPHP_PATHTOPCLZIP', +'dolibarr_js_CKEDITOR', +'dolibarr_js_JQUERY', +'dolibarr_js_JQUERY_UI', +'dolibarr_js_JQUERY_FLOT', +'dolibarr_font_DOL_DEFAULT_TTF', +'dolibarr_font_DOL_DEFAULT_TTF_BOLD', +'separator', +'Limit nb of email sent by page', +'Strict mode is on/off' +); +$var=true; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''."\n"; +$i=0; +foreach($configfileparameters as $key) +{ + $ignore=0; + + if ($key == 'dolibarr_main_url_root_alt' && empty(${ + $key})) $ignore=1; + if ($key == 'dolibarr_main_document_root_alt' && empty(${ + $key})) $ignore=1; + + if (empty($ignore)) + { + $newkey = preg_replace('/^\?/','',$key); + + if (preg_match('/^\?/',$key) && empty(${ + $newkey})) + { + $i++; + continue; // We discard parametes starting with ? + } + + if ($newkey == 'separator' && $lastkeyshown == 'separator') + { + $i++; + continue; + } + + $var=!$var; + print ""; + if ($newkey == 'separator') + { + print ''; + } + else + { + // Label + print "'; + // Key + print ''; + // Value + print ""; + } + print "\n"; + $lastkeyshown=$newkey; + } + $i++; +} +print '
'.$langs->trans("Parameters").' '; +print $langs->trans("ConfigurationFile").' ('.$conffiletoshowshort.')'; +print ''.$langs->trans("Parameter").''.$langs->trans("Value").'
 ".$configfilelib[$i].''.$newkey.'"; + if ($newkey == 'dolibarr_main_db_pass') print preg_replace('/./i','*',${ + $newkey}); + else if ($newkey == 'dolibarr_main_url_root' && preg_match('/__auto__/',${ + $newkey})) print ${ + $newkey}.' => '.constant('DOL_MAIN_URL_ROOT'); + else if ($newkey == 'dolibarr_main_url_root_alt' && preg_match('/__auto__/',${ + $newkey})) print ${ + $newkey}.' => '.constant('DOL_MAIN_URL_ROOT_ALT'); + else print ${ + $newkey}; + if ($newkey == 'dolibarr_main_url_root' && $newkey != DOL_MAIN_URL_ROOT) print ' (currently used by autodetect: '.DOL_MAIN_URL_ROOT.')'; + print "
'; +print '
'; + + + +// Parameters in database +print ''; +print ''; +print ''; +print ''; +if (empty($conf->multicompany->enabled) || !$user->entity) print ''; // If superadmin or multicompany disabled +print "\n"; + +$sql = "SELECT"; +$sql.= " rowid"; +$sql.= ", ".$db->decrypt('name')." as name"; +$sql.= ", ".$db->decrypt('value')." as value"; +$sql.= ", type"; +$sql.= ", note"; +$sql.= ", entity"; +$sql.= " FROM ".MAIN_DB_PREFIX."const"; +if (empty($conf->multicompany->enabled)) +{ + // If no multicompany mode, admins can see global and their constantes + $sql.= " WHERE entity IN (0,".$conf->entity.")"; +} +else +{ + // If multicompany mode, superadmin (user->entity=0) can see everything, admin are limited to their entities. + if ($user->entity) $sql.= " WHERE entity IN (".$user->entity.",".$conf->entity.")"; +} +$sql.= " ORDER BY entity, name ASC"; +$resql = $db->query($sql); +if ($resql) +{ + $num = $db->num_rows($resql); + $i = 0; + $var=True; + + while ($i < $num) + { + $obj = $db->fetch_object($resql); + $var=!$var; + + print ''; + print ''."\n"; + print ''."\n"; + if (empty($conf->multicompany->enabled) || !$user->entity) print ''."\n"; // If superadmin or multicompany disabled + print "\n"; + + $i++; + } +} + +print '
'.$langs->trans("Parameters").' '.$langs->trans("Database").''.$langs->trans("Value").''.$langs->trans("Entity").'
'.$obj->name.''.$obj->value.''.$obj->entity.'
'; + + + llxFooter(); $db->close(); diff --git a/htdocs/admin/system/os.php b/htdocs/admin/system/os.php index be2f6151e64..c6ade1e04a0 100644 --- a/htdocs/admin/system/os.php +++ b/htdocs/admin/system/os.php @@ -35,7 +35,7 @@ if (!$user->admin) llxHeader(); -print_fiche_titre("OS",'','setup'); +print_fiche_titre($langs->trans("InfoOS"),'','setup'); print ''; print ''; diff --git a/htdocs/admin/system/phpinfo.php b/htdocs/admin/system/phpinfo.php index db4630535de..13b7cef0c09 100644 --- a/htdocs/admin/system/phpinfo.php +++ b/htdocs/admin/system/phpinfo.php @@ -1,6 +1,6 @@ - * Copyright (C) 2004-2005 Laurent Destailleur + * Copyright (C) 2004-2012 Laurent Destailleur * Copyright (C) 2005-2012 Regis Houssin * * This program is free software; you can redistribute it and/or modify @@ -23,13 +23,13 @@ */ require '../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; $langs->load("admin"); if (! $user->admin) accessforbidden(); -$what=GETPOST('what','alpha'); /* @@ -38,85 +38,63 @@ $what=GETPOST('what','alpha'); llxHeader(); -/* Style phpinfo - body {background-color: #ffffff; color: #000000;} - body, td, th, h1, h2 {font-family: sans-serif;} - pre {margin: 0px; font-family: monospace;} +$title='InfoPHP'; - a:link {color: #000099; text-decoration: none; background-color: #ffffff;} - a:hover {text-decoration: underline;} - table {border-collapse: collapse;} - .center {text-align: center;} - .center table { margin-left: auto; margin-right: auto; text-align: left;} - .center th { text-align: center !important; } +if (isset($title)) +{ + print_fiche_titre($langs->trans($title), '', 'setup'); +} - td, th { border: 1px solid #000000; font-size: 75%; vertical-align: baseline;} - h1 {font-size: 150%;} - h2 {font-size: 125%;} - .p {text-align: left;} - .e {background-color: #ccccff; font-weight: bold; color: #000000;} - .h {background-color: #9999cc; font-weight: bold; color: #000000;} - .v {background-color: #cccccc; color: #000000;} - .vr {background-color: #cccccc; text-align: right; color: #000000;} - img {float: right; border: 0px;} - hr {width: 600px; background-color: #cccccc; border: 0px; height: 1px; color: #000000;} - */ - -ob_start(); - -if ($what == 'conf') +// Get php_info array +$phparray=phpinfo_array(); +foreach($phparray as $key => $value) { - $title = 'Setup'; - phpinfo(INFO_CONFIGURATION); -} -elseif ($what == 'env') -{ - $title = 'OSEnv'; - phpinfo(INFO_ENVIRONMENT); -} -elseif ($what == 'modules') -{ - $title = 'Modules'; - phpinfo(INFO_MODULES); -} -else -{ - phpinfo(); -} + //print_titre($key); + print '
'.$langs->trans("Parameter").''.$langs->trans("Value").'
'; + print ''; + //print ''; + print ''; + print ''; + print "\n"; -$chaine = ob_get_contents(); -ob_end_clean(); - -// Nettoie la sortie php pour inclusion dans une page deja existante -$chaine = preg_replace('/^/ims', '', $chaine); -$chaine = preg_replace('/<\/div><\/body><\/html>$/im', '', $chaine); -$chaine = preg_replace('/table(.*)important; \}/i','',$chaine); -$chaine = str_replace('
', '', $chaine); -$chaine = str_replace('cellpadding="3" ', 'cellpadding="1" cellspacing="1" ', $chaine); -$chaine = str_replace('class="h"','class="liste_titre"', $chaine); -$chaine = str_replace(''; + print ''; + $valtoshow=$keyvalue; + if ($keyparam == 'X-ChromePhp-Data') $valtoshow=dol_trunc($keyvalue,80); + print ''; + print ''; + } + else + { + $var=!$var; + print ''; + print ''; + $i=0; + foreach($keyvalue as $keyparam2 => $keyvalue2) + { + print ''; + } + print ''; + } + } + print '
'.$langs->trans("Parameter").''.$key.''.$langs->trans("Value").'
', '', $chaine); -$chaine = str_replace('th>', 'td>', $chaine); -// Titles -$chaine = preg_replace('/]*)>/i','
',$chaine); -$chaine = str_replace('

', '
', $chaine); -$chaine = str_replace('

', '

', $chaine); -$chaine = str_replace('', '', $chaine); - -$chaine = str_replace('
', '', $chaine); -$chaine = str_replace('', '', $chaine); -$chaine = str_replace('
Configuration

', '', $chaine); -// Add LF -$chaine = preg_replace('/(pcntl_[a-z]+),/','$1, ',$chaine); - -if (isset($title)) -{ - print_fiche_titre($langs->trans($title), '', 'setup'); - print '
'; + $var=true; + //var_dump($value); + foreach($value as $keyparam => $keyvalue) + { + if (! is_array($keyvalue)) + { + $var=!$var; + print '
'.$keyparam.''.$valtoshow.'
'.$keyparam.''; + $valtoshow=$keyvalue2; + if ($keyparam == 'disable_functions') $valtoshow=join(', ',explode(',',trim($valtoshow))); + //print $keyparam2.' = '; + print $valtoshow; + $i++; + print '

'; } - -print "$chaine\n"; // Ne pas centrer la reponse php car certains tableau du bas tres large rendent ceux du haut completement a droite -print "
\n"; + llxFooter(); + $db->close(); ?> \ No newline at end of file diff --git a/htdocs/admin/system/web.php b/htdocs/admin/system/web.php index fe8ee87a8e4..640e85624b8 100644 --- a/htdocs/admin/system/web.php +++ b/htdocs/admin/system/web.php @@ -42,7 +42,7 @@ if (!$user->admin) accessforbidden(); llxHeader(); -print_fiche_titre($langs->trans("WebServer"),'','setup'); +print_fiche_titre($langs->trans("InfoWebServer"),'','setup'); print ''; print "\n"; diff --git a/htdocs/core/lib/admin.lib.php b/htdocs/core/lib/admin.lib.php index 973809c9e8a..335317421a2 100644 --- a/htdocs/core/lib/admin.lib.php +++ b/htdocs/core/lib/admin.lib.php @@ -1202,4 +1202,33 @@ function delDocumentModel($name, $type) } } + +/** + * Return the php_info into an array + * + * @return array Array with PHP infos + */ +function phpinfo_array() +{ + ob_start(); + phpinfo(); + $info_arr = array(); + $info_lines = explode("\n", strip_tags(ob_get_clean(), "]+>([^<]*)]+>([^<]*)~", $line, $val)) + { + $info_arr[trim($cat)][trim($val[1])] = $val[2]; + } + elseif(preg_match("~]+>([^<]*)]+>([^<]*)]+>([^<]*)~", $line, $val)) + { + $info_arr[trim($cat)][trim($val[1])] = array("local" => $val[2], "master" => $val[3]); + } + } + return $info_arr; +} + ?> diff --git a/htdocs/core/menus/init_menu_auguria.sql b/htdocs/core/menus/init_menu_auguria.sql index cfb9fa158d1..273abe91b7c 100644 --- a/htdocs/core/menus/init_menu_auguria.sql +++ b/htdocs/core/menus/init_menu_auguria.sql @@ -36,7 +36,6 @@ insert into llx_menu (enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk -- Home - Sytem info insert into llx_menu (enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('$user->admin', __HANDLER__, 'left', 300__+MAX_llx_menu__, 'home', 'admintools', 1__+MAX_llx_menu__, '/admin/tools/index.php?leftmenu=admintools', 'SystemTools', 0, 'admin', '', '', 2, 2, __ENTITY__); insert into llx_menu (enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('$leftmenu==\'admintools\'', __HANDLER__, 'left', 201__+MAX_llx_menu__, 'home', '', 300__+MAX_llx_menu__, '/admin/system/dolibarr.php?leftmenu=admintools', 'InfoDolibarr', 1, 'admin', '', '', 2, 0, __ENTITY__); -insert into llx_menu (enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('$leftmenu==\'admintools\'', __HANDLER__, 'left', 202__+MAX_llx_menu__, 'home', '', 201__+MAX_llx_menu__, '/admin/system/constall.php?leftmenu=admintools', 'AllParameters', 2, 'admin', '', '', 2, 1, __ENTITY__); insert into llx_menu (enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('$leftmenu==\'admintools\'', __HANDLER__, 'left', 208__+MAX_llx_menu__, 'home', '', 201__+MAX_llx_menu__, '/admin/system/modules.php?leftmenu=admintools', 'Modules', 2, 'admin', '', '', 2, 2, __ENTITY__); insert into llx_menu (enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('$leftmenu==\'admintools\'', __HANDLER__, 'left', 207__+MAX_llx_menu__, 'home', '', 201__+MAX_llx_menu__, '/admin/triggers.php?leftmenu=admintools', 'Triggers', 2, 'admin', '', '', 2, 3, __ENTITY__); insert into llx_menu (enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('$leftmenu==\'admintools\'', __HANDLER__, 'left', 204__+MAX_llx_menu__, 'home', '', 300__+MAX_llx_menu__, '/admin/system/os.php?leftmenu=admintools', 'InfoOS', 1, 'admin', '', '', 2, 1, __ENTITY__); diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 63ca0494617..ed1e6159e3b 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -690,7 +690,6 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after) if (preg_match('/^admintools/',$leftmenu)) { $newmenu->add('/admin/system/dolibarr.php?mainmenu=home&leftmenu=admintools_info', $langs->trans('InfoDolibarr'), 1); - if ($leftmenu=='admintools_info') $newmenu->add('/admin/system/constall.php?mainmenu=home&leftmenu=admintools_info', $langs->trans('AllParameters'), 2); if ($leftmenu=='admintools_info') $newmenu->add('/admin/system/modules.php?mainmenu=home&leftmenu=admintools_info', $langs->trans('Modules'), 2); if ($leftmenu=='admintools_info') $newmenu->add('/admin/triggers.php?mainmenu=home&leftmenu=admintools_info', $langs->trans('Triggers'), 2); $newmenu->add('/admin/system/os.php?mainmenu=home&leftmenu=admintools', $langs->trans('InfoOS'), 1); diff --git a/htdocs/langs/fr_FR/mails.lang b/htdocs/langs/fr_FR/mails.lang index 078bded11d2..78c70886cd0 100644 --- a/htdocs/langs/fr_FR/mails.lang +++ b/htdocs/langs/fr_FR/mails.lang @@ -105,7 +105,7 @@ SendMailing=Envoi emailing SendMail=Envoi mail SentBy=Envoyé par MailingNeedCommand=Pour des raisons de sécurité, il est recommandé de faire les envois d'un mailing de masse depuis une ligne de commande. Demandez à votre administrateur de lancer la commande suivante pour envoyer le mailing à tous les destinataires : -MailingNeedCommand2=Vous pouvez toutefois quand même les envoyer en ligne en ajoutant le paramètre MAILING_LIMIT_SENDBYWEB avec la valeur du nombre max de mails envoyés par session d'envoi. Pour cela, aller dans Accueil - Configuration - Divers. +MailingNeedCommand2=Vous pouvez toutefois quand même les envoyer par l'interface écrans en ajoutant le paramètre MAILING_LIMIT_SENDBYWEB avec la valeur du nombre max de mails envoyés par session d'envoi. Pour cela, aller dans Accueil - Configuration - Divers. ConfirmSendingEmailing=Confirmez-vous l'envoi de l'emailing depuis le mode web ? LimitSendingEmailing=L'envoi d'un emailing depuis les écrans est limité pour raisons de sécurité et de timeout à %s destinataires par session d'envoi. TargetsReset=Vider liste
".$langs->trans("Parameter")."".$langs->trans("Value")."

")); // end of ob_start() + $cat = "General"; + foreach($info_lines as $line) + { + // new cat? + preg_match("~

(.*)

~", $line, $title) ? $cat = $title[1] : null; + if(preg_match("~