PUM_Newsletters::ajax_request()

Submits the form using ajax


Description Description


Source Source

File: classes/Newsletters.php

	public static function ajax_request() {
		self::$errors = new WP_Error;

		$values = isset( $_REQUEST['values'] ) ? $_REQUEST['values'] : array();

		if ( empty( $values['popup_id'] ) && ! empty( $values['pum_form_popup_id'] ) ) {
			$values['popup_id'] = absint( $values['pum_form_popup_id'] );
		}

		// Clean JSON passed values.
		$values = PUM_Utils_Array::fix_json_boolean_values( $values );

		do_action( 'pum_sub_form_ajax_override', $values );

		// Allow sanitization & manipulation of form values prior to usage.
		$values = apply_filters( 'pum_sub_form_sanitization', $values );

		// Allow validation of the data.
		self::$errors = apply_filters( 'pum_sub_form_validation', self::$errors, $values );

		if ( self::$errors->get_error_code() ) {
			self::send_errors( self::$errors );
		}

		$response = array();

		// Process the submission and pass the $response array as a reference variable so data can be added..
		do_action_ref_array( 'pum_sub_form_submission', array( $values, &$response, &self::$errors ) );

		$error_code = self::$errors->get_error_code();

		$already_subscribed = 'already_subscribed' === $error_code;
		$success            = empty( $error_code ) || $already_subscribed ? true : false;

		if ( ! $success && ! $already_subscribed ) {
			do_action( 'pum_sub_form_errors', $values, self::$errors );

			switch ( $error_code ) {
				case 'api_errors':
					$response['message'] = pum_get_newsletter_provider_message( $values['provider'], 'error', $values );
					break;

			}
			self::send_errors( self::$errors, $response );
		} else {
			do_action( 'pum_sub_form_success', $values );

			if ( $already_subscribed ) {
				$response['already_subscribed'] = true;
			}

			$response["message"] = pum_get_newsletter_provider_message( $values['provider'], $already_subscribed ? 'already_subscribed' : 'success', $values );
			self::send_success( $response );
		}
		// Don't let it keep going.
		die();
	}


Top ↑

User Contributed Notes User Contributed Notes

You must log in before being able to contribute a note or feedback.