mirror of
https://github.com/proelements/proelements.git
synced 2026-05-13 12:35:02 +00:00
v4.0.4.1
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
<?php
|
||||
namespace ElementorPro\Modules\AtomicForm\Actions;
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit; // Exit if accessed directly
|
||||
}
|
||||
|
||||
abstract class Action_Base {
|
||||
|
||||
/**
|
||||
* Get the action type identifier.
|
||||
*
|
||||
* @return string Action type (e.g., 'email', 'webhook', 'collect-submissions')
|
||||
*/
|
||||
abstract public function get_type(): string;
|
||||
|
||||
/**
|
||||
* Execute the action with the provided form data and widget settings.
|
||||
*
|
||||
* @param array $form_data Sanitized form data submitted by the user.
|
||||
* Example: ['name' => 'John', 'email' => 'john@example.com']
|
||||
* @param array $widget_settings Full widget settings - action extracts what it needs.
|
||||
* Example: ['email_to' => 'admin@site.com', 'email_subject' => 'New form', ...]
|
||||
* @param array $context Additional context (post_id, form_id, form_name).
|
||||
* Example: ['post_id' => 123, 'form_id' => 'contact', 'form_name' => 'Contact Form']
|
||||
* @return array Result array with 'status' and optional data.
|
||||
* Success: ['status' => 'success', 'message' => '...', ...]
|
||||
* Failure: ['status' => 'failed', 'error' => '...', ...]
|
||||
*/
|
||||
abstract public function execute( array $form_data, array $widget_settings, array $context ): array;
|
||||
|
||||
/**
|
||||
* Validate widget settings for this action.
|
||||
*
|
||||
* @param array $widget_settings Widget settings to validate.
|
||||
* @return bool|\WP_Error True if valid, WP_Error otherwise.
|
||||
*/
|
||||
protected function validate_settings( array $widget_settings ) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Format a success result.
|
||||
*
|
||||
* @param string $message Success message.
|
||||
* @param array $additional_data Additional data to include.
|
||||
* @return array
|
||||
*/
|
||||
protected function success( string $message, array $additional_data = [] ): array {
|
||||
return array_merge(
|
||||
[
|
||||
'status' => 'success',
|
||||
'message' => $message,
|
||||
],
|
||||
$additional_data
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Format a failure result.
|
||||
*
|
||||
* @param string $error Error message.
|
||||
* @param array $additional_data Additional data to include.
|
||||
* @return array
|
||||
*/
|
||||
protected function failure( string $error, array $additional_data = [] ): array {
|
||||
return array_merge(
|
||||
[
|
||||
'status' => 'failed',
|
||||
'error' => $error,
|
||||
],
|
||||
$additional_data
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user