File ManagerCurrent Directory: wp-content/plugins/wpforms/src/Pro/Tasks/ActionsLinux appserver-0d5e4f1e-php-cc8da225320a42ba9b7d66cba40b1f03 6.6.123+ #1 SMP PREEMPT_DYNAMIC Wed Mar 11 09:04:28 UTC 2026 x86_64Edit File: PurgeTemplateEntryTask.php <?php namespace WPForms\Pro\Tasks\Actions; use WPForms\Tasks\Meta; use WPForms\Tasks\Task; /** * Class PurgeTemplateEntryTask is responsible for purging the template entry. * * @since 1.8.8 */ class PurgeTemplateEntryTask extends Task { /** * Action name for this task. * * @since 1.8.8 */ const ACTION = 'wpforms_purge_template_entry'; /** * Class constructor. * * @since 1.8.8 */ public function __construct() { parent::__construct( self::ACTION ); $this->init(); } /** * Initialize the task. * * @since 1.8.8 */ public function init() { $this->hooks(); } /** * Hooks. * * @since 1.8.8 */ public function hooks() { add_action( 'wpforms_process_entry_saved', [ $this, 'add_task' ], 10, 4 ); add_action( self::ACTION, [ $this, 'process' ] ); } /** * Add task to the queue. * * @since 1.8.8 * * @param array $fields Form fields. * @param array $entry Form entry. * @param array $form_data Form data. * @param int $entry_id Entry ID. */ public function add_task( $fields, $entry, $form_data, $entry_id ) { $settings = $form_data['settings'] ?? []; if ( ! isset( $settings['template_description'] ) ) { return; } /** * Filters the time interval for the task to be purged in, in seconds. * * @since 1.8.8 * * @param int $delay Delay in seconds. */ $delay = (int) apply_filters( 'wpforms_pro_tasks_actions_purge_template_entry_task_delay', DAY_IN_SECONDS ); // Determine when the entry should be purged. $purge_timestamp = time() + $delay; $action_id = wpforms()->obj( 'tasks' ) ->create( self::ACTION ) ->once( $purge_timestamp ) ->params( $entry_id ) ->register(); wpforms()->obj( 'entry_meta' )->add( [ 'entry_id' => $entry_id, 'form_id' => $form_data['id'] ?? 0, 'type' => 'purge_template_entry_task', 'data' => wp_json_encode( [ 'task_id' => $action_id, 'timestamp' => $purge_timestamp, ] ), ], 'entry_meta' ); } /** * Process the task. * * @since 1.8.8 * * @param int $meta_id Meta ID. */ public function process( $meta_id ) { // phpcs:ignore WPForms.PHP.HooksMethod.InvalidPlaceForAddingHooks $task_meta = new Meta(); $meta = $task_meta->get( (int) $meta_id ); if ( empty( $meta ) || empty( $meta->data ) ) { return; } list( $entry_id ) = $meta->data; // Allow the cron to delete the entry. add_filter( 'wpforms_current_user_can', '__return_true' ); $this->process_before_delete( $entry_id ); // Delete the entry. wpforms()->obj( 'entry' )->delete( $entry_id ); } /** * Perform any additional actions before deleting the entry. * * For example, this allows us to delete the user created via User Registration addon. * Form Template entries can only be created by logged-in admins with sufficient permissions, * and they are considered test entries. Users created via User Registration addon are * also considered test users and should be automatically deleted too. * * @since 1.8.8 * * @param int $entry_id Entry ID. */ private function process_before_delete( int $entry_id ) { $registered_user_id = wpforms()->obj( 'entry_meta' )->get_meta( [ 'entry_id' => $entry_id, 'type' => 'registered_user_id', 'number' => 1, ] ); $user_id = $registered_user_id[0]->data ?? 0; if ( empty( $user_id ) ) { return; } // Delete the user. wp_delete_user( $user_id ); } } Upload File Directory Listing NameTypeSizeActions.. (Parent Directory)DirEntryEmailCSVCleanupTask.phpFile6.79 KB Rename | Delete | EditMigration176Task.phpFile5.69 KB Rename | Delete | EditMigration190Task.phpFile5.51 KB Rename | Delete | EditMigrationPaymentEntriesTask.phpFile14.45 KB Rename | Delete | EditPurgeTemplateEntryTask.phpFile3.42 KB Rename | Delete | Edit