$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);
* @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 = '';
$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);
//////////////////////////////////////////////////////////////////////////////////////////////////
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
}
}
-// 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);
echo $renderer->header();
echo $renderer->heading($title);
-echo $renderer->notififications($notifications);
+echo $renderer->notifications($notifications);
if ($mform instanceof moodleform) {
$mform->display();
}
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;
+ }
}
* 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();
/**
* 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 '';