<?php
/**
 * Plugin Name:     Easy Digital Downloads - GetResponse
 * Plugin URI:      https://easydigitaldownloads.com/downloads/getresponse/
 * Description:     Include a GetResponse signup option with your Easy Digital Downloads checkout.
 * Version:         2.1.7
 * Author:          Easy Digital Downloads
 * Author URI:      https://easydigitaldownloads.com
 * Text Domain:     edd-getresponse
 *
 * @package         EDD\GetResponse
 * @author          Easy Digital Downloads <support@easydigitaldownloads.com>
 * @copyright       Copyright (c) 2018 Easy Digital Downloads, LLC
 */


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

// Plugin version
define( 'EDD_GETRESPONSE_VERSION', '2.1.7' );

if ( ! class_exists( 'EDD_GetResponse' ) ) {


	/**
	 * Main EDD_GetResponse class
	 *
	 * @since       1.0.3
	 */
	class EDD_GetResponse {

		/**
		 * @var         EDD_GetResponse $instance The one true EDD_GetResponse
		 * @since       1.0.3
		 */
		private static $instance;

		/**
		 * @var         EDD_GetResponse_Newsletter $newsletter The newsletter instance
		 * @since       2.0.0
		 */
		public $newsletter;

		/**
		 * Get active instance
		 *
		 * @access      public
		 * @since       1.0.3
		 * @return      object self::$instance The one true EDD_GetResponse
		 */
		public static function instance() {
			if ( ! self::$instance ) {
				self::$instance = new EDD_GetResponse();
				self::$instance->setup_constants();
				self::$instance->includes();
				self::$instance->hooks();
				self::$instance->newsletter = EDD_GetResponse_Newsletter::instance();

				self::$instance->newsletter->init();

			}

			return self::$instance;
		}


		/**
		 * Setup plugin constants
		 *
		 * @access      private
		 * @since       1.0.7
		 * @return      void
		 */
		public function setup_constants() {
			// Plugin path
			define( 'EDD_GETRESPONSE_DIR', plugin_dir_path( __FILE__ ) );

			// Plugin URL
			define( 'EDD_GETRESPONSE_URL', plugin_dir_url( __FILE__ ) );

			// GetResponse API URL
			define( 'EDD_GETRESPONSE_API_URL', 'https://api.getresponse.com/v3' );
		}


		/**
		 * Include necessary files
		 *
		 * @access      private
		 * @since       1.1.1
		 * @return      void
		 */
		private function includes() {
			require_once EDD_GETRESPONSE_DIR . '/includes/class-edd-getresponse-newsletter.php';

			if ( is_admin() ) {
				require_once EDD_GETRESPONSE_DIR . '/includes/upgrades.php';
				require_once EDD_GETRESPONSE_DIR . '/includes/deprecated-functions.php';
			}
		}

		/**
		 * Run action and filter hooks
		 *
		 * @access      private
		 * @since       1.0.3
		 * @return      void
		 */
		private function hooks() {
			// Handle licensing
			if ( class_exists( '\\EDD\\Extensions\\ExtensionRegistry' ) ) {
				add_action( 'edd_extension_license_init', function( \EDD\Extensions\ExtensionRegistry $registry ) {
					$registry->addExtension( __FILE__, 'GetResponse', 33826, EDD_GETRESPONSE_VERSION );
				} );
			} elseif ( class_exists( 'EDD_License' ) ) {
				$license = new EDD_License( __FILE__, 'GetResponse', EDD_GETRESPONSE_VERSION, 'Easy Digital Downloads', null, null, 33826 );
			}
		}


		/**
		 * Internationalization
		 *
		 * @deprecated 2.1.7 due to internationalization being handled by the base newsletter class.
		 * @access      public
		 * @since       1.0.3
		 * @return      void
		 */
		public static function load_textdomain() {
			// Set filter for languages directory
			$lang_dir = dirname( plugin_basename( __FILE__ ) ) . '/languages/';
			$lang_dir = apply_filters( 'edd_getresponse_languages_directory', $lang_dir );

			// Traditional WordPress plugin locale filter
			$locale = apply_filters( 'plugin_locale', get_locale(), 'edd-getresponse' );
			$mofile = sprintf( '%1$s-%2$s.mo', 'edd-getresponse', $locale );

			// Setup paths to current locale file
			$mofile_local  = $lang_dir . $mofile;
			$mofile_global = WP_LANG_DIR . '/edd-getresponse/' . $mofile;

			if( file_exists( $mofile_global ) ) {
				// Look in global /wp-content/languages/edd-getresponse/ folder
				load_textdomain( 'edd-getresponse', $mofile_global );
			} elseif( file_exists( $mofile_local ) ) {
				// Look in local /wp-content/plugins/edd-getresponse/languages/ folder
				load_textdomain( 'edd-getresponse', $mofile_local );
			} else {
				// Load the default language files
				load_plugin_textdomain( 'edd-getresponse', false, $lang_dir );
			}
		}
	}
}

/**
 * The main function responsible for returning the one true EDD_GetResponse
 * instance to functions everywhere
 *
 * @since       1.0.3
 * @return      \EDD_GetResponse The one true EDD_GetResponse
 */
function edd_getresponse() {
	return EDD_GetResponse::instance();
}

require_once dirname( __FILE__ ) . '/vendor/autoload.php';
\EDD\ExtensionUtils\v1\ExtensionLoader::loadOrQuit( __FILE__, 'edd_getresponse', array(
	'php'                    => '5.3',
	'easy-digital-downloads' => '2.9',
) );

/**
 * Install initial settings on activation
 *
 * @since 2.1.3
 * @return void
 */
function edd_getresponse_install() {
	update_option( 'edd_getresponse_version', EDD_GETRESPONSE_VERSION );
}
register_activation_hook( __FILE__, 'edd_getresponse_install' );
