| Server IP : 170.10.161.225 / Your IP : 216.73.216.78 Web Server : Apache System : Linux vps103298.mylogin.co 4.18.0-513.11.1.el8_9.x86_64 #1 SMP Wed Jan 17 02:00:40 EST 2024 x86_64 User : calvet ( 273824) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : ON Directory : /home/www/calvetrealty.com/wp-content/plugins/readabler/src/Merkulove/Readabler/ |
Upload File : |
<?php
/**
* Readabler
* Web accessibility for Your WordPress site.
* Exclusively on https://1.envato.market/readabler
*
* @encoding UTF-8
* @version 1.7.4
* @copyright (C) 2018 - 2024 Merkulove ( https://merkulov.design/ ). All rights reserved.
* @license Envato License https://1.envato.market/KYbje
* @contributors Nemirovskiy Vitaliy (nemirovskiyvitaliy@gmail.com), Dmitry Merkulov (dmitry@merkulov.design)
* @support help@merkulov.design
* @license Envato License https://1.envato.market/KYbje
**/
namespace Merkulove\Readabler;
use mysqli_result;
use stdClass;
/** Exit if accessed directly. */
if ( ! defined( 'ABSPATH' ) ) {
header( 'Status: 403 Forbidden' );
header( 'HTTP/1.1 403 Forbidden' );
exit;
}
final class Reports {
/**
* @var string Table name.
*/
private static $table = 'readabler_analyzer';
/**
* Create table in a database.
*
* @return bool
*/
public static function create_table(): bool {
global $wpdb;
$table_name = $wpdb->prefix . self::$table;
// Check if the table already exists.
$query = $wpdb->prepare( 'SHOW TABLES LIKE %s', $wpdb->esc_like( $table_name ) );
if ( $wpdb->get_var( $query ) === $table_name ) {
return true;
}
// Get the charset of the database.
$charset_collate = $wpdb->get_charset_collate();
/** @noinspection SqlNoDataSourceInspection */
$sql = "CREATE TABLE $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
post_id mediumint(9) NOT NULL,
post_type varchar(255) NOT NULL,
issues mediumint(9) NOT NULL DEFAULT 0,
report varchar(255) NOT NULL,
created_at datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";
$wpdb->query( $sql );
// We cannot directly tell that whether this succeeded!
if ( $wpdb->get_var( $query ) === $table_name ) {
return true;
}
return false;
}
/**
* Add a report to the database.
*
* @param $id
* @param $report
*
* @return bool|int|mysqli_result|null
*/
private static function add_report( $id, $report ) {
global $wpdb;
$id = intval( $id );
if ( ! $id ) { return false; }
return $wpdb->insert(
$wpdb->prefix . self::$table,
array(
'post_id' => $id,
'post_type' => get_post_type( $id ),
'issues' => self::count_issues( $report ),
'report' => json_encode( $report ),
'created_at' => current_time( 'mysql' ),
)
);
}
/**
* Get report.
*
* @param $id
*
* @return array|false|object|stdClass|null
*/
public static function get_report( $id ) {
global $wpdb;
if ( ! $id ) { return false; }
/** @noinspection SqlNoDataSourceInspection */
/** @noinspection SqlDialectInspection */
$sql = $wpdb->prepare(
"SELECT * FROM `" . $wpdb->prefix . self::$table . "` WHERE post_id = %s",
$id
);
return $wpdb->get_row( $sql );
}
/**
* Update report.
*
* @param $id
* @param $report
*
* @return bool|int|mysqli_result|null
*/
private static function update_report( $id, $report ) {
global $wpdb;
$id = intval( $id );
if ( ! $id ) { return false; }
return $wpdb->update(
$wpdb->prefix . self::$table,
array(
'post_id' => $id,
'post_type' => get_post_type( $id ),
'issues' => self::count_issues( $report ),
'report' => json_encode( $report ),
'created_at' => current_time( 'mysql' ),
),
array( 'post_id' => $id )
);
}
/**
* Put report.
*
* @param $id
* @param $report
*
* @return bool|int|mysqli_result|resource|null
*/
public static function put_report( $id, $report ) {
global $wpdb;
$id = intval( $id );
if ( ! $id ) { return false; }
// Check if the report already exists.
/** @noinspection SqlNoDataSourceInspection */
/** @noinspection SqlDialectInspection */
if ( ! $wpdb->get_var( $wpdb->prepare( "SELECT id FROM $wpdb->prefix" . self::$table . " WHERE post_id = %d", $id ) ) ) {
return self::add_report( $id, $report );
} else {
return self::update_report( $id, $report );
}
}
/**
* Count issues in a report array.
*
* @param $report
*
* @return int
*/
private static function count_issues( $report ): int {
$total = 0;
foreach ( $report as $issues ) {
$total += intval( $issues );
}
return $total;
}
}