'', 'title' => '', 'tab_label' => '', 'handler' => false, 'icon_path' => '', ) ) ); } if ( ! isset( $tab_label ) || ! $tab_label ) { $tab_label = $name; } /** * Adds additional actions after settings pages are registered. * * @since Unknown * * @param string|array $handler The callback function being run. */ add_action( 'gform_settings_' . str_replace( ' ', '_', $name ), $handler ); self::$addon_pages[ $name ] = array( 'name' => $name, 'title' => $title, 'tab_label' => $tab_label, 'icon' => $icon_path ); } /** * Determines the content displayed on the Gravity Forms settings page. * * @since Unknown * @access public * * @uses GFSettings::get_subview() * @uses GFSettings::gravityforms_settings_page() * @uses GFSettings::settings_uninstall_page() * @uses GFSettings::page_header() * @uses GFSettings::page_footer() * * @return void */ public static function settings_page() { $subview = self::get_subview(); switch ( $subview ) { case 'settings': self::gravityforms_settings_page(); break; case 'uninstall': self::settings_uninstall_page(); break; default: self::page_header(); /** * Fires in the settings page depending on which page of the settings page you are in (the Subview). * * @since Unknown * * @param mixed $subview The sub-section of the main Form's settings */ do_action( 'gform_settings_' . str_replace( ' ', '_', $subview ) ); self::page_footer(); } } /** * Displays the Gravity Forms uninstall page. * * @since Unknown * @access public * * @used-by GFSettings::settings_page() * @uses GFSettings::page_header() * @uses GFCommon::current_user_can_any() * @uses GFFormsModel::drop_tables() * @uses GFCommon::delete_directory() * @uses GFFormsModel::get_upload_root() * @uses GFCommon::current_user_can_any() * @uses GFSettings::page_footer() */ public static function settings_uninstall_page() { self::page_header( __( 'Uninstall Gravity Forms', 'gravityforms' ), '' ); if ( isset( $_POST['uninstall'] ) ) { check_admin_referer( 'gform_uninstall', 'gform_uninstall_nonce' ); if ( ! GFCommon::current_user_can_uninstall() ) { die( esc_html__( "You don't have adequate permission to uninstall Gravity Forms.", 'gravityforms' ) ); } // Removing background tasks. $processors = array( GFForms::$background_upgrader, gf_feed_processor() ); /** @var GF_Background_Process $processor The background task processor. */ foreach ( $processors as $processor ) { $processor->clear_scheduled_events(); $processor->clear_queue( true ); $processor->unlock_process(); } // Removing cron task wp_clear_scheduled_hook( 'gravityforms_cron' ); // Dropping all tables RGFormsModel::drop_tables(); // Removing options delete_option( 'rg_form_version' ); delete_option( 'rg_gforms_disable_css' ); delete_option( 'rg_gforms_enable_html5' ); delete_option( 'rg_gforms_captcha_public_key' ); delete_option( 'rg_gforms_captcha_private_key' ); delete_option( 'rg_gforms_captcha_type' ); delete_option( 'rg_gforms_message' ); delete_option( 'rg_gforms_currency' ); delete_option( 'rg_gforms_enable_akismet' ); delete_option( 'gf_dismissed_upgrades' ); delete_option( 'gf_db_version' ); delete_option( 'gf_previous_db_version' ); delete_option( 'gf_upgrade_lock' ); delete_option( 'gf_submissions_block' ); delete_option( 'gf_imported_file' ); delete_option( 'gf_imported_theme_file' ); delete_option( 'gf_rest_api_db_version' ); delete_option( 'gform_api_count' ); delete_option( 'gform_email_count' ); delete_option( 'gform_enable_toolbar_menu' ); delete_option( 'gform_enable_logging' ); delete_option( 'gform_pending_installation' ); delete_option( 'gform_version_info' ); delete_option( 'gform_enable_noconflict' ); delete_option( 'gform_enable_background_updates' ); delete_option( 'gform_sticky_admin_messages' ); delete_option( 'gform_upgrade_status' ); delete_option( 'gform_custom_choices' ); delete_option( 'gform_recaptcha_keys_status' ); delete_option( 'gform_upload_page_slug' ); delete_option( 'gravityformsaddon_gravityformswebapi_version' ); delete_option( 'gravityformsaddon_gravityformswebapi_settings' ); // Removes license key GFFormsModel::save_key( '' ); // Removing gravity forms upload folder GFCommon::delete_directory( RGFormsModel::get_upload_root() ); // Delete Logging settings and logging files gf_logging()->delete_settings(); gf_logging()->delete_log_files(); // Deactivating plugin $plugin = 'gravityforms/gravityforms.php'; deactivate_plugins( $plugin ); update_option( 'recently_activated', array( $plugin => time() ) + (array) get_option( 'recently_activated' ) ); ?>
", '' ) ?>

'; /** * Allows for the modification of the Gravity Forms uninstall button. * * @since Unknown * * @param string $uninstall_button The HTML of the uninstall button. */ echo apply_filters( 'gform_uninstall_button', $uninstall_button ); ?>
verify_recaptcha_response( $response, $secret ); GFCommon::log_debug( 'recaptcha response:' . $recaptcha_response ); update_option( 'gform_recaptcha_keys_status', $recaptcha_response ); } else { delete_option( 'gform_recaptcha_keys_status' ); } } if ( ! rgempty( 'gforms_currency' ) && in_array( rgpost( 'gforms_currency' ), array_keys( RGCurrency::get_currencies() ) ) ) { update_option( 'rg_gforms_currency', rgpost( 'gforms_currency' ) ); } // Updating message because key could have been changed GFCommon::cache_remote_message(); // Re-caching version info $version_info = GFCommon::get_version_info( false ); ?>

.

'; if ( ! rgempty( 'is_error', $version_info ) ) { $key_field .= " There was an error validating your key' . esc_attr__( 'There was an error while validating your license key. Gravity Forms will continue to work, but automatic upgrades will not be available. Please contact support to resolve this issue.', 'gravityforms' ) . "'/>"; } else if ( rgar( $version_info, 'is_valid_key' ) ) { $key_field .= "  " . esc_html__( 'Valid Key : Your license key has been successfully validated.', 'gravityforms' ) . ''; } else if ( ! empty( $key ) ) { $key_field .= "  " . esc_html__( 'Invalid or Expired Key : Please make sure you have entered the correct value and that your key is not expired.', 'gravityforms' ) . ''; } echo apply_filters( 'gform_settings_key_field', $key_field ); ?>
/>    />
id="gforms_enable_html5" />    />
id="gform_enable_noconflict" />    id="gform_disable_noconflict" />
id="gforms_enable_akismet" />    />
id="gform_enable_background_updates" />    id="gform_disable_background_updates" />
id="gform_enable_toolbar_menu" />    id="gform_disable_toolbar_menu" />
id="gform_enable_logging" />    id="gform_disable_logging" />

/>    />

'; /** * Filters through and allows modification of the Settings save button HTML for the overall Gravity Forms Settings. * * @since Unknown * * @param string $save_button The HTML rendered for the save button. */ echo apply_filters( 'gform_settings_save_button', $save_button ); ?>

'POST', 'timeout' => 3, 'body' => $body ); $options['headers'] = array( 'Content-Type' => 'application/x-www-form-urlencoded; charset=' . get_option( 'blog_charset' ), 'Content-Length' => strlen( $body ), 'User-Agent' => 'WordPress/' . get_bloginfo( 'version' ), 'Referer' => get_bloginfo( 'url' ), ); $raw_response = GFCommon::post_to_manager( 'api.php', 'op=upgrade_message&key=' . GFCommon::get_key(), $options ); if ( is_wp_error( $raw_response ) || 200 != $raw_response['response']['code'] ) { $message = ''; } else { $message = $raw_response['body']; } // Validating that message is a valid Gravity Form message. If message is invalid, don't display anything. if ( substr( $message, 0, 10 ) != '' ) { $message = ''; } echo $message; exit; } /** * Outputs the settings page header. * * @since Unknown * @access public * * @uses SCRIPT_DEBUG * @uses GFSettings::get_subview() * @uses GFSettings::$addon_pages * @uses GFCommon::get_browser_class() * @uses GFCommon::display_dismissible_message() * * @param string $title Optional. The page title to be used. Defaults to an empty string. * @param string $message Optional. The message to display in the header. Defaults to empty string. * * @return void */ public static function page_header( $title = '', $message = '' ) { // Print admin styles. wp_print_styles( array( 'jquery-ui-styles', 'gform_admin' ) ); $current_tab = self::get_subview(); // Build left side options, always have GF Settings first and Uninstall last, put add-ons in the middle. $setting_tabs = array( '10' => array( 'name' => 'settings', 'label' => __( 'Settings', 'gravityforms' ) ) ); if ( ! empty( self::$addon_pages ) ) { $sorted_addons = self::$addon_pages; asort( $sorted_addons ); // Add add-ons to menu foreach ( $sorted_addons as $sorted_addon ) { $setting_tabs[] = array( 'name' => urlencode( $sorted_addon['name'] ), 'label' => esc_html( $sorted_addon['tab_label'] ), 'title' => esc_html( rgar( $sorted_addon, 'title' ) ), ); } } // Prevent Uninstall tab from being added for users that don't have gravityforms_uninstall capability. if ( GFCommon::current_user_can_uninstall() ) { $setting_tabs[] = array( 'name' => 'uninstall', 'label' => __( 'Uninstall', 'gravityforms' ) ); } /** * Filters the Settings menu tabs. * * @since Unknown * * @param array $setting_tabs The settings tab names and labels. */ $setting_tabs = apply_filters( 'gform_settings_menu', $setting_tabs ); ksort( $setting_tabs, SORT_NUMERIC ); // Kind of boring having to pass the title, optionally get it from the settings tab if ( ! $title ) { foreach ( $setting_tabs as $tab ) { if ( $tab['name'] == urlencode( $current_tab ) ) { $title = ! empty( $tab['title'] ) ? $tab['title'] : $tab['label']; } } } ?>


gf_logging()->get_slug(), 'tab_label' => gf_logging()->get_short_title(), 'title' => gf_logging()->plugin_settings_title(), 'handler' => array( gf_logging(), 'plugin_settings_page' ), ), null, null ); // Enabling all loggers by default gf_logging()->enable_all_loggers(); } return $enabled; } /** * Disable the GFLogging class. * * @since 2.4.4.2 * * @return bool */ public static function disable_logging() { // Update option. $disabled = update_option( 'gform_enable_logging', false ); // Remove settings page, log files. if ( function_exists( 'gf_logging' ) ) { unset( self::$addon_pages[ gf_logging()->get_slug() ] ); gf_logging()->delete_log_files(); } return $disabled; } }