HEX
Server: Apache/2.4.65 (Debian)
System: Linux 88f31f35b0b8 6.1.0-38-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.147-1 (2025-08-02) x86_64
User: www-data (33)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: /var/www/html/wp-content/plugins/advanced-ads-tracking/includes/admin/class-page-database.php
<?php
/**
 * Admin Page Database.
 *
 * @package AdvancedAds\Tracking
 * @author  Advanced Ads <info@wpadvancedads.com>
 * @since   2.6.0
 */

namespace AdvancedAds\Tracking\Admin;

use AdvancedAds\Constants;
use AdvancedAds\Abstracts\Screen;
use AdvancedAds\Tracking\Helpers;
use AdvancedAds\Tracking\Database;
use AdvancedAds\Tracking\Debugger;
use AdvancedAds\Tracking\Db_Operations;

defined( 'ABSPATH' ) || exit;

/**
 * Admin Page Database.
 */
class Page_Database extends Screen {
	/**
	 * Screen unique id.
	 *
	 * @return string
	 */
	public function get_id(): string {
		return 'stats-database';
	}

	/**
	 * Get the order number of the screen.
	 *
	 * @return int
	 */
	public function get_order(): int {
		return 10;
	}

	/**
	 * Register screen into WordPress admin area.
	 *
	 * @return void
	 */
	public function register_screen(): void {
		$hook = add_submenu_page(
			Constants::HIDDEN_PAGE_SLUG,
			__( 'Tracking database', 'advanced-ads-tracking' ),
			null,
			'manage_options',
			'advads-tracking-db-page',
			[ $this, 'display' ]
		);

		$this->set_hook( $hook );
	}

	/**
	 * Enqueue assets
	 *
	 * @return void
	 */
	public function enqueue_assets(): void {
		wp_advads_tracking()->registry->enqueue_style( 'jquery-ui' );
		wp_advads_tracking()->registry->enqueue_script( 'screen-database' );
	}

	/**
	 * Display screen content.
	 *
	 * @return void
	 */
	public function display(): void {
		if ( ! current_user_can( 'manage_options' ) ) {
			return;
		}

		$_request = wp_unslash( $_REQUEST );
		if (
			isset( $_request['delete-debug-nonce'] ) &&
			false !== wp_verify_nonce( $_request['delete-debug-nonce'], 'delete-debug-log' ) &&
			file_exists( Debugger::get_debug_file_path() )
		) {
			require_once AA_TRACKING_ABSPATH . 'views/admin/page-database/deleted-ads-form.php';
			return;
		}

		$nonce             = wp_create_nonce( 'advads_tracking_dbop' );
		$impressions_table = Database::get_impression_table();
		$clicks_table      = Database::get_click_table();
		$db_size           = Db_Operations::get_instance()->get_db_size();
		$date_format       = get_option( 'date_format' );
		$deleted_ads       = Db_Operations::get_instance()->get_deleted_ads();
		$debug_option      = get_option( Debugger::DEBUG_OPT, false );
		$debug_ad          = false;
		$debug_time        = [
			'hours' => 0,
			'mins'  => 0,
		];

		if ( $debug_option ) {
			$rem_time            = $debug_option['time'] + ( Debugger::DEBUG_HOURS * 3600 ) - time();
			$debug_time['hours'] = floor( $rem_time / 3600 );
			$debug_time['mins']  = floor( ( $rem_time - ( 3600 * $debug_time['hours'] ) ) / 60 );
		}

		if ( $debug_option && is_numeric( $debug_option['id'] ) ) {
			$debug_ad = get_post( $debug_option['id'] );
		}

		$export_periods_args = [
			'period-options' => Db_Operations::get_instance()->get_export_periods(),
		];

		$remove_periods_args = [
			'custom'         => false,
			'period-options' => Db_Operations::get_instance()->get_remove_periods(),
		];

		$ads_with_any_status = Database::get_all_ads();
		$ads_published       = wp_advads_ad_query(
			[
				'post_status' => [ 'publish' ],
				'orderby'     => 'title',
				'order'       => 'ASC',
			]
		)->posts;

		$delete_debug_link = wp_nonce_url( Helpers::get_database_tool_link(), 'delete-debug-log', 'delete-debug-nonce' );

		include_once AA_TRACKING_ABSPATH . 'views/admin/page-database/db-operations.php';
		$this->display_time();
	}

	/**
	 * Display the time settings
	 *
	 * @return void
	 */
	private function display_time(): void {
		$time_format = _x( 'Y-m-d H:i:s', 'current time format on stats page', 'advanced-ads-tracking' );
		$time_wp     = get_date_from_gmt( gmdate( 'Y-m-d H:i:s' ), $time_format );
		$time_db     = Helpers::get_date_from_db( Helpers::get_timestamp(), $time_format );
		$time_utc    = gmdate( $time_format );

		include_once AA_TRACKING_ABSPATH . 'views/admin/page-database/db-operations-time.php';
	}
}