Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 4.2.x will end 22 April 2024 (12 months).
  • Bug fixes for security issues in 4.2.x will end 7 October 2024 (18 months).
  • PHP version: minimum PHP 8.0.0 Note: minimum PHP version has increased since Moodle 4.1. PHP 8.1.x is supported too.
<?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/>.

/**
 * A table of check results
 *
 * @package    core
 * @category   check
 * @copyright  2020 Brendan Heywood <brendan@catalyst-au.net>
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */
namespace core\check;

defined('MOODLE_INTERNAL') || die();

/**
 * A table of check results
 *
 * @copyright  2020 Brendan Heywood <brendan@catalyst-au.net>
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */
class table implements \renderable {

    /**
< * @var moodle_url $url
> * @var \moodle_url $url
*/ protected $url = ''; /** * @var string $type What type of checks */ protected $type = ''; /** * @var check $detail a specific check to focus on */ public $detail = ''; /** * @var array $checks shown in this table */ public $checks = []; /** * Constructor * * @param string $type of check * @param string $url of report * @param string $detail check to focus on */ public function __construct($type, $url, $detail = '') { // We may need a bit more memory and this may take a long time to process. \raise_memory_limit(MEMORY_EXTRA); \core_php_time_limit::raise(); $this->type = $type; $this->url = $url; $this->checks = \core\check\manager::get_checks($type); if ($detail) { $this->checks = array_filter($this->checks, function($check) use ($detail) { return $detail == $check->get_ref(); }); if (!empty($this->checks)) { $this->detail = reset($this->checks); } } } /** * Render a table of checks * * @param renderer $output to use * @return string html output */ public function render($output) { $table = new \html_table(); $table->data = []; $table->head = [ get_string('status'), get_string('check'), get_string('summary'), get_string('action'), ]; $table->colclasses = [ 'rightalign status', 'leftalign check', 'leftalign summary', 'leftalign action', ]; $table->id = $this->type . 'reporttable'; $table->attributes = ['class' => 'admintable ' . $this->type . 'report generaltable']; foreach ($this->checks as $check) { $ref = $check->get_ref(); $result = $check->get_result(); $component = $check->get_component(); $actionlink = $check->get_action_link(); $link = new \moodle_url($this->url, ['detail' => $ref]); $row = []; $row[] = $output->check_result($result); $row[] = $output->action_link($link, $check->get_name()); $row[] = $result->get_summary() . '<br>' . \html_writer::start_tag('small') . $output->action_link($link, get_string('moreinfo')) . \html_writer::end_tag('small'); if ($actionlink) { $row[] = $output->render($actionlink); } else { $row[] = ''; } $table->data[] = $row; } $html = \html_writer::table($table); if ($this->detail && $result) { $html .= $output->heading(get_string('details'), 3); $html .= $output->box($result->get_details(), 'generalbox boxwidthnormal boxaligncenter'); $html .= $output->continue_button($this->url); } return $html; } }