/home/vianto5/heredit.mx/wp-content/plugins/wpforms/src/Pro/Tasks/Actions
NameSizeModeActions
EntryEmailCSVCleanupTask.php69550644editdlrm
ImportCleanupTask.php48350644editdlrm
Migration176Task.php58230644editdlrm
Migration190Task.php56430644editdlrm
Migration199Task.php86810644editdlrm
MigrationOrphanEntryMetaTask.php49110644editdlrm
MigrationPaymentEntriesTask.php147960644editdlrm
PurgeEntriesTask.php61840644editdlrm
PurgeTemplateEntryTask.php35000644editdlrm
Edit: /home/vianto5/heredit.mx/wp-content/plugins/wpforms/src/Pro/Tasks/Actions/ImportCleanupTask.php (4835B)
created_timestamp`. Files are * added by AbstractFileSource::move_to_upload_tmp() and removed by this * task once they pass the TTL or disappear from disk. * * @since 1.10.1 * * @var string */ private const OPTION_NAME = 'wpforms_import_tmp_files'; /** * Action name for this task. * * @since 1.10.1 * * @var string */ public const ACTION = 'wpforms_import_cleanup'; /** * How often the task runs, in seconds (once a day). * * @since 1.10.1 * * @var int */ public const INTERVAL = DAY_IN_SECONDS; /** * Maximum age of import files and sessions before they are removed. * * @since 1.10.1 * * @var int */ private const TTL = HOUR_IN_SECONDS; /** * Constructor. * * @since 1.10.1 */ public function __construct() { parent::__construct( self::ACTION ); $this->init(); } /** * Initialize. * * @since 1.10.1 */ private function init(): void { $this->hooks(); } /** * Register action hooks. * * @since 1.10.1 */ private function hooks(): void { add_action( self::ACTION, [ $this, 'run' ] ); } /** * Run the cleanup. * * @since 1.10.1 */ public function run(): void { $this->delete_stale_sessions(); $this->delete_stale_files(); } /** * Record a file in the tmp-file registry so the cleanup task can find and * delete it later without scanning the uploads directory. * * @since 1.10.1 * * @param string $path Absolute path to the file just written into the tmp dir. */ public static function register_file( string $path ): void { $files = get_option( self::OPTION_NAME, [] ); if ( ! is_array( $files ) ) { $files = []; } $files[ $path ] = time(); update_option( self::OPTION_NAME, $files, false ); } /** * Delete ImportSession transients that have not been updated for over an hour. * * Sessions are stored as WPForms transients. Each has a timeout option equal * to creation/last-update time + DAY_IN_SECONDS. A session last touched more * than TTL seconds ago, therefore has a timeout less than * now + DAY_IN_SECONDS - TTL. * * @since 1.10.1 */ private function delete_stale_sessions(): void { global $wpdb; $timeout_prefix = Transient::TIMEOUT_PREFIX . ImportSession::KEY_PREFIX; $value_prefix = Transient::OPTION_PREFIX . ImportSession::KEY_PREFIX; $threshold = time() + DAY_IN_SECONDS - self::TTL; // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching $wpdb->query( $wpdb->prepare( "DELETE a, b FROM $wpdb->options a INNER JOIN $wpdb->options b ON b.option_name = CONCAT( %s, SUBSTRING( a.option_name, %d ) ) WHERE a.option_name LIKE %s AND a.option_value < %d", $value_prefix, strlen( $timeout_prefix ) + 1, $wpdb->esc_like( $timeout_prefix ) . '%', $threshold ) ); } /** * Delete import temporary files older than the TTL. * * The cleanup iterates the `OPTION_NAME` registry populated by * AbstractFileSource::move_to_upload_tmp(). An entry is pruned when its * file is older than TTL (file deleted) or when the file is already * missing from disk. This avoids relying on directory listing, which is * not available on hosts such as WPVIP. * * @since 1.10.1 */ private function delete_stale_files(): void { $files = get_option( self::OPTION_NAME, [] ); if ( ! is_array( $files ) || empty( $files ) ) { return; } /** * Filters the maximum age (in seconds) of import temporary files * before they are removed by the cleanup task. * * @since 1.10.1 * * @param int $ttl Age threshold in seconds. Default: HOUR_IN_SECONDS. */ $ttl = (int) apply_filters( 'wpforms_pro_tasks_actions_import_cleanup_task_ttl', self::TTL ); $now = time(); foreach ( $files as $path => $created ) { if ( ! is_string( $path ) || $path === '' ) { unset( $files[ $path ] ); continue; } if ( ! File::exists( $path ) ) { unset( $files[ $path ] ); continue; } if ( ( $now - (int) $created ) < $ttl ) { continue; } if ( ! File::delete( $path ) ) { $this->log( sprintf( 'Could not delete stale import file: %s.', $path ) ); continue; } unset( $files[ $path ] ); } update_option( self::OPTION_NAME, $files, false ); } }