You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
283 lines
11 KiB
283 lines
11 KiB
<?php
|
|
// This file is part of Moodle - http://moodle.org/
|
|
//
|
|
// Moodle is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// Moodle is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
/**
|
|
* This file contains classes for report_performance
|
|
*
|
|
* @package report_performance
|
|
* @copyright 2013 Rajesh Taneja
|
|
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
|
*/
|
|
|
|
defined('MOODLE_INTERNAL') || die;
|
|
|
|
/**
|
|
* Class defining issue result.
|
|
*
|
|
* @package report_performance
|
|
* @copyright 2013 Rajesh Taneja
|
|
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
|
*/
|
|
class report_performance_issue {
|
|
/** @var string issue identifier */
|
|
public $issue;
|
|
/** @var string issue name */
|
|
public $name;
|
|
/** @var string shown as status */
|
|
public $statusstr;
|
|
/** @var string string defines issue status */
|
|
public $status;
|
|
/** @var string shown as comment */
|
|
public $comment;
|
|
/** @var string details aboout issue*/
|
|
public $details;
|
|
/** @var string link pointing to configuration */
|
|
public $configlink;
|
|
}
|
|
|
|
/**
|
|
* This contains functions to get list of issues and there results.
|
|
*
|
|
* @package report_performance
|
|
* @copyright 2013 Rajesh Taneja
|
|
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
|
*/
|
|
class report_performance {
|
|
/**
|
|
* This is used when issue is ok and there is no impact on performance.
|
|
*/
|
|
const REPORT_PERFORMANCE_OK = 'ok';
|
|
|
|
/**
|
|
* This is used to notify that issue might impact performance.
|
|
*/
|
|
const REPORT_PERFORMANCE_WARNING = 'warning';
|
|
|
|
/**
|
|
* This is used to notify if issue is serious and will impact performance.
|
|
*/
|
|
const REPORT_PERFORMANCE_SERIOUS = 'serious';
|
|
|
|
/**
|
|
* This is used to notify if issue is critical and will significantly impact performance.
|
|
*/
|
|
const REPORT_PERFORMANCE_CRITICAL = 'critical';
|
|
|
|
/**
|
|
* Return list of performance check function list.
|
|
*
|
|
* @return array list of performance issues.
|
|
*/
|
|
public function get_issue_list() {
|
|
return array(
|
|
'report_performance_check_themedesignermode',
|
|
'report_performance_check_cachejs',
|
|
'report_performance_check_debugmsg',
|
|
'report_performance_check_automatic_backup',
|
|
'report_performance_check_enablestats'
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Returns document link for performance issue
|
|
*
|
|
* @param string $issue string describing issue
|
|
* @param string $name name of issue
|
|
* @return string issue link pointing to docs page.
|
|
*/
|
|
public function doc_link($issue, $name) {
|
|
global $CFG, $OUTPUT;
|
|
|
|
if (empty($CFG->docroot)) {
|
|
return $name;
|
|
}
|
|
|
|
return $OUTPUT->doc_link('report/performance/'.$issue, $name);
|
|
}
|
|
|
|
/**
|
|
* Helper function to add issue details to table.
|
|
*
|
|
* @param html_table $table table in which issue details should be added
|
|
* @param report_performance_issues $issueresult issue result to be added
|
|
* @param bool $detail true if issue if displayed in detail.
|
|
*/
|
|
public function add_issue_to_table(&$table, $issueresult, $detailed = false) {
|
|
global $OUTPUT;
|
|
$statusarr = array(self::REPORT_PERFORMANCE_OK => 'statusok',
|
|
self::REPORT_PERFORMANCE_WARNING => 'statuswarning',
|
|
self::REPORT_PERFORMANCE_SERIOUS => 'statusserious',
|
|
self::REPORT_PERFORMANCE_CRITICAL => 'statuscritical');
|
|
|
|
$row = array();
|
|
if ($detailed) {
|
|
$row[0] = $this->doc_link($issueresult->issue, $issueresult->name);
|
|
} else {
|
|
$url = new moodle_url('/report/performance/index.php', array('issue' => $issueresult->issue));
|
|
$row[0] = html_writer::link($url, $issueresult->name);
|
|
}
|
|
$row[1] = html_writer::tag('span', $issueresult->statusstr, array('class' => $statusarr[$issueresult->status]));
|
|
$row[2] = $issueresult->comment;
|
|
if (!empty($issueresult->configlink)) {
|
|
$editicon = $OUTPUT->pix_icon('i/settings', $issueresult->issue);
|
|
$row[3] = $OUTPUT->action_link($issueresult->configlink, $editicon);
|
|
} else {
|
|
$row[3] = '';
|
|
}
|
|
|
|
$table->data[] = $row;
|
|
}
|
|
|
|
/**
|
|
* Verifies if theme designer mode is enabled.
|
|
*
|
|
* @return report_performance_issue result of themedesigner issue.
|
|
*/
|
|
public static function report_performance_check_themedesignermode() {
|
|
global $CFG;
|
|
$issueresult = new report_performance_issue();
|
|
$issueresult->issue = 'report_performance_check_themedesignermode';
|
|
$issueresult->name = get_string('themedesignermode', 'admin');
|
|
|
|
if (empty($CFG->themedesignermode)) {
|
|
$issueresult->statusstr = get_string('disabled', 'report_performance');
|
|
$issueresult->status = self::REPORT_PERFORMANCE_OK;
|
|
$issueresult->comment = get_string('check_themedesignermode_comment_disable', 'report_performance');
|
|
} else {
|
|
$issueresult->statusstr = get_string('enabled', 'report_performance');
|
|
$issueresult->status = self::REPORT_PERFORMANCE_CRITICAL;
|
|
$issueresult->comment = get_string('check_themedesignermode_comment_enable', 'report_performance');
|
|
}
|
|
|
|
$issueresult->details = get_string('check_themedesignermode_details', 'report_performance');
|
|
$issueresult->configlink = new moodle_url('/admin/search.php', array('query' => 'themedesignermode'));
|
|
return $issueresult;
|
|
}
|
|
|
|
/**
|
|
* Checks if javascript is cached.
|
|
*
|
|
* @return report_performance_issue result of cachejs issue.
|
|
*/
|
|
public static function report_performance_check_cachejs() {
|
|
global $CFG;
|
|
$issueresult = new report_performance_issue();
|
|
$issueresult->issue = 'report_performance_check_cachejs';
|
|
$issueresult->name = get_string('cachejs', 'admin');
|
|
|
|
if (empty($CFG->cachejs)) {
|
|
$issueresult->statusstr = get_string('disabled', 'report_performance');
|
|
$issueresult->status = self::REPORT_PERFORMANCE_CRITICAL;
|
|
$issueresult->comment = get_string('check_cachejs_comment_disable', 'report_performance');
|
|
} else {
|
|
$issueresult->statusstr = get_string('enabled', 'report_performance');
|
|
$issueresult->status = self::REPORT_PERFORMANCE_OK;
|
|
$issueresult->comment = get_string('check_cachejs_comment_enable', 'report_performance');
|
|
}
|
|
|
|
$issueresult->details = get_string('check_cachejs_details', 'report_performance');
|
|
$issueresult->configlink = new moodle_url('/admin/search.php', array('query' => 'cachejs'));
|
|
return $issueresult;
|
|
}
|
|
|
|
/**
|
|
* Checks debug config.
|
|
*
|
|
* @return report_performance_issue result of debugmsg issue.
|
|
*/
|
|
public static function report_performance_check_debugmsg() {
|
|
global $CFG;
|
|
$issueresult = new report_performance_issue();
|
|
$issueresult->issue = 'report_performance_check_debugmsg';
|
|
$issueresult->name = get_string('debug', 'admin');
|
|
$debugchoices = array(DEBUG_NONE => 'debugnone',
|
|
DEBUG_MINIMAL => 'debugminimal',
|
|
DEBUG_NORMAL => 'debugnormal',
|
|
DEBUG_ALL => 'debugall',
|
|
DEBUG_DEVELOPER => 'debugdeveloper');
|
|
|
|
$issueresult->statusstr = get_string($debugchoices[$CFG->debug], 'admin');
|
|
if (!$CFG->debugdeveloper) {
|
|
$issueresult->status = self::REPORT_PERFORMANCE_OK;
|
|
$issueresult->comment = get_string('check_debugmsg_comment_nodeveloper', 'report_performance');
|
|
} else {
|
|
$issueresult->status = self::REPORT_PERFORMANCE_WARNING;
|
|
$issueresult->comment = get_string('check_debugmsg_comment_developer', 'report_performance');
|
|
}
|
|
|
|
$issueresult->details = get_string('check_debugmsg_details', 'report_performance');
|
|
|
|
$issueresult->configlink = new moodle_url('/admin/settings.php', array('section' => 'debugging'));
|
|
return $issueresult;
|
|
}
|
|
|
|
/**
|
|
* Checks automatic backup config.
|
|
*
|
|
* @return report_performance_issue result of automatic backup issue.
|
|
*/
|
|
public static function report_performance_check_automatic_backup() {
|
|
global $CFG;
|
|
require_once($CFG->dirroot . '/backup/util/helper/backup_cron_helper.class.php');
|
|
|
|
$issueresult = new report_performance_issue();
|
|
$issueresult->issue = 'report_performance_check_automatic_backup';
|
|
$issueresult->name = get_string('check_backup', 'report_performance');
|
|
|
|
$automatedbackupsenabled = get_config('backup', 'backup_auto_active');
|
|
if ($automatedbackupsenabled == backup_cron_automated_helper::AUTO_BACKUP_ENABLED) {
|
|
$issueresult->statusstr = get_string('autoactiveenabled', 'backup');
|
|
$issueresult->status = self::REPORT_PERFORMANCE_WARNING;
|
|
$issueresult->comment = get_string('check_backup_comment_enable', 'report_performance');
|
|
} else {
|
|
if ($automatedbackupsenabled == backup_cron_automated_helper::AUTO_BACKUP_DISABLED) {
|
|
$issueresult->statusstr = get_string('autoactivedisabled', 'backup');
|
|
} else {
|
|
$issueresult->statusstr = get_string('autoactivemanual', 'backup');
|
|
}
|
|
$issueresult->status = self::REPORT_PERFORMANCE_OK;
|
|
$issueresult->comment = get_string('check_backup_comment_disable', 'report_performance');
|
|
}
|
|
|
|
$issueresult->details = get_string('check_backup_details', 'report_performance');
|
|
$issueresult->configlink = new moodle_url('/admin/search.php', array('query' => 'backup_auto_active'));
|
|
return $issueresult;
|
|
}
|
|
|
|
/**
|
|
* Checks if stats are enabled.
|
|
*/
|
|
public static function report_performance_check_enablestats() {
|
|
global $CFG;
|
|
$issueresult = new report_performance_issue();
|
|
$issueresult->issue = 'report_performance_check_enablestats';
|
|
$issueresult->name = get_string('enablestats', 'admin');
|
|
|
|
if (!empty($CFG->enablestats)) {
|
|
$issueresult->statusstr = get_string('enabled', 'report_performance');
|
|
$issueresult->status = self::REPORT_PERFORMANCE_WARNING;
|
|
$issueresult->comment = get_string('check_enablestats_comment_enable', 'report_performance');
|
|
} else {
|
|
$issueresult->statusstr = get_string('disabled', 'report_performance');
|
|
$issueresult->status = self::REPORT_PERFORMANCE_OK;
|
|
$issueresult->comment = get_string('check_enablestats_comment_disable', 'report_performance');
|
|
}
|
|
|
|
$issueresult->details = get_string('check_enablestats_details', 'report_performance');
|
|
$issueresult->configlink = new moodle_url('/admin/search.php', array('query' => 'enablestats'));
|
|
return $issueresult;
|
|
}
|
|
}
|
|
|