[ SYSTEM ]: Linux wordpress 6.1.0-44-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.164-1 (2026-03-09) x86_64
[ SERVER ]: Apache/2.4.66 (Debian) | PHP: 8.2.30
[ USER ]: www-data | IP: 172.19.30.54
GEFORCE FILE MANAGER
/
var
/
www
/
html
/
wordpress
/
wp-content
/
plugins
/
elementor-pro
/
modules
/
atomic-form
/
actions
/
UPLOAD:
NAME
SIZE
QUICK PERMS
ACTIONS
📄 action-base.php
2,278 B
SET
[ EDIT ]
|
[ DEL ]
📄 action-runner.php
3,434 B
SET
[ EDIT ]
|
[ DEL ]
📄 action-type.php
693 B
SET
[ EDIT ]
|
[ DEL ]
📄 collect-submissions-action.php
4,232 B
SET
[ EDIT ]
|
[ DEL ]
📄 email-action.php
4,309 B
SET
[ EDIT ]
|
[ DEL ]
📄 email-settings.php
1,277 B
SET
[ EDIT ]
|
[ DEL ]
📄 webhook-action.php
3,496 B
SET
[ EDIT ]
|
[ DEL ]
DELETE SELECTED
[ CLOSE ]
EDIT: action-runner.php
<?php namespace ElementorPro\Modules\AtomicForm\Actions; if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly } class Action_Runner { /** * Registered actions. * * @var Action_Base[] */ private static $actions = []; /** * Register an action. * * @param Action_Base $action Action instance to register. * @return void */ public static function register_action( Action_Base $action ): void { self::$actions[ $action->get_type() ] = $action; } /** * Create an action instance by type. * * @param string $type Action type. * @return Action_Base|null Action instance or null if not found. */ public static function create_action( string $type ): ?Action_Base { if ( ! isset( self::$actions[ $type ] ) ) { return null; } return self::$actions[ $type ]; } /** * Get all registered actions. * * @return Action_Base[] Array of registered actions. */ public static function get_registered_actions(): array { return self::$actions; } /** * Check if an action type is registered. * * @param string $type Action type. * @return bool */ public static function has_action( string $type ): bool { return isset( self::$actions[ $type ] ); } /** * Execute multiple actions and gather results. * * @param string[] $actions Array of action type strings. * @param array $form_data Sanitized form data. * @param array $widget_settings Full widget settings for actions to extract what they need. * @param array $context Form context (post_id, form_id, form_name). * @return array Results containing actionResults, allActionsSucceeded, failedActions, and optional submissionId. */ public static function execute_actions( array $actions, array $form_data, array $widget_settings, array $context ): array { $action_results = []; $failed_actions = []; foreach ( $actions as $action_type ) { if ( ! Action_Type::is_valid( $action_type ) ) { $action_results[] = [ 'type' => $action_type, 'status' => 'failed', 'error' => sprintf( __( 'Invalid action type: %s', 'elementor-pro' ), $action_type ), ]; $failed_actions[] = $action_type; continue; } try { $action = self::create_action( $action_type ); if ( ! $action ) { throw new \Exception( sprintf( __( 'Could not create action: %s', 'elementor-pro' ), $action_type ) ); } $result = $action->execute( $form_data, $widget_settings, $context ); $action_results[] = array_merge( [ 'type' => $action_type ], $result ); } catch ( \Exception $e ) { $action_results[] = [ 'type' => $action_type, 'status' => 'failed', 'error' => $e->getMessage(), ]; $failed_actions[] = $action_type; } } $all_actions_succeeded = empty( $failed_actions ); $response = [ 'actionResults' => $action_results, 'allActionsSucceeded' => $all_actions_succeeded, 'failedActions' => $failed_actions, ]; return $response; } /** * Initialize default actions. * * @return void */ public static function init(): void { self::register_action( new Email_Action() ); self::register_action( new Collect_Submissions_Action() ); self::register_action( new Webhook_Action() ); /** * Allow registering custom actions. * * @param Action_Factory $factory The action factory instance. */ do_action( 'elementor_pro/atomic_forms/actions/register', __CLASS__ ); } }