
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
<?php
/**
 * The public-facing functionality of the plugin.
 *
 * @link       https://codesupply.co
 * @since      1.0.0
 *
 * @package    Basic MailChimp
 * @subpackage Public
 */

/**
 * The public-facing functionality of the plugin.
 *
 * Defines the plugin name, version, and two examples hooks for how to
 * enqueue the admin-specific stylesheet and JavaScript.
 *
 * @package    Basic MailChimp
 * @subpackage Basic_MailChimp/public
 * @author     Code Supply Co. <hello@codesupply.co>
 */
class Basic_MailChimp_Public {

	/**
	 * The ID of this plugin.
	 *
	 * @since    1.0.0
	 * @access   private
	 * @var      string    $plugin_name    The ID of this plugin.
	 */
	private $plugin_name;

	/**
	 * The version of this plugin.
	 *
	 * @since    1.0.0
	 * @access   private
	 * @var      string    $version    The current version of this plugin.
	 */
	private $version;

	/**
	 * Initialize the class and set its properties.
	 *
	 * @since 1.0.0
	 * @param string $plugin_name  The name of the plugin.
	 * @param string $version      The version of this plugin.
	 */
	public function __construct( $plugin_name, $version ) {

		$this->plugin_name = $plugin_name;
		$this->version = $version;
	}

	/**
	 * Register the stylesheets for the public-facing side of the site.
	 *
	 * @since    1.0.0
	 */
	public function enqueue_styles() {

		// Basic MailChimp Styles.
		$bmc_enqueue = apply_filters( 'bmc_enqueue_styles', true );
		if ( $bmc_enqueue ) {
			wp_register_style( 'bmc_css', plugin_dir_url( __FILE__ ) . 'css/basic-mailchimp-public.css', false, $this->version, 'screen' );
			wp_enqueue_style( 'bmc_css' );
		}
	}

	/**
	 * Register the JavaScript for the public-facing side of the site.
	 *
	 * @since    1.0.0
	 */
	public function enqueue_scripts() {
		wp_register_script( 'bmc_js', plugin_dir_url( __FILE__ ) . 'js/basic-mailchimp-public.js', array( 'jquery' ), $this->version );
		wp_enqueue_script( 'bmc_js' );

		wp_localize_script( 'bmc_js', 'wp_data', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
	}

	/**
	 * Add user mailchimp.
	 *
	 * @since    1.0.0
	 */
	public function bmc_mailchimp_adduser() {
		if ( isset( $_POST['bmc_mailchimp_action'] ) && ! wp_verify_nonce( wp_unslash( $_POST['bmc_mailchimp_action'] ),'bmc_mailchimp_nonce' ) ) { // Input var ok; sanitization ok.
			return;
		}

		if ( isset( $_POST['list_id'] ) ) { // Input var ok.
			$list_id = sanitize_text_field( wp_unslash( $_POST['list_id'] ) ); // Input var ok.
		}

		if ( isset( $_POST['EMAIL'] ) ) { // Input var ok.
			$email = sanitize_email( wp_unslash( $_POST['EMAIL'] ) ); // Input var ok.
		}

		if ( ! isset( $list_id ) || ! $list_id ) {
			wp_send_json_error( esc_html__( 'Error with list_id!', 'basic-mailchimp' ) );
		}

		if ( ! isset( $email ) || ! $email || ! filter_var( $email, FILTER_VALIDATE_EMAIL ) ) {
			wp_send_json_error( esc_html__( 'Invalid Email!', 'basic-mailchimp' ) );
		}

		$token = get_option( 'bmc_mailchimp_token' );

		if ( $token ) {

			$mail_chimp = new MailChimp( $token );

			if ( get_option( 'bmc_double_optin', false ) ) {
				$status = 'pending';
			} else {
				$status = 'subscribed';
			}

			$result = $mail_chimp->post( "lists/$list_id/members", array(
				'email_address' => $email,
				'status'        => $status,
			) );

			if ( $mail_chimp->success() ) {

				wp_send_json_success( esc_html__( 'You have successfully subscribed!', 'basic-mailchimp' ) );

			} elseif ( isset( $result['title'] ) && 'Member Exists' === $result['title'] ) {

				wp_send_json_error( esc_html__( 'You are already subscribed!', 'basic-mailchimp' ) );

			} else {

				wp_send_json_error( $mail_chimp->getLastError() );

			}
		}

		wp_die();
	}
}
