Repeatable_Field()
Description #
The ap_get_repeatable_field ajax callback.
Source #
File: ajax/repeatable-field.php
class Repeatable_Field extends \AnsPress\Classes\Ajax {
	/**
	 * Instance of this class.
	 *
	 * @var null|Repeatable_Field
	 */
	protected static $instance;
	/**
	 * The class constructor.
	 *
	 * Set requests and nonce key.
	 */
	protected function __construct() {
		$this->req( 'form_name', ap_sanitize_unslash( 'form_name', 'r' ) );
		$this->req( 'field_name', ap_sanitize_unslash( 'field_name', 'r' ) );
		$this->req( 'current_groups', ap_sanitize_unslash( 'current_groups', 'r' ) );
		$this->nonce_key = 'repeatable-field';
		// Call parent.
		parent::__construct();
	}
	/**
	 * Verify user permission.
	 *
	 * @return void
	 */
	protected function verify_permission() {
		$form_name = $this->req( 'form_name' );
		if ( empty( $form_name ) ) {
			parent::verify_permission();
		}
	}
	/**
	 * Handle ajax for logged in users.
	 *
	 * @return void
	 */
	public function logged_in() {
		$field_name     = $this->req( 'field_name' );
		$current_groups = $this->req( 'current_groups' );
		$_REQUEST[ $field_name . '-g' ] = $current_groups;
		$_REQUEST[ $field_name . '-n' ] = ap_sanitize_unslash( 'current_nonce', 'r' );
		$form  = anspress()->get_form( 'question' );
		$field = $form->find( $field_name, false, 'field_name' );
		if ( ! empty( $field ) && is_object( $field ) ) {
			if ( $field->get_last_field() ) {
				$this->set_success();
				$this->add_res( 'html', $field->get_last_field()->output() );
				$this->add_res( 'nonce', wp_create_nonce( $field_name . ( $current_groups + 1 ) ) );
			}
		}
	}
}
Expand full source code Collapse full source code View on GitHub: ajax/repeatable-field.php:24
  Add your comment