plugin updates

This commit is contained in:
Tony Volpe
2024-08-07 16:35:46 +00:00
parent 8734babf54
commit 36dc023d6d
195 changed files with 11094 additions and 2509 deletions

View File

@@ -3,7 +3,7 @@
Plugin Name: Gravity Forms
Plugin URI: https://gravityforms.com
Description: Easily create web forms and manage form entries within the WordPress admin.
Version: 2.8.14
Version: 2.8.15
Requires at least: 4.0
Requires PHP: 5.6
Author: Gravity Forms
@@ -121,7 +121,7 @@ define( 'GF_SUPPORTED_WP_VERSION', version_compare( get_bloginfo( 'version' ), G
*
* @var string GF_MIN_WP_VERSION_SUPPORT_TERMS The version number
*/
define( 'GF_MIN_WP_VERSION_SUPPORT_TERMS', '6.4' );
define( 'GF_MIN_WP_VERSION_SUPPORT_TERMS', '6.5' );
/**
* The filesystem path of the directory that contains the plugin, includes trailing slash.
@@ -244,7 +244,7 @@ class GFForms {
*
* @var string $version The version number.
*/
public static $version = '2.8.14';
public static $version = '2.8.15';
/**
* Handles background upgrade tasks.
@@ -1931,27 +1931,210 @@ class GFForms {
*/
public static function modify_admin_title( $admin_title, $title ) {
$subview = rgget( 'subview' );
$form_id = rgget( 'id' );
$page = GFForms::get_page();
if ( ! $form_id || rgget( 'page' ) != 'gf_edit_forms' || rgget( 'view' ) != 'settings' ) {
if ( $page === '' ) {
return $admin_title;
}
require_once( GFCommon::get_base_path() . '/form_settings.php' );
$setting_tabs = GFFormSettings::get_tabs( $form_id );
$page_title = '';
foreach ( $setting_tabs as $tab ) {
if ( $tab['name'] == $subview ) {
$page_title = $tab['label'];
}
$form_id = rgget( 'id' );
if ( ! $form_id ) {
$forms = RGFormsModel::get_forms( null, 'title' );
$form_id = ( ! empty( $forms ) ) ? $forms[0]->id : '';
}
if ( $page_title ) {
$admin_title = sprintf( __( '%1$s ‹ %2$s — WordPress', 'gravityforms' ), esc_html( $page_title ), $admin_title );
}
$form = GFAPI::get_form( $form_id );
$form_title = rgar( $form, 'title', __( 'Form Not Found', 'gravityforms' ) );
switch ( $page ) {
case 'new_form':
case 'form_list':
$filter_title = '';
$filter = rgget( 'filter' );
if ( $filter === 'inactive' ) {
$filter_title = __( 'Inactive', 'gravityforms' );
}
if ( $filter === 'active' ) {
$filter_title =__( 'Active', 'gravityforms' );
}
if ( $filter === 'trash' ) {
$filter_title = __( 'Trash', 'gravityforms' );
}
$search = rgget( 's' );
if ( ! rgblank( $search ) ) {
/* translators: Search entries page title. 1. Search value */
$filter_title = sprintf( __( 'Search Forms: %1$s', 'gravityforms' ), esc_html( $search ) );
}
if ( ! rgblank( $filter_title ) ) {
$admin_title = sprintf( '%1$s — %2$s', esc_html( $filter_title ), esc_html( $admin_title ) );
}
break;
case 'form_editor':
$admin_title = sprintf( '%1$s ‹ %2$s', esc_html( $form_title ), esc_html( $admin_title ) );
break;
case 'confirmation':
$page_title = __( 'Confirmations', 'gravityforms' );
$confirmation_id = rgget( 'cid' );
if ( $confirmation_id !== '' ) {
$confirmation_name = rgars( $form, "confirmations/{$confirmation_id}/name", __( 'New Confirmation', 'gravityforms' ) );
$page_title = sprintf( '%1$s ‹ %2$s', esc_html( $confirmation_name ), esc_html( $page_title ) );
}
$admin_title = sprintf( '%1$s ‹ %2$s ‹ %3$s', esc_html( $page_title ), esc_html( $form_title ), esc_html( $admin_title ) );
break;
case 'entry_list':
$filter = rgget( 'filter' );
if ( $filter === 'star' ) {
/* translators: Starred entry list page title. 1. form title */
$form_title = sprintf( __( 'Starred — %1$s', 'gravityforms' ), esc_html( $form_title ) );
}
if ( $filter === 'unread' ) {
/* translators: Unread entry list page title. 1. form title */
$form_title = sprintf( __( 'Unread — %1$s', 'gravityforms' ), esc_html( $form_title ) );
}
if ( $filter === 'spam' ) {
/* translators: Active entry list page title. 1. form title */
$form_title = sprintf( __( 'Spam — %1$s', 'gravityforms' ), esc_html( $form_title ) );
}
if ( $filter === 'trash' ) {
/* translators: Trash entry list page title. 1. form title */
$form_title = sprintf( __( 'Trash — %1$s', 'gravityforms' ), esc_html( $form_title ) );
}
$search = rgget( 's' );
if ( ! rgblank( $search ) ) {
/* translators: Search entries page title. 1. Search value, 2. Form title. */
$form_title = sprintf( __( 'Search Entries: %1$s — %2$s', 'gravityforms' ), esc_html( $search ), esc_html( $form_title ) );
}
$admin_title = sprintf( '%1$s ‹ %2$s', esc_html( $form_title ), esc_html( $admin_title ) );
break;
case 'entry_detail':
case 'entry_detail_edit':
require_once( GFCommon::get_base_path() . '/entry_detail.php' );
$entry = GFEntryDetail::get_current_entry();
if ( ! is_wp_error( $entry ) && isset( $entry['id'] ) ) {
/* translators: Single entry page title. 1: entry ID, 2: form title, 3: admin title. */
$admin_title = sprintf( __( 'Entry # %1$d ‹ %2$s ‹ %3$s', 'gravityforms' ), esc_html( $entry['id'] ), esc_html( $form_title ), esc_html( $admin_title ) );
} else {
/* translators: Entry not found page title. 1: form title, 2: admin title. */
$admin_title = sprintf( __( 'Entry not found ‹ %1$s ‹ %2$s', 'gravityforms' ), esc_html( $form_title ), esc_html( $admin_title ) );
}
break;
case 'notification_list':
/* translators: Notifications list page title. 1: form title, 2: admin title. */
$admin_title = sprintf( __( 'Notifications ‹ %1$s ‹ %2$s' ), esc_html( $form_title ), esc_html( $admin_title ) );
break;
case 'notification_new':
case 'notification_edit':
$notification_id = rgget( 'nid' );
$notification_name = rgar( $form, "notifications/{$notification_id}/name", __( 'New Notification', 'gravityforms' ) );
$page_title = __( 'Notifications', 'gravityforms' );
$admin_title = sprintf( '%1$s ‹ %2$s ‹ %3$s ‹ %4$s', esc_html( $notification_name ), esc_html( $page_title ), esc_html( $form_title ), esc_html( $admin_title ) );
break;
case 'settings':
$page_title = __( 'Settings', 'gravityforms' );
$subview = rgget( 'subview' );
if ( $subview === 'recaptcha' ) {
$page_title = __( 'reCAPTCHA', 'gravityforms' );
}
if ( $subview === 'uninstall' ) {
$page_title = __( 'Uninstall', 'gravityforms' );
}
if ( $page_title === 'Settings' ) {
$addon_page = GFSettings::$addon_pages;
if ( isset( $addon_page[ $subview ] ) ) {
$page_title = rgar( $addon_page[ $subview ], 'tab_label' );
}
}
/* Translators: Settings page title. 1. Page Title. */
$admin_title = sprintf( '%1$s ‹ %2$s', esc_html( $page_title ), esc_html( $admin_title ) );
break;
case 'addons':
break;
case 'export_form':
/* Translators: Export Form page title. 1: Admin title. */
$admin_title = sprintf( __( 'Export Forms ‹ %1$s', 'gravityforms' ), esc_html( $admin_title ) );
break;
case 'import_form':
/* Translators: Import form page title. 1: Admin title. */
$admin_title = sprintf( __( 'Import Forms ‹ %1$s', 'gravityforms' ), esc_html( $admin_title ) );
break;
case 'export_entry':
/* Translators: Export Entry page title. 1: Admin title. */
$admin_title = sprintf( __( 'Export Entries ‹ %1$s', 'gravityforms' ), esc_html( $admin_title ) );
break;
case 'updates':
/* Translators: Updates page title. 1: Admin title. */
$admin_title = sprintf( __( 'Updates ‹ %1$s', 'gravityforms' ), esc_html( $admin_title ) );
break;
case 'system_status':
$subview = rgget( 'subview' );
$page_title = __( 'System Status', 'gravityforms' );
if ( rgblank( $subview ) ) {
/* Translators: System report page title. 1: Admin title. */
$admin_title = sprintf( __( 'System Report ‹ %1$s ‹ Gravity Forms — WordPress', 'gravityforms' ), esc_html( $page_title ) );
}
break;
case 'form_settings':
case 'personal_data':
default:
if ( rgget( 'view' ) === 'settings' ) {
require_once( GFCommon::get_base_path() . '/form_settings.php' );
$form_id = rgget( 'id' );
$setting_tabs = GFFormSettings::get_tabs( $form_id );
$page_title = '';
$subview = rgget( 'subview' );
if ( ! $subview || $subview === '' && ! empty( $setting_tabs ) ) {
$subview = rgar( $setting_tabs[0], 'name', 'settings' );
}
foreach ( $setting_tabs as $tab ) {
if ( $tab['name'] === $subview || ( $subview === 'gf_theme_layers' && rgget( 'theme_layer' ) === $tab['name'] ) ) {
$page_title = $tab['label'];
}
}
if ( $page_title ) {
$admin_title = sprintf( '%1$s ‹ %2$s ‹ %3$s', esc_html( $page_title ), esc_html( $form_title ), esc_html( $admin_title ) );
}
}
break;
}
return $admin_title;
}
@@ -3307,15 +3490,15 @@ class GFForms {
return 'results';
}
if ( rgget( 'page' ) == 'gf_export' && ( rgget( 'view' ) == 'export_entry' || ! isset( $_GET['view'] ) ) ) {
if ( rgget( 'page' ) == 'gf_export' && ( rgget( 'subview' ) == 'export_entry' || ! isset( $_GET['subview'] ) ) ) {
return 'export_entry';
}
if ( rgget( 'page' ) == 'gf_export' && rgget( 'view' ) == 'export_form' ) {
if ( rgget( 'page' ) == 'gf_export' && rgget( 'subview' ) == 'export_form' ) {
return 'export_form';
}
if ( rgget( 'page' ) == 'gf_export' && rgget( 'view' ) == 'import_form' ) {
if ( rgget( 'page' ) == 'gf_export' && rgget( 'subview' ) == 'import_form' ) {
return 'import_form';
}
@@ -6335,11 +6518,9 @@ class GFForms {
GFCommon::record_cron_event( 'gravityforms_cron' );
self::add_security_files();
self::delete_old_export_files();
self::delete_old_log_files();
self::delete_old_tmp_uploads();
self::do_self_healing();
if ( ! get_option( 'gform_enable_logging' ) ) {
@@ -6354,6 +6535,46 @@ class GFForms {
GFCommon::log_debug( __METHOD__ . '(): Done.' );
}
/**
* Deletes old tmp files from the form-specific upload folders.
*
* @since 2.8.15
*
* @return void
*/
public static function delete_old_tmp_uploads() {
GFCommon::log_debug( __METHOD__ . '(): Starting.' );
$uploads_folder = GFFormsModel::get_upload_root();
if ( ! is_dir( $uploads_folder ) || is_link( $uploads_folder ) ) {
GFCommon::log_debug( __METHOD__ . '(): No upload root - bailing.' );
return;
}
$exclude = array( '.', '..', 'logs', 'export', 'index.html', '.htaccess' );
$folders = array_diff( scandir( $uploads_folder ), $exclude );
if ( empty( $folders ) ) {
GFCommon::log_debug( __METHOD__ . '(): No form folders found - bailing.' );
return;
}
require_once GFCommon::get_base_path() . '/form_display.php';
foreach ( $folders as $folder ) {
$parts = explode( '-', $folder );
if ( ! is_numeric( $parts[0] ) ) {
continue;
}
$form = GFAPI::get_form( $parts[0] );
if ( ! $form ) {
continue;
}
GFCommon::log_debug( __METHOD__ . '(): Deleting old tmp files for form #' . $form['id'] );
GFFormDisplay::clean_up_files( $form, false );
}
}
/**
* Deletes all entry export files from the server that haven't been claimed within 24 hours.
*