<?php
/**
 * AJAX Functions
 *
 * Process AJAX actions.
 *
 * @copyright   Copyright (c) 2016, Jeffrey Carandang
 * @since       4.0
 */
// Exit if accessed directly
if ( ! defined( 'ABSPATH' ) ) exit;

/**
 * Save Options
 *
 * @since 1.0
 * @return void
 */
function widgetopts_ajax_save_settings(){
    $response = array( 'errors' => array() );

	if( !isset( $_POST['method'] ) ) return;
	if( !isset( $_POST['nonce'] ) ) return;

	if ( ! wp_verify_nonce( $_POST['nonce'], 'widgetopts-settings-nonce' ) ) {
		return;
	}

	switch ( $_POST['method'] ) {
		case 'activate':
		case 'deactivate':
				if( !isset( $_POST['module'] ) ) return;

				//update options
				update_option( 'widgetopts_tabmodule-' . sanitize_text_field( $_POST['module'] ), sanitize_text_field( $_POST['method'] ) );

				//update global variable
				widgetopts_update_option( sanitize_text_field( $_POST['module'] ), sanitize_text_field( $_POST['method'] ) );
			break;

		case 'save':
				$response['messages'] = array( __( 'Settings saved successfully.', 'widget-options' ) );
				if( !isset( $_POST['data'] ) ) return;
				parse_str( $_POST['data']['--widgetopts-form-serialized-data'], $params );
				$sanitized = widgetopts_sanitize_array( $params );
				update_option( 'widgetopts_tabmodule-settings', maybe_serialize( $sanitized ) );

				//reset options
				widgetopts_update_option( 'settings', $sanitized );
			break;

			case 'deactivate_license':
					global $extended_license;
					$license = sanitize_text_field( $_POST['data']['license-data'] );
					if( !empty( $license ) ){

						if( isset( $_POST['data']['shortname'] ) ){
							$item_shortname = sanitize_text_field( $_POST['data']['shortname'] );
						}else{
							$item_shortname = 'widgetopts_' . preg_replace( '/[^a-zA-Z0-9_\s]/', '', str_replace( ' ', '_', strtolower( WIDGETOPTS_PLUGIN_NAME ) ) );
						}
						switch ( $item_shortname ) {
							case 'widgetopts_sliding_widget_options':
								global $widgetopts_sliding_license;
								$data = $widgetopts_sliding_license->deactivate_license( $license );
								break;

							default:
								$data = $extended_license->deactivate_license( $license );
								break;
						}

						$response['button'] = sanitize_text_field( $_POST['data']['button'] );
						if( $data == 'deactivated' ){

							$optiondata = get_option( 'widgetopts_license_keys' );
							$name = str_replace( 'widgetopts-license-btn-', '', sanitize_text_field( $_POST['data']['button'] ) );
							$optiondata[ $name ] = '';
							update_option( 'widgetopts_license_keys', $optiondata );

							//remove license key on option
							delete_option( $item_shortname . '_license_key' );

							$response['messages'] = array( __( 'Successfully Deactivated.', 'widget-options' ) );
						}else{
							$response['messages'] = array( __( 'Deactivation Failed.', 'widget-options' ) );
						}
						$response['success'] = $data;
					}

				break;

		default:
			# code...
			break;
	}
	$response['source'] 	= 'WIDGETOPTS_Response';
	$response['response'] 	= 'success';
	$response['closeModal'] = true;
	$response 				= (object) $response;

	//let devs do there action
	do_action( 'widget_options_before_ajax_print', sanitize_text_field( $_POST['method'] ) );

	echo json_encode( $response );
	die();
}
add_action( 'wp_ajax_widgetopts_ajax_settings',  'widgetopts_ajax_save_settings' );

/* Hide the rating div
 * @return json string
 *
 */
if( !function_exists( 'widgetopts_ajax_hide_rating' ) ):
	function widgetopts_ajax_hide_rating(){
	    update_option('widgetopts_RatingDiv','yes');
	    echo json_encode(array("success")); exit;
	}
	add_action( 'wp_ajax_widgetopts_hideRating', 'widgetopts_ajax_hide_rating' );
endif;
?>
