Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 24 additions & 18 deletions classes/controllers/FrmAddonsController.php
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,14 @@ public static function load_admin_hooks() {
add_action( 'admin_menu', self::class . '::menu', 100 );
add_filter( 'pre_set_site_transient_update_plugins', self::class . '::check_update' );

if ( FrmAppHelper::is_admin_page( 'formidable-addons' ) ) {
self::$request_addon_url = 'https://connect.formidableforms.com/add-on-request/';

add_action( 'admin_enqueue_scripts', self::class . '::enqueue_assets', 15 );
add_filter( 'frm_show_footer_links', '__return_false' );
if ( ! FrmAppHelper::is_admin_page( 'formidable-addons' ) ) {
return;
}

self::$request_addon_url = 'https://connect.formidableforms.com/add-on-request/';

add_action( 'admin_enqueue_scripts', self::class . '::enqueue_assets', 15 );
add_filter( 'frm_show_footer_links', '__return_false' );
}

/**
Expand Down Expand Up @@ -660,18 +662,20 @@ protected static function fill_update_addon_info( $installed_addons ) {

$download_id = $plugin['id'] ?? 0;

if ( $download_id && ! isset( $version_info[ $download_id ]['package'] ) ) {
// If this addon is using its own license, get the update url
$addon_info = $api->get_api_info();
if ( ! $download_id || isset( $version_info[ $download_id ]['package'] ) ) {
continue;
}

$version_info[ $download_id ] = $addon_info[ $download_id ];
// If this addon is using its own license, get the update url
$addon_info = $api->get_api_info();

if ( isset( $addon_info['error'] ) ) {
$version_info[ $download_id ]['error'] = array(
'message' => $addon_info['error']['message'],
'code' => $addon_info['error']['code'],
);
}
$version_info[ $download_id ] = $addon_info[ $download_id ];

if ( isset( $addon_info['error'] ) ) {
$version_info[ $download_id ]['error'] = array(
'message' => $addon_info['error']['message'],
'code' => $addon_info['error']['code'],
);
}
Comment thread
Crabcyborg marked this conversation as resolved.
}//end foreach

Expand Down Expand Up @@ -1277,10 +1281,12 @@ private static function get_activating_page() {
protected static function install_addon_permissions() {
check_ajax_referer( 'frm_ajax', 'nonce' );

if ( ! current_user_can( 'activate_plugins' ) || ! self::get_current_plugin() ) {
echo json_encode( true );
wp_die();
if ( current_user_can( 'activate_plugins' ) && self::get_current_plugin() ) {
return;
}

echo json_encode( true );
wp_die();
}

/**
Expand Down
72 changes: 40 additions & 32 deletions classes/controllers/FrmAppController.php
Original file line number Diff line number Diff line change
Expand Up @@ -642,22 +642,24 @@ public static function admin_init() {

self::trigger_page_load_hooks();

if ( FrmAppHelper::is_admin_page( 'formidable' ) ) {
// Redirect to the "Form Templates" page if the 'frm_action' parameter matches specific actions.
// This provides backward compatibility for old addons that use legacy modal templates.
$action = FrmAppHelper::get_param( 'frm_action' );
$trigger_name_modal = FrmAppHelper::get_param( 'triggerNewFormModal' );

if ( $trigger_name_modal || in_array( $action, array( 'add_new', 'list_templates' ), true ) ) {
$application_id = FrmAppHelper::simple_get( 'applicationId', 'absint' );
$url_param = $application_id ? '&applicationId=' . $application_id : '';

wp_safe_redirect( admin_url( 'admin.php?page=' . FrmFormTemplatesController::PAGE_SLUG . $url_param ) );
exit;
}
if ( ! FrmAppHelper::is_admin_page( 'formidable' ) ) {
return;
}

// Redirect to the "Form Templates" page if the 'frm_action' parameter matches specific actions.
// This provides backward compatibility for old addons that use legacy modal templates.
$action = FrmAppHelper::get_param( 'frm_action' );
$trigger_name_modal = FrmAppHelper::get_param( 'triggerNewFormModal' );

if ( $trigger_name_modal || in_array( $action, array( 'add_new', 'list_templates' ), true ) ) {
$application_id = FrmAppHelper::simple_get( 'applicationId', 'absint' );
$url_param = $application_id ? '&applicationId=' . $application_id : '';

FrmInbox::maybe_disable_screen_options();
wp_safe_redirect( admin_url( 'admin.php?page=' . FrmFormTemplatesController::PAGE_SLUG . $url_param ) );
exit;
}

FrmInbox::maybe_disable_screen_options();
}

/**
Expand Down Expand Up @@ -996,10 +998,12 @@ private static function maybe_deregister_popper1() {

$popper = $wp_scripts->registered['popper'];

if ( version_compare( $popper->ver, '2.0', '<' ) ) {
wp_deregister_script( 'popper' );
self::register_popper2();
if ( ! version_compare( $popper->ver, '2.0', '<' ) ) {
return;
}

wp_deregister_script( 'popper' );
self::register_popper2();
}

/**
Expand Down Expand Up @@ -1548,19 +1552,21 @@ private static function remember_custom_sort() {
$current_sort = $current_sort[ $form_id ];
}

if ( $new_sort !== $current_sort ) {
$new_meta = $new_sort;
if ( $new_sort === $current_sort ) {
return;
}

if ( $is_entry_list && $form_id && is_int( $form_id ) ) {
// Index meta by form ID.
$temp_meta = is_array( $previous_meta ) ? $previous_meta : array();
$temp_meta[ $form_id ] = $new_meta;
$new_meta = $temp_meta;
unset( $temp_meta );
}
$new_meta = $new_sort;

update_user_meta( $user_id, $meta_key, $new_meta );
if ( $is_entry_list && $form_id && is_int( $form_id ) ) {
// Index meta by form ID.
$temp_meta = is_array( $previous_meta ) ? $previous_meta : array();
$temp_meta[ $form_id ] = $new_meta;
$new_meta = $temp_meta;
unset( $temp_meta );
}

update_user_meta( $user_id, $meta_key, $new_meta );
}

/**
Expand Down Expand Up @@ -1588,12 +1594,14 @@ public static function apply_saved_sort_preference( &$orderby, &$order ) {
$preferred_list_sort = $preferred_list_sort[ $form_id ];
}

if ( is_array( $preferred_list_sort ) && ! empty( $preferred_list_sort['orderby'] ) ) {
$orderby = $preferred_list_sort['orderby'];
if ( ! is_array( $preferred_list_sort ) || empty( $preferred_list_sort['orderby'] ) ) {
return;
}

if ( ! empty( $preferred_list_sort['order'] ) ) {
$order = $preferred_list_sort['order'];
}
$orderby = $preferred_list_sort['orderby'];

if ( ! empty( $preferred_list_sort['order'] ) ) {
$order = $preferred_list_sort['order'];
}
}

Expand Down
16 changes: 10 additions & 6 deletions classes/controllers/FrmDashboardController.php
Original file line number Diff line number Diff line change
Expand Up @@ -489,10 +489,12 @@ private static function get_youtube_embed_video( $entries_count ) {
private static function save_subscribed_email( $email ) {
$subscribed_emails = self::get_subscribed_emails();

if ( ! in_array( $email, $subscribed_emails, true ) ) {
$subscribed_emails[] = $email;
self::update_dashboard_options( $subscribed_emails, 'inbox-subscribed-emails' );
if ( in_array( $email, $subscribed_emails, true ) ) {
return;
}

$subscribed_emails[] = $email;
self::update_dashboard_options( $subscribed_emails, 'inbox-subscribed-emails' );
}

/**
Expand Down Expand Up @@ -553,9 +555,11 @@ private static function add_welcome_closed_banner_user_id() {
$users_list = self::get_closed_welcome_banner_user_ids();
$user_id = get_current_user_id();

if ( ! in_array( $user_id, $users_list, true ) ) {
$users_list[] = $user_id;
self::update_dashboard_options( $users_list, 'closed-welcome-banner-user-ids' );
if ( in_array( $user_id, $users_list, true ) ) {
return;
}

$users_list[] = $user_id;
self::update_dashboard_options( $users_list, 'closed-welcome-banner-user-ids' );
}
}
46 changes: 26 additions & 20 deletions classes/controllers/FrmEntriesController.php
Original file line number Diff line number Diff line change
Expand Up @@ -410,10 +410,12 @@ public static function update_hidden_cols( $meta_id, $object_id, $meta_key, $met
unset( $form_prefix );
}

if ( $save ) {
$user_id = get_current_user_id();
update_user_option( $user_id, $this_page_name, $meta_value, true );
if ( ! $save ) {
return;
}

$user_id = get_current_user_id();
update_user_option( $user_id, $this_page_name, $meta_value, true );
}

/**
Expand Down Expand Up @@ -790,26 +792,28 @@ public static function process_entry( $errors = '', $ajax = false ) {

$frm_vars['created_entries'][ $form_id ] = array( 'errors' => $errors );

if ( ! $errors ) {
$_POST['frm_skip_cookie'] = 1;
$do_success = false;
if ( $errors ) {
return;
}

if ( $params['action'] === 'create' ) {
if ( apply_filters( 'frm_continue_to_create', true, $form_id ) && ! isset( $frm_vars['created_entries'][ $form_id ]['entry_id'] ) ) {
$frm_vars['created_entries'][ $form_id ]['entry_id'] = FrmEntry::create( $_POST ); // phpcs:ignore WordPress.Security.NonceVerification.Missing
$_POST['frm_skip_cookie'] = 1;
$do_success = false;

$params['id'] = $frm_vars['created_entries'][ $form_id ]['entry_id'];
$do_success = true;
}
if ( $params['action'] === 'create' ) {
if ( apply_filters( 'frm_continue_to_create', true, $form_id ) && ! isset( $frm_vars['created_entries'][ $form_id ]['entry_id'] ) ) {
$frm_vars['created_entries'][ $form_id ]['entry_id'] = FrmEntry::create( $_POST ); // phpcs:ignore WordPress.Security.NonceVerification.Missing

$params['id'] = $frm_vars['created_entries'][ $form_id ]['entry_id'];
$do_success = true;
}
}

do_action( 'frm_process_entry', $params, $errors, $form, array( 'ajax' => $ajax ) );
do_action( 'frm_process_entry', $params, $errors, $form, array( 'ajax' => $ajax ) );

if ( $do_success ) {
FrmFormsController::maybe_trigger_redirect( $form, $params, array( 'ajax' => $ajax ) );
}
unset( $_POST['frm_skip_cookie'] ); // phpcs:ignore WordPress.Security.NonceVerification.Missing
if ( $do_success ) {
FrmFormsController::maybe_trigger_redirect( $form, $params, array( 'ajax' => $ajax ) );
}
unset( $_POST['frm_skip_cookie'] ); // phpcs:ignore WordPress.Security.NonceVerification.Missing
}

/**
Expand Down Expand Up @@ -865,10 +869,12 @@ private static function _delete_entry( $entry_id, $form ) {

FrmAppHelper::unserialize_or_decode( $form->options );

if ( ! empty( $form->options['no_save'] ) ) {
self::unlink_post( $entry_id );
FrmEntry::destroy( $entry_id );
if ( empty( $form->options['no_save'] ) ) {
return;
}

self::unlink_post( $entry_id );
FrmEntry::destroy( $entry_id );
}

/**
Expand Down
20 changes: 12 additions & 8 deletions classes/controllers/FrmFieldsController.php
Original file line number Diff line number Diff line change
Expand Up @@ -868,10 +868,12 @@ private static function maybe_add_error_html_for_js_validation( $field, array &$

$error_body = self::pull_custom_error_body_from_custom_html( $form, $field );

if ( false !== $error_body ) {
$error_body = urlencode( $error_body );
$add_html['data-error-html'] = 'data-error-html="' . esc_attr( $error_body ) . '"';
if ( false === $error_body ) {
return;
}

$error_body = urlencode( $error_body );
$add_html['data-error-html'] = 'data-error-html="' . esc_attr( $error_body ) . '"';
}

/**
Expand Down Expand Up @@ -1038,12 +1040,14 @@ private static function add_pattern_attribute( $field, array &$add_html ) {
$has_format = $format_value && ! FrmCurrencyHelper::is_currency_format( $format_value );
$format_field = FrmField::is_field_type( $field, 'text' );

if ( $field['type'] === 'phone' || ( $has_format && $format_field ) ) {
$format = FrmEntryValidate::phone_format( $field );
$format = substr( $format, 2, - 1 );

$add_html['pattern'] = 'pattern="' . esc_attr( $format ) . '"';
if ( $field['type'] !== 'phone' && ( ! $has_format || ! $format_field ) ) {
return;
}

$format = FrmEntryValidate::phone_format( $field );
$format = substr( $format, 2, - 1 );

$add_html['pattern'] = 'pattern="' . esc_attr( $format ) . '"';
}

/**
Expand Down
10 changes: 6 additions & 4 deletions classes/controllers/FrmFormTemplatesController.php
Original file line number Diff line number Diff line change
Expand Up @@ -154,11 +154,13 @@ public static function load_admin_hooks() {
add_action( 'admin_footer', self::class . '::render_modal' );
add_filter( 'frm_form_nav_list', self::class . '::append_new_template_to_nav', 10, 2 );

if ( self::is_templates_page() ) {
add_action( 'admin_init', self::class . '::set_form_templates_data' );
add_action( 'admin_enqueue_scripts', self::class . '::enqueue_assets', 15 );
add_filter( 'frm_show_footer_links', '__return_false' );
if ( ! self::is_templates_page() ) {
return;
}

add_action( 'admin_init', self::class . '::set_form_templates_data' );
add_action( 'admin_enqueue_scripts', self::class . '::enqueue_assets', 15 );
add_filter( 'frm_show_footer_links', '__return_false' );
}

/**
Expand Down
Loading
Loading