Skip to main content
Version: v6

gfpdf_tool_tab_actions

Description

This action should be used in conjunction with the gfpdf_settings_tools filter to add new functionality to Gravity PDF. While the gfpdf_settings_tools filter adds the new button to the admin area, the gfpdf_tool_tab_actions does all the actual validation and processing.

Parameters

$settings | array

  • An associative array which contains the Tool tab form $_POST['gfpdf_settings'] data. Use this to check if a user clicked on a specific action.

Usage

The following snippet shows you how to correctly process a button called prefix_flush_logs, which we've assumed was included in the Tools tab using the gfpdf_settings_tools filter.

Note: it's very important you don't skip on the nonce verification!

add_action( 'gfpdf_tool_tab_actions', function( $settings ) {

/**
* Check if our tools action button was clicked and if we have a valid nonce
* At this stage a user has already had their capabilities checked (they must have the "gravityforms_edit_setting" capability)
* so there's no need to do that test.
*/
if ( isset( $settings['prefix_flush_logs']['name'] ) && isset( $settings['prefix_flush_logs']['nonce'] ) ) {

/* Get our notice and logging class for later use */
$logs = GPDFAPI::get_log_class();
$notices = GPDFAPI::get_notice_class();

/**
* Verify the nonce
*
* We automatically set an nonce for this field using the name "gfpdf_settings[{:field_id}]"
* For instance, our 'prefix_flush_logs' field should have its nonce validated against 'gfpdf_settings[prefix_flush_logs]'
*/
if ( ! wp_verify_nonce( $settings['prefix_flush_logs']['nonce'], 'gfpdf_settings[prefix_flush_logs]' ) ) {

/**
* Add a failure message in our logs and notify the user
*/
$logs->addWarning( 'Nonce Verification Failed.' );
$notices->add_error( __( 'There was a problem flushing the logs. Please try again.', 'prefix-text-domain' ) );

return null;
}

/**
* If we are here the user has correctly authenticated, and they want your action to run
* Include all your action handling code below.
*/
//unlink( '/path/to/log/files' );

/* Notify the user it was successful and log the results */
$notices->add_notice( __( 'Gravity PDF Logs successfully flushed', 'prefix-text-domain' ) );
$logs->addNotice( 'Gravity PDF Logs successfully flushed' );

return true;
}

} );

Source Code

This filter is located in the Helper_Options_Fields::get_registered_fields() method of /src/helper/Helper_Options_Fields.php.