<?php

namespace SovereignStack\SecuritySafe;

if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly

require_once( SECSAFE_DIR_ADMIN_TABLES . '/Table.php' );

/**
 * Class Table404s
 *
 * @package SecuritySafe
 */
final class Table404s extends Table {

	/**
	 * Get a list of columns. The format is:
	 * 'internal-name' => 'Title'
	 *
	 * @package WordPress
	 * @since   3.1.0
	 * @abstract
	 *
	 * @return array
	 */
	function get_columns() {

		return [
			'date' => __( 'Date / Time', 'security-safe' ),
			'uri' => __( 'URL', 'security-safe' ),
			'user_agent' => __( 'User Agent', 'security-safe' ),
			'referer' => __( 'HTTP Referer', 'security-safe' ),
			'ip' => __( 'IP Address', 'security-safe' ),
			'status' => __( 'Status', 'security-safe' ),
			'threats' => __( 'Threat', 'security-safe' ),
		];
	}

	public function display_charts() {

		if( $this->hide_charts() ) {
			return;
		}

		$days = 30;
		$days_ago = $days - 1;

		$charts = [];

		$columns = [
			[
				'id' => 'errors',
				'label' => __( '404 Errors', 'security-safe' ),
				'color' => '#dc3232',
				'type' => 'area-spline',
				'db' => '404s',

			],
		];

		$charts[] = [
			'id' => 'chart-line',
			'type' => 'line',
			'columns' => $columns,
			'y-label' => __( '# 404 Errors', 'security-safe' ),
		];

		$args = [
			'date_start' => date( 'Y-m-d 00:00:00', strtotime( '-' . $days_ago . ' days' ) ),
			'date_end' => date( 'Y-m-d 23:59:59', time() ),
			'date_days' => $days,
			'date_days_ago' => $days_ago,
			'charts' => $charts,
		];

		echo '
    <div class="table">
        <div class="tr">

            <div class="chart chart-404s-line td td-12 center">

                <h3>' . esc_html(sprintf( __( '404 Errors Over The Past %d Days', 'security-safe' ), $days )) . '</h3>
                <p>' . esc_html(substr( $args['date_start'], 0, 10 ) . ' - ' . substr( $args['date_end'], 0, 10 )) . '
                <div id="chart-line"></div>

            </div>

        </div>
    </div>';

		// Load Charts
		Admin::load_charts( $args );
	}

	/**
	 * Set the type of data to display
	 *
	 * @since  2.0.0
	 */
	protected function set_type() {

		$this->type = '404s';
	}

	/**
	 * Get the array of searchable columns in the database
	 *
	 * @since  2.0.0
	 * @return  array An unassociated array.
	 */
	protected function get_searchable_columns() {

		return [
			'uri',
			'ip',
			'referer',
		];
	}

	protected function get_status() {

		return [
			//  'value'     => 'label'
			'blocked' => __( 'Blocked', 'security-safe' ),
		];
	}

	/**
	 * Add filters and per_page options
	 */
	protected function bulk_actions( $which = '' ) {

		$this->bulk_actions_load( $which );
	}
}
