AutorÃa | Ultima modificación | Ver Log |
<?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/>.
namespace tool_brickfield\local\htmlchecker;
use DOMDocument;
/**
* A report item. There is one per issue with the report
*
* @package tool_brickfield
* @copyright 2020 onward: Brickfield Education Labs, www.brickfield.ie
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class brickfield_accessibility_report_item {
/** @var object The DOMElement that the report item refers to (if any) */
public $element;
/** @var string The error message */
public $message;
/** @var bool Whether the check needs to be manually verified */
public $manual;
/** @var bool For document-level tests, this says whether the test passed or not */
public $pass;
/** @var object For issues with more than two possible states, this contains information about the state */
public $state;
/** @var int the line number of the report item */
public $line;
/**
* Returns the line number of the report item. Unfortunately we can't use getLineNo
* if we are before PHP 5.3, so if not we try to get the line number through a more
* circuitous way.
*/
public function get_line() {
if (is_object($this->element) && method_exists($this->element, 'getLineNo')) {
return $this->element->getLineNo();
}
return 0;
}
/**
* Returns the current element in plain HTML form
* @param array $extraattributes An array of extra attributes to add to the element
* @return string An HTML string version of the provided DOMElement object
*/
public function get_html(array $extraattributes = []): string {
if (!$this->element) {
return '';
}
$resultdom = new DOMDocument();
$resultdom->formatOutput = true;
$resultdom->preserveWhiteSpace = false;
try {
$resultelement = $resultdom->importNode($this->element, true);
} catch (Exception $e) {
return false;
}
foreach ($this->element->attributes as $attribute) {
if ($attribute->name != 'brickfield_accessibility_style_index') {
$resultelement->setAttribute($attribute->name, $attribute->value);
}
}
foreach ($extraattributes as $name => $value) {
$resultelement->setAttribute($name, $value);
}
@$resultdom->appendChild($resultelement);
return @$resultdom->saveHTML();
}
}