333 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			333 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
/**
 | 
						|
 * Helper functions that were deprecated and can be removed in future.
 | 
						|
 *
 | 
						|
 * @since 1.8.0
 | 
						|
 */
 | 
						|
 | 
						|
/**
 | 
						|
 * Get formatted [ id => title ] pages list.
 | 
						|
 *
 | 
						|
 * @since 1.7.2
 | 
						|
 * @deprecated 1.7.9
 | 
						|
 *
 | 
						|
 * @todo Move to includes/deprecated.php
 | 
						|
 *
 | 
						|
 * @param array|string $args Array or string of arguments to retrieve pages.
 | 
						|
 *
 | 
						|
 * @return array
 | 
						|
 */
 | 
						|
function wpforms_get_pages_list( $args = [] ) {
 | 
						|
 | 
						|
	_deprecated_function( __FUNCTION__, '1.7.9 of the WPForms plugin' );
 | 
						|
 | 
						|
	$defaults = [
 | 
						|
		'number' => 20,
 | 
						|
	];
 | 
						|
	$args     = wp_parse_args( $args, $defaults );
 | 
						|
	$pages    = get_pages( $args );
 | 
						|
	$list     = [];
 | 
						|
 | 
						|
	if ( empty( $pages ) ) {
 | 
						|
		return $list;
 | 
						|
	}
 | 
						|
 | 
						|
	foreach ( $pages as $page ) {
 | 
						|
		$title             = wpforms_get_post_title( $page );
 | 
						|
		$depth             = count( $page->ancestors );
 | 
						|
		$list[ $page->ID ] = str_repeat( ' ', $depth * 3 ) . $title;
 | 
						|
	}
 | 
						|
 | 
						|
	return $list;
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Dequeue enqueues by URI list.
 | 
						|
 * Parts of URI (e.g. filename) is also supported.
 | 
						|
 *
 | 
						|
 * @since 1.6.1
 | 
						|
 *
 | 
						|
 * @param array|string         $uris     List of URIs or individual URI to dequeue.
 | 
						|
 * @param WP_Scripts|WP_Styles $enqueues Enqueues list to dequeue from.
 | 
						|
 */
 | 
						|
function wpforms_dequeue_by_uri( $uris, $enqueues ) {
 | 
						|
 | 
						|
	if ( empty( $enqueues->queue ) ) {
 | 
						|
		return;
 | 
						|
	}
 | 
						|
 | 
						|
	foreach ( $enqueues->queue as $handle ) {
 | 
						|
 | 
						|
		if ( empty( $enqueues->registered[ $handle ]->src ) ) {
 | 
						|
			continue;
 | 
						|
		}
 | 
						|
 | 
						|
		$src = wp_make_link_relative( $enqueues->registered[ $handle ]->src );
 | 
						|
 | 
						|
		// Support full URLs.
 | 
						|
		$src = site_url( $src );
 | 
						|
 | 
						|
		foreach ( (array) $uris as $uri ) {
 | 
						|
			if ( strpos( $src, $uri ) !== false ) {
 | 
						|
				wp_dequeue_script( $handle );
 | 
						|
				break;
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Dequeue scripts by URI list.
 | 
						|
 * Parts of URI (e.g. filename) is also supported.
 | 
						|
 *
 | 
						|
 * @since 1.6.1
 | 
						|
 *
 | 
						|
 * @param array|string $uris List of URIs or individual URI to dequeue.
 | 
						|
 */
 | 
						|
function wpforms_dequeue_scripts_by_uri( $uris ) {
 | 
						|
 | 
						|
	wpforms_dequeue_by_uri( $uris, wp_scripts() );
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Dequeue styles by URI list.
 | 
						|
 * Parts of URI (e.g. filename) is also supported.
 | 
						|
 *
 | 
						|
 * @since 1.6.1
 | 
						|
 *
 | 
						|
 * @param array|string $uris List of URIs or individual URI to dequeue.
 | 
						|
 */
 | 
						|
function wpforms_dequeue_styles_by_uri( $uris ) {
 | 
						|
 | 
						|
	wpforms_dequeue_by_uri( $uris, wp_styles() );
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Check if form provided contains Page Break, if so give details.
 | 
						|
 *
 | 
						|
 * @since 1.0.0
 | 
						|
 *
 | 
						|
 * @todo It is not used since 1.4.0. Probably, it should be deprecated and suggest using the wpforms_get_pagebreak_details() function.
 | 
						|
 *
 | 
						|
 * @param WP_Post|array $form Form data.
 | 
						|
 *
 | 
						|
 * @return int|bool Pages count or false.
 | 
						|
 */
 | 
						|
function wpforms_has_pagebreak( $form = false ) { // phpcs:ignore Generic.Metrics.CyclomaticComplexity.TooHigh
 | 
						|
 | 
						|
	if ( ! wpforms()->is_pro() ) {
 | 
						|
		return false;
 | 
						|
	}
 | 
						|
 | 
						|
	$form_data = '';
 | 
						|
	$pagebreak = false;
 | 
						|
	$pages     = 1;
 | 
						|
 | 
						|
	if ( is_object( $form ) && ! empty( $form->post_content ) ) {
 | 
						|
		$form_data = wpforms_decode( $form->post_content );
 | 
						|
	} elseif ( is_array( $form ) ) {
 | 
						|
		$form_data = $form;
 | 
						|
	}
 | 
						|
 | 
						|
	if ( empty( $form_data['fields'] ) ) {
 | 
						|
		return false;
 | 
						|
	}
 | 
						|
 | 
						|
	$fields = $form_data['fields'];
 | 
						|
 | 
						|
	foreach ( $fields as $field ) {
 | 
						|
 | 
						|
		if ( $field['type'] === 'pagebreak' && empty( $field['position'] ) ) {
 | 
						|
			$pagebreak = true;
 | 
						|
 | 
						|
			$pages ++;
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	if ( $pagebreak ) {
 | 
						|
		return $pages;
 | 
						|
	}
 | 
						|
 | 
						|
	return false;
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Try to find and return a top or bottom Page Break.
 | 
						|
 *
 | 
						|
 * @since 1.2.1
 | 
						|
 *
 | 
						|
 * @todo It is not used since 1.4.0. Probably, it should be deprecated and suggest using the wpforms_get_pagebreak_details() function.
 | 
						|
 *
 | 
						|
 * @param WP_Post|array $form Form data.
 | 
						|
 * @param string|bool   $type Type of Page Break fields (top, bottom, pages or false).
 | 
						|
 *
 | 
						|
 * @return array|bool
 | 
						|
 */
 | 
						|
function wpforms_get_pagebreak( $form = false, $type = false ) { // phpcs:ignore Generic.Metrics.CyclomaticComplexity.MaxExceeded
 | 
						|
 | 
						|
	if ( ! wpforms()->is_pro() ) {
 | 
						|
		return false;
 | 
						|
	}
 | 
						|
 | 
						|
	$form_data = '';
 | 
						|
 | 
						|
	if ( is_object( $form ) && ! empty( $form->post_content ) ) {
 | 
						|
		$form_data = wpforms_decode( $form->post_content );
 | 
						|
	} elseif ( is_array( $form ) ) {
 | 
						|
		$form_data = $form;
 | 
						|
	}
 | 
						|
 | 
						|
	if ( empty( $form_data['fields'] ) ) {
 | 
						|
		return false;
 | 
						|
	}
 | 
						|
 | 
						|
	$fields = $form_data['fields'];
 | 
						|
	$pages  = [];
 | 
						|
 | 
						|
	foreach ( $fields as $field ) {
 | 
						|
 | 
						|
		if ( $field['type'] !== 'pagebreak' ) {
 | 
						|
			continue;
 | 
						|
		}
 | 
						|
 | 
						|
		$position = ! empty( $field['position'] ) ? $field['position'] : false;
 | 
						|
 | 
						|
		if ( $type === 'pages' && $position !== 'bottom' ) {
 | 
						|
			$pages[] = $field;
 | 
						|
		} elseif ( $position === $type ) {
 | 
						|
			return $field;
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	if ( ! empty( $pages ) ) {
 | 
						|
		return $pages;
 | 
						|
	}
 | 
						|
 | 
						|
	return false;
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Get meta key value for a form field.
 | 
						|
 *
 | 
						|
 * @since 1.1.9
 | 
						|
 *
 | 
						|
 * @param int|string $id        Field ID.
 | 
						|
 * @param string     $key       Meta key.
 | 
						|
 * @param mixed      $form_data Form data array.
 | 
						|
 *
 | 
						|
 * @return string
 | 
						|
 */
 | 
						|
function wpforms_get_form_field_meta( $id = '', $key = '', $form_data = '' ) {
 | 
						|
 | 
						|
	if ( empty( $id ) || empty( $key ) || empty( $form_data ) ) {
 | 
						|
		return '';
 | 
						|
	}
 | 
						|
 | 
						|
	if ( ! empty( $form_data['fields'][ $id ]['meta'][ $key ] ) ) {
 | 
						|
		return $form_data['fields'][ $id ]['meta'][ $key ];
 | 
						|
	}
 | 
						|
 | 
						|
	return '';
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Get an array of all possible provider addons.
 | 
						|
 *
 | 
						|
 * @since 1.5.5
 | 
						|
 *
 | 
						|
 * @return array
 | 
						|
 */
 | 
						|
function wpforms_get_providers_all() {
 | 
						|
 | 
						|
	return [
 | 
						|
		[
 | 
						|
			'name'        => 'ActiveCampaign',
 | 
						|
			'slug'        => 'activecampaign',
 | 
						|
			'img'         => 'addon-icon-activecampaign.png',
 | 
						|
			'plugin'      => 'wpforms-activecampaign/wpforms-activecampaign.php',
 | 
						|
			'plugin_slug' => 'wpforms-activecampaign',
 | 
						|
			'license'     => 'elite',
 | 
						|
		],
 | 
						|
		[
 | 
						|
			'name'        => 'AWeber',
 | 
						|
			'slug'        => 'aweber',
 | 
						|
			'img'         => 'addon-icon-aweber.png',
 | 
						|
			'plugin'      => 'wpforms-aweber/wpforms-aweber.php',
 | 
						|
			'plugin_slug' => 'wpforms-aweber',
 | 
						|
			'license'     => 'pro',
 | 
						|
		],
 | 
						|
		[
 | 
						|
			'name'        => 'Campaign Monitor',
 | 
						|
			'slug'        => 'campaign-monitor',
 | 
						|
			'img'         => 'addon-icon-campaign-monitor.png',
 | 
						|
			'plugin'      => 'wpforms-campaign-monitor/wpforms-campaign-monitor.php',
 | 
						|
			'plugin_slug' => 'wpforms-campaign-monitor',
 | 
						|
			'license'     => 'pro',
 | 
						|
		],
 | 
						|
		[
 | 
						|
			'name'        => 'Drip',
 | 
						|
			'slug'        => 'drip',
 | 
						|
			'img'         => 'addon-icon-drip.png',
 | 
						|
			'plugin'      => 'wpforms-drip/wpforms-drip.php',
 | 
						|
			'plugin_slug' => 'wpforms-drip',
 | 
						|
			'license'     => 'pro',
 | 
						|
		],
 | 
						|
		[
 | 
						|
			'name'        => 'GetResponse',
 | 
						|
			'slug'        => 'getresponse',
 | 
						|
			'img'         => 'addon-icon-getresponse.png',
 | 
						|
			'plugin'      => 'wpforms-getresponse/wpforms-getresponse.php',
 | 
						|
			'plugin_slug' => 'wpforms-getresponse',
 | 
						|
			'license'     => 'pro',
 | 
						|
		],
 | 
						|
		[
 | 
						|
			'name'        => 'Mailchimp',
 | 
						|
			'slug'        => 'mailchimp',
 | 
						|
			'img'         => 'addon-icon-mailchimp.png',
 | 
						|
			'plugin'      => 'wpforms-mailchimp/wpforms-mailchimp.php',
 | 
						|
			'plugin_slug' => 'wpforms-mailchimp',
 | 
						|
			'license'     => 'pro',
 | 
						|
		],
 | 
						|
		[
 | 
						|
			'name'        => 'Salesforce',
 | 
						|
			'slug'        => 'salesforce',
 | 
						|
			'img'         => 'addon-icon-salesforce.png',
 | 
						|
			'plugin'      => 'wpforms-salesforce/wpforms-salesforce.php',
 | 
						|
			'plugin_slug' => 'wpforms-salesforce',
 | 
						|
			'license'     => 'elite',
 | 
						|
		],
 | 
						|
		[
 | 
						|
			'name'        => 'Brevo',
 | 
						|
			'slug'        => 'sendinblue',
 | 
						|
			'img'         => 'addon-icon-brevo.png',
 | 
						|
			'plugin'      => 'wpforms-sendinblue/wpforms-sendinblue.php',
 | 
						|
			'plugin_slug' => 'wpforms-sendinblue',
 | 
						|
			'license'     => 'pro',
 | 
						|
		],
 | 
						|
		[
 | 
						|
			'name'        => 'Zapier',
 | 
						|
			'slug'        => 'zapier',
 | 
						|
			'img'         => 'addon-icon-zapier.png',
 | 
						|
			'plugin'      => 'wpforms-zapier/wpforms-zapier.php',
 | 
						|
			'plugin_slug' => 'wpforms-zapier',
 | 
						|
			'license'     => 'pro',
 | 
						|
		],
 | 
						|
		[
 | 
						|
			'name'        => 'HubSpot',
 | 
						|
			'slug'        => 'hubspot',
 | 
						|
			'img'         => 'addon-icon-hubspot.png',
 | 
						|
			'plugin'      => 'wpforms-hubspot/wpforms-hubspot.php',
 | 
						|
			'plugin_slug' => 'wpforms-hubspot',
 | 
						|
			'license'     => 'pro',
 | 
						|
		],
 | 
						|
		[
 | 
						|
			'name'        => 'ConvertKit',
 | 
						|
			'slug'        => 'convertkit',
 | 
						|
			'img'         => 'addon-icon-convertkit.png',
 | 
						|
			'plugin'      => 'wpforms-convertkit/wpforms-convertkit.php',
 | 
						|
			'plugin_slug' => 'wpforms-convertkit',
 | 
						|
			'license'     => 'pro',
 | 
						|
		],
 | 
						|
	];
 | 
						|
}
 |