mirror of
https://github.com/moodle/moodle.git
synced 2025-01-17 21:49:15 +01:00
MDL-45724 cache: added cache API warnings to the admin notifications page
This commit is contained in:
parent
727c21733e
commit
915140c9b5
@ -589,10 +589,14 @@ $availableupdatesfetch = $updateschecker->get_last_timefetched();
|
||||
$buggyiconvnomb = (!function_exists('mb_convert_encoding') and @iconv('UTF-8', 'UTF-8//IGNORE', '100'.chr(130).'€') !== '100€');
|
||||
//check if the site is registered on Moodle.org
|
||||
$registered = $DB->count_records('registration_hubs', array('huburl' => HUB_MOODLEORGHUBURL, 'confirmed' => 1));
|
||||
// Check if there are any cache warnings.
|
||||
$cachewarnings = cache_helper::warnings();
|
||||
|
||||
admin_externalpage_setup('adminnotifications');
|
||||
|
||||
/* @var core_admin_renderer $output */
|
||||
$output = $PAGE->get_renderer('core', 'admin');
|
||||
echo $output->admin_notifications_page($maturity, $insecuredataroot, $errorsdisplayed,
|
||||
$cronoverdue, $dbproblems, $maintenancemode, $availableupdates, $availableupdatesfetch, $buggyiconvnomb,
|
||||
$registered);
|
||||
|
||||
echo $output->admin_notifications_page($maturity, $insecuredataroot, $errorsdisplayed, $cronoverdue, $dbproblems,
|
||||
$maintenancemode, $availableupdates, $availableupdatesfetch, $buggyiconvnomb,
|
||||
$registered, $cachewarnings);
|
||||
|
@ -303,12 +303,13 @@ class core_admin_renderer extends plugin_renderer_base {
|
||||
* @param bool $buggyiconvnomb warn iconv problems
|
||||
* @param array|null $availableupdates array of \core\update\info objects or null
|
||||
* @param int|null $availableupdatesfetch timestamp of the most recent updates fetch or null (unknown)
|
||||
* @param string[] $cachewarnings An array containing warnings from the Cache API.
|
||||
*
|
||||
* @return string HTML to output.
|
||||
*/
|
||||
public function admin_notifications_page($maturity, $insecuredataroot, $errorsdisplayed,
|
||||
$cronoverdue, $dbproblems, $maintenancemode, $availableupdates, $availableupdatesfetch,
|
||||
$buggyiconvnomb, $registered) {
|
||||
$buggyiconvnomb, $registered, array $cachewarnings = array()) {
|
||||
global $CFG;
|
||||
$output = '';
|
||||
|
||||
@ -321,6 +322,7 @@ class core_admin_renderer extends plugin_renderer_base {
|
||||
$output .= $this->cron_overdue_warning($cronoverdue);
|
||||
$output .= $this->db_problems($dbproblems);
|
||||
$output .= $this->maintenance_mode_warning($maintenancemode);
|
||||
$output .= $this->cache_warnings($cachewarnings);
|
||||
$output .= $this->registration_warning($registered);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@ -595,6 +597,19 @@ class core_admin_renderer extends plugin_renderer_base {
|
||||
return $this->warning($dbproblems);
|
||||
}
|
||||
|
||||
/**
|
||||
* Renders cache warnings if there are any.
|
||||
*
|
||||
* @param string[] $cachewarnings
|
||||
* @return string
|
||||
*/
|
||||
public function cache_warnings(array $cachewarnings) {
|
||||
if (!count($cachewarnings)) {
|
||||
return '';
|
||||
}
|
||||
return join("\n", array_map(array($this, 'warning'), $cachewarnings));
|
||||
}
|
||||
|
||||
/**
|
||||
* Render an appropriate message if the site in in maintenance mode.
|
||||
* @param bool $maintenancemode
|
||||
|
12
cache/admin.php
vendored
12
cache/admin.php
vendored
@ -280,15 +280,7 @@ if (!empty($action) && confirm_sesskey()) {
|
||||
}
|
||||
}
|
||||
|
||||
// Stores can add notices to the cache configuration screen for things like conflicting configurations etc.
|
||||
// Here we check each cache to see if it has warnings.
|
||||
foreach ($stores as $store) {
|
||||
if (!empty($store['warnings']) && is_array($store['warnings'])) {
|
||||
foreach ($store['warnings'] as $warning) {
|
||||
$notifications[] = array($warning, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
$notifications = array_merge($notifications, cache_helper::warnings($stores));
|
||||
|
||||
$PAGE->set_title($title);
|
||||
$PAGE->set_heading($SITE->fullname);
|
||||
@ -297,7 +289,7 @@ $renderer = $PAGE->get_renderer('core_cache');
|
||||
|
||||
echo $renderer->header();
|
||||
echo $renderer->heading($title);
|
||||
echo $renderer->notififications($notifications);
|
||||
echo $renderer->notifications($notifications);
|
||||
|
||||
if ($mform instanceof moodleform) {
|
||||
$mform->display();
|
||||
|
24
cache/classes/helper.php
vendored
24
cache/classes/helper.php
vendored
@ -736,4 +736,28 @@ class cache_helper {
|
||||
}
|
||||
return $stores;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array of warnings from the cache API.
|
||||
*
|
||||
* The warning returned here are for things like conflicting store instance configurations etc.
|
||||
* These get shown on the admin notifications page for example.
|
||||
*
|
||||
* @param array|null $stores An array of stores to get warnings for, or null for all.
|
||||
* @return string[]
|
||||
*/
|
||||
public static function warnings(array $stores = null) {
|
||||
global $CFG;
|
||||
if ($stores === null) {
|
||||
require_once($CFG->dirroot.'/cache/locallib.php');
|
||||
$stores = cache_administration_helper::get_store_instance_summaries();
|
||||
}
|
||||
$warnings = array();
|
||||
foreach ($stores as $store) {
|
||||
if (!empty($store['warnings'])) {
|
||||
$warnings = array_merge($warnings, $store['warnings']);
|
||||
}
|
||||
}
|
||||
return $warnings;
|
||||
}
|
||||
}
|
||||
|
6
cache/classes/store.php
vendored
6
cache/classes/store.php
vendored
@ -372,7 +372,11 @@ abstract class cache_store implements cache_store_interface {
|
||||
* This should be used to notify things like configuration conflicts etc.
|
||||
* The warnings returned here will be displayed on the cache configuration screen.
|
||||
*
|
||||
* @return string[] Returns an array of warnings (strings)
|
||||
* @return array[] Returns an array of arrays with the format:
|
||||
* $notifications = array(
|
||||
* array('This is a success message', true),
|
||||
* array('This is a failure message', false),
|
||||
* );
|
||||
*/
|
||||
public function get_warnings() {
|
||||
return array();
|
||||
|
8
cache/renderer.php
vendored
8
cache/renderer.php
vendored
@ -376,10 +376,16 @@ class core_cache_renderer extends plugin_renderer_base {
|
||||
/**
|
||||
* Renders an array of notifications for the cache configuration screen.
|
||||
*
|
||||
* Takes an array of notifications with the form:
|
||||
* $notifications = array(
|
||||
* array('This is a success message', true),
|
||||
* array('This is a failure message', false),
|
||||
* );
|
||||
*
|
||||
* @param array $notifications
|
||||
* @return string
|
||||
*/
|
||||
public function notififications(array $notifications = array()) {
|
||||
public function notifications(array $notifications = array()) {
|
||||
if (count($notifications) === 0) {
|
||||
// There are no notifications to render.
|
||||
return '';
|
||||
|
Loading…
x
Reference in New Issue
Block a user