diff options
Diffstat (limited to 'mod/diagnostics')
| -rw-r--r-- | mod/diagnostics/actions/download.php | 36 | ||||
| -rw-r--r-- | mod/diagnostics/index.php | 28 | ||||
| -rw-r--r-- | mod/diagnostics/languages/en.php | 51 | ||||
| -rw-r--r-- | mod/diagnostics/manifest.xml | 24 | ||||
| -rw-r--r-- | mod/diagnostics/start.php | 324 | ||||
| -rw-r--r-- | mod/diagnostics/views/default/admin/administer_utilities/diagnostics.php | 17 | ||||
| -rw-r--r-- | mod/diagnostics/views/default/diagnostics/forms/download.php | 15 |
7 files changed, 203 insertions, 292 deletions
diff --git a/mod/diagnostics/actions/download.php b/mod/diagnostics/actions/download.php index 90266b793..97775c92e 100644 --- a/mod/diagnostics/actions/download.php +++ b/mod/diagnostics/actions/download.php @@ -1,24 +1,18 @@ <?php - /** - * Elgg diagnostics - * - * @package ElggDiagnostics - * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 - * @author Curverider Ltd - * @copyright Curverider Ltd 2008 - * @link http://elgg.com/ - */ +/** + * Elgg diagnostics + * + * @package ElggDiagnostics + */ - admin_gatekeeper(); - - $output = sprintf(elgg_echo('diagnostics:header'), date('r'), $_SESSION['user']->name); - $output = trigger_plugin_hook('diagnostics:report', 'all', null, $output); - - header("Cache-Control: public"); - header("Content-Description: File Transfer"); - header('Content-disposition: attachment; filename=elggdiagnostic.txt'); - header("Content-Type: text/plain"); - header('Content-Length: '. strlen($output)); +$output = elgg_echo('diagnostics:header', array(date('r'), elgg_get_logged_in_user_entity()->name)); +$output = elgg_trigger_plugin_hook('diagnostics:report', 'system', null, $output); - echo $output; -?>
\ No newline at end of file +header("Cache-Control: public"); +header("Content-Description: File Transfer"); +header('Content-disposition: attachment; filename=elggdiagnostic.txt'); +header("Content-Type: text/plain"); +header('Content-Length: ' . strlen($output)); + +echo $output; +exit; diff --git a/mod/diagnostics/index.php b/mod/diagnostics/index.php deleted file mode 100644 index 8bf2b6f25..000000000 --- a/mod/diagnostics/index.php +++ /dev/null @@ -1,28 +0,0 @@ -<?php - /** - * Elgg diagnostics - * - * @package ElggDiagnostics - * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 - * @author Curverider Ltd - * @copyright Curverider Ltd 2008 - * @link http://elgg.com/ - */ - - require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); - - admin_gatekeeper(); - set_context('admin'); - // Set admin user for user block - set_page_owner($_SESSION['guid']); - - $title = elgg_view_title(elgg_echo('diagnostics')); - - $body .= elgg_echo('diagnostics:description'); - - $body .= elgg_view('diagnostics/forms/download'); - - - - page_draw(elgg_echo('diagnostics'),elgg_view_layout("two_column_left_sidebar", '', $title . $body)); -?>
\ No newline at end of file diff --git a/mod/diagnostics/languages/en.php b/mod/diagnostics/languages/en.php index 15c8b6750..54859941d 100644 --- a/mod/diagnostics/languages/en.php +++ b/mod/diagnostics/languages/en.php @@ -1,54 +1,45 @@ <?php - /** - * Elgg diagnostics language pack. - * - * @package ElggDiagnostics - * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 - * @author Curverider Ltd - * @copyright Curverider Ltd 2008 - * @link http://elgg.com/ - */ +/** + * Elgg diagnostics language pack. + * + * @package ElggDiagnostics + */ - $english = array( - - 'diagnostics' => 'System diagnostics', - - 'diagnostics:description' => 'The following diagnostic report is useful for diagnosing any problems with Elgg, and should be attached to any bug reports you file.', - - 'diagnostics:download' => 'Download .txt', - - - 'diagnostics:header' => '======================================================================== +$english = array( + 'admin:administer_utilities:diagnostics' => 'System Diagnostics', + 'diagnostics' => 'System diagnostics', + 'diagnostics:report' => 'Diagnostics Report', + 'diagnostics:description' => 'The following diagnostic report can be useful for diagnosing problems with Elgg. The developers of Elgg may request that you attach it to a bug report.', + 'diagnostics:download' => 'Download', + 'diagnostics:header' => '======================================================================== Elgg Diagnostic Report Generated %s by %s ======================================================================== - + ', - 'diagnostics:report:basic' => ' + 'diagnostics:report:basic' => ' Elgg Release %s, version %s ------------------------------------------------------------------------', - 'diagnostics:report:php' => ' + 'diagnostics:report:php' => ' PHP info: %s ------------------------------------------------------------------------', - 'diagnostics:report:plugins' => ' + 'diagnostics:report:plugins' => ' Installed plugins and details: %s ------------------------------------------------------------------------', - 'diagnostics:report:md5' => ' + 'diagnostics:report:md5' => ' Installed files and checksums: %s ------------------------------------------------------------------------', - 'diagnostics:report:globals' => ' + 'diagnostics:report:globals' => ' Global variables: %s ------------------------------------------------------------------------', - - ); - - add_translation("en",$english); -?>
\ No newline at end of file +); + +add_translation("en", $english); diff --git a/mod/diagnostics/manifest.xml b/mod/diagnostics/manifest.xml index 3d3a45163..21e847d22 100644 --- a/mod/diagnostics/manifest.xml +++ b/mod/diagnostics/manifest.xml @@ -1,9 +1,17 @@ <?xml version="1.0" encoding="UTF-8"?> -<plugin_manifest> - <field key="author" value="Curverider Ltd" /> - <field key="version" value="1.0" /> - <field key="description" value="Elgg diagnostics tool" /> - <field key="website" value="http://www.elgg.org/" /> - <field key="copyright" value="(C) Curverider 2008" /> - <field key="licence" value="GNU Public License version 2" /> -</plugin_manifest>
\ No newline at end of file +<plugin_manifest xmlns="http://www.elgg.org/plugin_manifest/1.8"> + <name>Diagnostics</name> + <author>Core developers</author> + <version>1.8</version> + <category>bundled</category> + <category>development</category> + <category>admin</category> + <description>Elgg diagnostics tool</description> + <website>http://www.elgg.org/</website> + <copyright>See COPYRIGHT.txt</copyright> + <license>GNU General Public License version 2</license> + <requires> + <type>elgg_release</type> + <version>1.8</version> + </requires> +</plugin_manifest> diff --git a/mod/diagnostics/start.php b/mod/diagnostics/start.php index e2592e263..55842800a 100644 --- a/mod/diagnostics/start.php +++ b/mod/diagnostics/start.php @@ -1,196 +1,140 @@ <?php - /** - * Elgg diagnostics - * - * @package ElggDiagnostics - * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 - * @author Curverider Ltd - * @copyright Curverider Ltd 2008 - * @link http://elgg.com/ - */ - - /** - * Initialise the diagnostics tool - * - */ - function diagnostics_init() - { - global $CONFIG; - - // Register a page handler, so we can have nice URLs - register_page_handler('diagnostics','diagnostics_page_handler'); - - // Register some actions - register_action("diagnostics/download",false, $CONFIG->pluginspath . "diagnostics/actions/download.php"); - } - - /** - * Adding the diagnostics to the admin menu - * - */ - function diagnostics_pagesetup() - { - if (get_context() == 'admin' && isadminloggedin()) { - global $CONFIG; - add_submenu_item(elgg_echo('diagnostics'), $CONFIG->wwwroot . 'pg/diagnostics/'); - } - } - - /** - * Diagnostics page. - * - * @param array $page Array of page elements, forwarded by the page handling mechanism - */ - function diagnostics_page_handler($page) - { - global $CONFIG; - - // only interested in one page for now - include($CONFIG->pluginspath . "diagnostics/index.php"); - } - - /** - * Generate a basic report. - * - * @param unknown_type $hook - * @param unknown_type $entity_type - * @param unknown_type $returnvalue - * @param unknown_type $params - */ - function diagnostics_basic_hook($hook, $entity_type, $returnvalue, $params) - { - global $CONFIG; - - // Get version information - $version = get_version(); - $release = get_version(true); - - $returnvalue .= sprintf(elgg_echo('diagnostics:report:basic'), $release, $version); - - return $returnvalue; - } - - /** - * Get some information about the plugins installed on the system. - * - * @param unknown_type $hook - * @param unknown_type $entity_type - * @param unknown_type $returnvalue - * @param unknown_type $params - */ - function diagnostics_plugins_hook($hook, $entity_type, $returnvalue, $params) - { - $returnvalue .= sprintf(elgg_echo('diagnostics:report:plugins'), print_r(get_installed_plugins(), true)); - - return $returnvalue; - } - - /** - * Recursively list through a directory tree producing a hash of all installed files - * - * @param starting dir $dir - * @param buffer $buffer - */ - function diagnostics_md5_dir($dir) - { - //if (is_file(trim($dir, "/"))) { - $extensions_allowed = array('.php', '.gif', '.png', '.jpg'); - - $buffer = ""; - - if (in_array(strrchr(trim($dir, "/"), '.'), $extensions_allowed)) - { - //$dir = trim($dir, "/"); - $buffer .= md5_file($dir). " " . trim($dir, "/") . "\n"; - } else if ($handle = opendir($dir)) { - while ($file = readdir($handle)) { - - if (($file != '.') && ($file != '..')) { - $buffer .= diagnostics_md5_dir($dir . $file. "/", $buffer); - } +/** + * Elgg diagnostics + * + * @package ElggDiagnostics + */ + +elgg_register_event_handler('init', 'system', 'diagnostics_init'); + +/** + * Initialise the diagnostics tool + */ +function diagnostics_init() { + + // Add admin menu item + elgg_register_admin_menu_item('administer', 'diagnostics', 'administer_utilities'); + + // Register some actions + $file = elgg_get_plugins_path() . "diagnostics/actions/download.php"; + elgg_register_action("diagnostics/download", $file, 'admin'); +} + +/** + * Generate a basic report. + * + * @return string + */ +function diagnostics_basic_hook($hook, $entity_type, $returnvalue, $params) { + + // Get version information + $version = get_version(); + $release = get_version(true); + + $returnvalue .= elgg_echo('diagnostics:report:basic', array($release, $version)); + + return $returnvalue; +} + +/** + * Get some information about the plugins installed on the system. + * + * @return tring + */ +function diagnostics_plugins_hook($hook, $entity_type, $returnvalue, $params) { + // @todo this is a really bad idea because of the new plugin system + //$returnvalue .= elgg_echo('diagnostics:report:plugins', array(print_r(elgg_get_plugins(), true))); + + return $returnvalue; +} + +/** + * Recursively list through a directory tree producing a hash of all installed files + * + * @param starting dir $dir + * @param buffer $buffer + */ +function diagnostics_md5_dir($dir) { + $extensions_allowed = array('.php', '.js', '.css'); + + $buffer = ""; + + if (in_array(strrchr(trim($dir, "/"), '.'), $extensions_allowed)) { + $dir = rtrim($dir, "/"); + $buffer .= md5_file($dir). " " . $dir . "\n"; + } else if (is_dir($dir)) { + $handle = opendir($dir); + while ($file = readdir($handle)) { + if (($file != '.') && ($file != '..')) { + $buffer .= diagnostics_md5_dir($dir . $file. "/", $buffer); } } - - return $buffer; - } - - /** - * Get some information about the files installed on a system. - * - * @param unknown_type $hook - * @param unknown_type $entity_type - * @param unknown_type $returnvalue - * @param unknown_type $params - */ - function diagnostics_sigs_hook($hook, $entity_type, $returnvalue, $params) - { - global $CONFIG; - - $returnvalue .= sprintf(elgg_echo('diagnostics:report:md5'), diagnostics_md5_dir($CONFIG->path)); - - return $returnvalue; + + closedir($handle); } - - /** - * Get some information about the php install - * - * @param unknown_type $hook - * @param unknown_type $entity_type - * @param unknown_type $returnvalue - * @param unknown_type $params - */ - function diagnostics_phpinfo_hook($hook, $entity_type, $returnvalue, $params) - { - global $CONFIG; - - ob_start(); - phpinfo(); - $phpinfo = array('phpinfo' => array()); - - if(preg_match_all('#(?:<h2>(?:<a name=".*?">)?(.*?)(?:</a>)?</h2>)|(?:<tr(?: class=".*?")?><t[hd](?: class=".*?")?>(.*?)\s*</t[hd]>(?:<t[hd](?: class=".*?")?>(.*?)\s*</t[hd]>(?:<t[hd](?: class=".*?")?>(.*?)\s*</t[hd]>)?)?</tr>)#s', ob_get_clean(), $matches, PREG_SET_ORDER)) - - foreach($matches as $match) - { - if(strlen($match[1])) - $phpinfo[$match[1]] = array(); - else if(isset($match[3])) - $phpinfo[end(array_keys($phpinfo))][$match[2]] = isset($match[4]) ? array($match[3], $match[4]) : $match[3]; - else - $phpinfo[end(array_keys($phpinfo))][] = $match[2]; + + return $buffer; +} + +/** + * Get some information about the files installed on a system. + * + * @return string + */ +function diagnostics_sigs_hook($hook, $entity_type, $returnvalue, $params) { + + $base_dir = elgg_get_root_path(); + $returnvalue .= elgg_echo('diagnostics:report:md5', array(diagnostics_md5_dir($base_dir))); + + return $returnvalue; +} + +/** + * Get some information about the php install + * + * @return string + */ +function diagnostics_phpinfo_hook($hook, $entity_type, $returnvalue, $params) { + + ob_start(); + phpinfo(); + $phpinfo = array('phpinfo' => array()); + + if (preg_match_all('#(?:<h2>(?:<a name=".*?">)?(.*?)(?:</a>)?</h2>)|(?:<tr(?: class=".*?")?><t[hd](?: class=".*?")?>(.*?)\s*</t[hd]>(?:<t[hd](?: class=".*?")?>(.*?)\s*</t[hd]>(?:<t[hd](?: class=".*?")?>(.*?)\s*</t[hd]>)?)?</tr>)#s', ob_get_clean(), $matches, PREG_SET_ORDER)) { + + foreach ($matches as $match) { + if (strlen($match[1])) { + $phpinfo[$match[1]] = array(); + } else if(isset($match[3])) { + $phpinfo[end(array_keys($phpinfo))][$match[2]] = isset($match[4]) ? array($match[3], $match[4]) : $match[3]; + } else { + $phpinfo[end(array_keys($phpinfo))][] = $match[2]; + } } - - - $returnvalue .= sprintf(elgg_echo('diagnostics:report:php'), print_r($phpinfo, true)); - - return $returnvalue; - } - - /** - * Get global variables. - * - * @param unknown_type $hook - * @param unknown_type $entity_type - * @param unknown_type $returnvalue - * @param unknown_type $params - * @return unknown - */ - function diagnostics_globals_hook($hook, $entity_type, $returnvalue, $params) - { - global $CONFIG; - - $returnvalue .= sprintf(elgg_echo('diagnostics:report:globals'), print_r($GLOBALS, true)); - - return $returnvalue; } - - // Initialise log browser - register_elgg_event_handler('init','system','diagnostics_init'); - register_elgg_event_handler('pagesetup','system','diagnostics_pagesetup'); - - register_plugin_hook("diagnostics:report", "all", "diagnostics_basic_hook", 0); // show basics first - register_plugin_hook("diagnostics:report", "all", "diagnostics_plugins_hook", 2); // Now the plugins - register_plugin_hook("diagnostics:report", "all", "diagnostics_sigs_hook", 1); // Now the signatures - - register_plugin_hook("diagnostics:report", "all", "diagnostics_globals_hook"); // Global variables - register_plugin_hook("diagnostics:report", "all", "diagnostics_phpinfo_hook"); // PHP info -?>
\ No newline at end of file + + $returnvalue .= elgg_echo('diagnostics:report:php', array(print_r($phpinfo, true))); + + return $returnvalue; +} + +/** + * Get global variables. + * + * @return string + */ +function diagnostics_globals_hook($hook, $entity_type, $returnvalue, $params) { + global $CONFIG; + + $output = str_replace($CONFIG->dbpass, '<<DBPASS>>', print_r($GLOBALS, true)); + $returnvalue .= elgg_echo('diagnostics:report:globals', array($output)); + + return $returnvalue; +} + +elgg_register_plugin_hook_handler("diagnostics:report", "system", "diagnostics_basic_hook", 0); // show basics first +elgg_register_plugin_hook_handler("diagnostics:report", "system", "diagnostics_plugins_hook", 2); // Now the plugins +elgg_register_plugin_hook_handler("diagnostics:report", "system", "diagnostics_sigs_hook", 1); // Now the signatures + +elgg_register_plugin_hook_handler("diagnostics:report", "system", "diagnostics_globals_hook"); // Global variables +elgg_register_plugin_hook_handler("diagnostics:report", "system", "diagnostics_phpinfo_hook"); // PHP info diff --git a/mod/diagnostics/views/default/admin/administer_utilities/diagnostics.php b/mod/diagnostics/views/default/admin/administer_utilities/diagnostics.php new file mode 100644 index 000000000..c7ff3d5fc --- /dev/null +++ b/mod/diagnostics/views/default/admin/administer_utilities/diagnostics.php @@ -0,0 +1,17 @@ +<?php +/** + * Diagnostics admin page + */ + +$diagnostics_title = elgg_echo('diagnostics:report'); +$diagnostics = '<p>' . elgg_echo('diagnostics:description') .'</p>'; +$params = array( + 'text' => elgg_echo('diagnostics:download'), + 'href' => 'action/diagnostics/download', + 'class' => 'elgg-button elgg-button-submit', + 'is_action' => true, + 'is_trusted' => true, +); +$diagnostics .= '<p>' . elgg_view('output/url', $params) . '</p>'; + +echo elgg_view_module('inline', $diagnostics_title, $diagnostics, array('class' => 'elgg-form-settings')); diff --git a/mod/diagnostics/views/default/diagnostics/forms/download.php b/mod/diagnostics/views/default/diagnostics/forms/download.php deleted file mode 100644 index dcb11d5f1..000000000 --- a/mod/diagnostics/views/default/diagnostics/forms/download.php +++ /dev/null @@ -1,15 +0,0 @@ -<?php - /** - * Elgg diagnostics - * - * @package ElggDiagnostics - * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 - * @author Curverider Ltd - * @copyright Curverider Ltd 2008 - * @link http://elgg.com/ - */ - - $form_body = elgg_view('input/submit', array('value' => elgg_echo('diagnostics:download'))); - - echo elgg_view('input/form', array('body' => $form_body, 'action' => $CONFIG->url . "actions/diagnostics/download")) -?>
\ No newline at end of file |
