Edit File by line
/home/zeestwma/richards.../wp-conte.../plugins/elemento.../modules/usage
File: usage-reporter.php
<?php
[0] Fix | Delete
namespace Elementor\Modules\Usage;
[1] Fix | Delete
[2] Fix | Delete
use Elementor\Modules\System_Info\Reporters\Base;
[3] Fix | Delete
use Elementor\Utils;
[4] Fix | Delete
[5] Fix | Delete
if ( ! defined( 'ABSPATH' ) ) {
[6] Fix | Delete
exit; // Exit if accessed directly.
[7] Fix | Delete
}
[8] Fix | Delete
[9] Fix | Delete
/**
[10] Fix | Delete
* Elementor usage report.
[11] Fix | Delete
*
[12] Fix | Delete
* Elementor system report handler class responsible for generating a report for
[13] Fix | Delete
* the user.
[14] Fix | Delete
*/
[15] Fix | Delete
class Usage_Reporter extends Base {
[16] Fix | Delete
[17] Fix | Delete
const RECALC_ACTION = 'elementor_usage_recalc';
[18] Fix | Delete
[19] Fix | Delete
public function get_title() {
[20] Fix | Delete
return esc_html__( 'Elements Usage', 'elementor' );
[21] Fix | Delete
}
[22] Fix | Delete
[23] Fix | Delete
public function get_fields() {
[24] Fix | Delete
return [
[25] Fix | Delete
'usage' => '',
[26] Fix | Delete
];
[27] Fix | Delete
}
[28] Fix | Delete
[29] Fix | Delete
public function print_html_label( $label ) {
[30] Fix | Delete
$title = $this->get_title();
[31] Fix | Delete
[32] Fix | Delete
if ( empty( $_GET[ self::RECALC_ACTION ] ) ) { // phpcs:ignore -- nonce validation is not required here.
[33] Fix | Delete
$nonce = wp_create_nonce( self::RECALC_ACTION );
[34] Fix | Delete
$url = add_query_arg( [
[35] Fix | Delete
self::RECALC_ACTION => 1,
[36] Fix | Delete
'_wpnonce' => $nonce,
[37] Fix | Delete
] );
[38] Fix | Delete
[39] Fix | Delete
$title .= '<a id="elementor-usage-recalc" href="' . esc_url( $url ) . '#elementor-usage-recalc" class="box-title-tool">Recalculate</a>';
[40] Fix | Delete
} else {
[41] Fix | Delete
$title .= $this->get_remove_recalc_query_string_script();
[42] Fix | Delete
}
[43] Fix | Delete
[44] Fix | Delete
parent::print_html_label( $title );
[45] Fix | Delete
}
[46] Fix | Delete
[47] Fix | Delete
public function get_usage() {
[48] Fix | Delete
/** @var Module $module */
[49] Fix | Delete
$module = Module::instance();
[50] Fix | Delete
[51] Fix | Delete
if ( ! empty( $_GET[ self::RECALC_ACTION ] ) ) {
[52] Fix | Delete
// phpcs:ignore
[53] Fix | Delete
$nonce = Utils::get_super_global_value( $_GET, '_wpnonce' );
[54] Fix | Delete
[55] Fix | Delete
if ( ! wp_verify_nonce( $nonce, self::RECALC_ACTION ) ) {
[56] Fix | Delete
wp_die( 'Invalid Nonce', 'Invalid Nonce', [
[57] Fix | Delete
'back_link' => true,
[58] Fix | Delete
] );
[59] Fix | Delete
}
[60] Fix | Delete
[61] Fix | Delete
$module->recalc_usage();
[62] Fix | Delete
}
[63] Fix | Delete
[64] Fix | Delete
$usage = '';
[65] Fix | Delete
[66] Fix | Delete
foreach ( $module->get_formatted_usage() as $doc_type => $data ) {
[67] Fix | Delete
$usage .= '<tr><td>' . $data['title'] . ' ( ' . $data['count'] . ' )</td><td>';
[68] Fix | Delete
[69] Fix | Delete
foreach ( $data['elements'] as $element => $count ) {
[70] Fix | Delete
$usage .= $element . ': ' . $count . PHP_EOL;
[71] Fix | Delete
}
[72] Fix | Delete
[73] Fix | Delete
$usage .= '</td></tr>';
[74] Fix | Delete
}
[75] Fix | Delete
[76] Fix | Delete
return [
[77] Fix | Delete
'value' => $usage,
[78] Fix | Delete
];
[79] Fix | Delete
}
[80] Fix | Delete
[81] Fix | Delete
public function get_raw_usage() {
[82] Fix | Delete
/** @var Module $module */
[83] Fix | Delete
$module = Module::instance();
[84] Fix | Delete
$usage = PHP_EOL;
[85] Fix | Delete
[86] Fix | Delete
foreach ( $module->get_formatted_usage( 'raw' ) as $doc_type => $data ) {
[87] Fix | Delete
$usage .= "\t{$data['title']} : " . $data['count'] . PHP_EOL;
[88] Fix | Delete
[89] Fix | Delete
foreach ( $data['elements'] as $element => $count ) {
[90] Fix | Delete
$usage .= "\t\t{$element} : {$count}" . PHP_EOL;
[91] Fix | Delete
}
[92] Fix | Delete
}
[93] Fix | Delete
[94] Fix | Delete
return [
[95] Fix | Delete
'value' => $usage,
[96] Fix | Delete
];
[97] Fix | Delete
}
[98] Fix | Delete
[99] Fix | Delete
/**
[100] Fix | Delete
* Removes the "elementor_usage_recalc" param from the query string to avoid recalc every refresh.
[101] Fix | Delete
* When using a redirect header in place of this approach it throws an error because some components have already output some content.
[102] Fix | Delete
*
[103] Fix | Delete
* @return string
[104] Fix | Delete
*/
[105] Fix | Delete
private function get_remove_recalc_query_string_script() {
[106] Fix | Delete
ob_start();
[107] Fix | Delete
?>
[108] Fix | Delete
<script>
[109] Fix | Delete
// Origin file: modules/usage/usage-reporter.php - get_remove_recalc_query_string_script()
[110] Fix | Delete
{
[111] Fix | Delete
const url = new URL( window.location );
[112] Fix | Delete
[113] Fix | Delete
url.hash = '';
[114] Fix | Delete
url.searchParams.delete( 'elementor_usage_recalc' );
[115] Fix | Delete
url.searchParams.delete( '_wpnonce' );
[116] Fix | Delete
[117] Fix | Delete
history.replaceState( '', window.title, url.toString() );
[118] Fix | Delete
}
[119] Fix | Delete
</script>
[120] Fix | Delete
<?php
[121] Fix | Delete
[122] Fix | Delete
return ob_get_clean();
[123] Fix | Delete
}
[124] Fix | Delete
}
[125] Fix | Delete
[126] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function