<?php
/**
 * In dieser Datei werden zusätzliche Zeiten zur Synchronisation in WP Filter angelegt
 * und die Funktionen der automatischen Synchronisation definiert.
 */

$admin = new \wpi\wpi_classes\AdminClass();

$pro = $admin ::versionStatus();

if ( ! $pro ) {
	return;
}

add_filter( 'cron_schedules', 'wpi_cron_schedules' );
add_action( 'wpi_time_event', 'wpi_do_this_on_time' );


// WP-Cron Filter Zeit von 15Min. und 30 Min. setzen

// add custom time to cron
function wpi_cron_schedules( $schedules ) {

	$schedules[ 'half_hour' ]        = array(
		'interval' => 1800, // seconds
		'display'  => __( 'Halbe Stunde' )
	);
	$schedules[ 'fiveteen_minutes' ] = array(
		'interval' => 900, // seconds
		'display'  => __( '15 Min.' )
	);

	return $schedules;
}


// Prüfen ob Shedule bereits registriert ist, wenn nicht registrieren.
add_action( 'wp', 'wpi_setup_schedule' );
function wpi_setup_schedule() {
	$shedule_time = get_option( 'wpi_shedule_time' ); // Abrufen der eingestellten Werte
	if ( ! wp_next_scheduled( 'wpi_time_event' ) ) {
		wp_schedule_event( time(), $shedule_time, 'wpi_time_event' );
	}
	if ( ! wp_next_scheduled( 'wpi_check_status' ) ) {
		wp_schedule_event( time(), 'hourly', 'wpi_check_status' );
	}
}


// An einem registrierten shedule, Befehle ausführen.

function wpi_do_this_on_time() {
	// Hier kommen die Befehle der Synchronisation etc. hin.

	$xml_file_array         = wpi_xml_auslesen(); //Funktion definiert in wpi_unzip_functions.php
	$GLOBALS[ 'xml_array' ] = wpi_xml_array( $xml_file_array ); //Funktion definiert in wpi_create_posts.php
	wpi_xml_standard();
}


add_action( 'wpi_check_status', 'wpi_do_license_validation' );

function wpi_do_license_validation() {
	$licence     = get_option( 'wpi_licence', '' );
	$admin_email = get_option( 'wpi_admin', '' ) ?: get_option( 'admin_email' );
	$domain      = home_url( '/' );

	$response = wp_remote_get(
		'https://media-store.net/wp-json/wp/v2/wpmi/validateUser_v2',
		array(
			'timeout' => 15,
			'body'    => array(
				'licence' => $licence,
				'email'   => $admin_email,
				'domain'  => $domain,
			),
		)
	);

	if ( is_wp_error( $response ) ) {
		return;
	}

	$body = json_decode( wp_remote_retrieve_body( $response ), true );

	if (
		isset( $body['status'], $body['valid'] ) &&
		$body['status'] == '1' &&
		$body['valid'] == 'true'
	) {
		update_option( 'wpi_pro', 'true' );
	} else {
		update_option( 'wpi_pro', 'false' );
	}
}