| Server IP : 3.93.235.159 / Your IP : 216.73.216.140 Web Server : Apache System : Linux ip-172-26-0-169 5.10.0-46-cloud-amd64 #1 SMP Debian 5.10.262-1 (2026-07-31) x86_64 User : bitnami ( 1000) PHP Version : 8.2.9 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /bitnami/wordpress/wp-content/plugins/pojo-accessibility/modules/remediation/actions/ |
Upload File : |
<?php
namespace EA11y\Modules\Remediation\Actions;
use DOMDocument;
use EA11y\Modules\Remediation\Classes\Remediation_Base;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
/**
* Class Replace
*/
class Replace extends Remediation_Base {
public static string $type = 'replace';
public function run() : ?DOMDocument {
$element_node = $this->get_element_by_xpath_with_snippet_fallback(
$this->data['xpath'] ?? null,
$this->data['find'] ?? null
);
if ( ! $element_node instanceof \DOMElement ) {
$this->use_frontend = true;
return null; // nothing to do
}
$outer_html = $this->dom->saveHTML( $element_node );
if ( stripos( $outer_html, $this->data['find'] ) === false ) {
$this->use_frontend = true;
return null;
}
$updated_html = str_ireplace( $this->data['find'], $this->data['replace'], $outer_html );
if ( $updated_html === $outer_html ) {
return $this->dom;
}
$tmp_dom = new DOMDocument( '1.0', 'UTF-8' );
$tmp_dom->loadHTML(
mb_encode_numericentity( $updated_html, [ 0x80, 0x10FFFF, 0, 0x1FFFFF ], 'UTF-8' ),
LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD | LIBXML_NOERROR | LIBXML_NOWARNING
);
$new_node = $this->dom->importNode( $tmp_dom->documentElement, true );
$element_node->parentNode->replaceChild( $new_node, $element_node );
return $this->dom;
}
}