Original: /includes/email-action-logic.php
<?php
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
use Elementor\Controls_Manager;
use ElementorPro\Core\Utils;
use ElementorPro\Modules\Forms\Classes\Ajax_Handler;
use ElementorPro\Modules\Forms\actions\Email2;
use ElementorPro\Modules\Forms\Classes\Form_Record;
class Superaddons_Email_Conditional_Logic extends Email2 {
public function get_name() {
return 'email_conditional_logic';
}
public function get_label() {
return esc_html__( 'Email Conditional Logic', 'elementor-pro' );
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic';
}
protected function get_reply_to( $record, $fields ) {
return isset( $fields['email_reply_to'] ) ? $fields['email_reply_to'] : '';
}
public function register_settings_section( $widget ) {
$check = get_option( '_redmuber_item_1473');
if($check == "ok"){
$options_logic = array(
"==" => esc_html__("is","conditional-logic-for-elementor-forms"),
"!=" => esc_html__("not is","conditional-logic-for-elementor-forms"),
"e" => esc_html__("empty","conditional-logic-for-elementor-forms"),
"!e" => esc_html__("not empty","conditional-logic-for-elementor-forms"),
"c" => esc_html__("contains","conditional-logic-for-elementor-forms"),
"!c" => esc_html__("does not contain","conditional-logic-for-elementor-forms"),
"^" => esc_html__("starts with","conditional-logic-for-elementor-forms"),
"~" => esc_html__("ends with","conditional-logic-for-elementor-forms"),
">" => esc_html__("greater than","conditional-logic-for-elementor-forms"),
"<" => esc_html__("less than","conditional-logic-for-elementor-forms"),
"array" => esc_html__("list array (a,b,c)","conditional-logic-for-elementor-forms"),
"!array" => esc_html__("not list array (a,b,c)","conditional-logic-for-elementor-forms"),
"array_contain" => esc_html__("list array contain (a,b,c)","conditional-logic-for-elementor-forms"),
"!array_contain" => esc_html__("not list array contain (a,b,c)","conditional-logic-for-elementor-forms"),
);
$options_pro = array();
}else{
$options_logic = array(
"==" => esc_html__("is","conditional-logic-for-elementor-forms"),
"!=" => esc_html__("not is","conditional-logic-for-elementor-forms"),
);
$options_pro = array(
"1" => esc_html__("Empty (Pro version)","conditional-logic-for-elementor-forms"),
"1" => esc_html__("Not empty (Pro version)","conditional-logic-for-elementor-forms"),
"3" => esc_html__("Contains (Pro version)","conditional-logic-for-elementor-forms"),
"4" => esc_html__("Does not contain (Pro version)","conditional-logic-for-elementor-forms"),
"5" => esc_html__("Starts with (Pro version)","conditional-logic-for-elementor-forms"),
"6" => esc_html__("Ends with (Pro version)","conditional-logic-for-elementor-forms"),
"7" => esc_html__("Greater than > (Pro version)","conditional-logic-for-elementor-forms"),
"8" => esc_html__("Less than < (Pro version)","conditional-logic-for-elementor-forms"),
"9" => esc_html__("List array (a,b,c)","conditional-logic-for-elementor-forms"),
"10" => esc_html__("Not List array (a,b,c)","conditional-logic-for-elementor-forms"),
"11" => esc_html__("List array contain (a,b,c)","conditional-logic-for-elementor-forms"),
"12" => esc_html__("Not List array contain (a,b,c)","conditional-logic-for-elementor-forms"),
);
}
$widget->start_controls_section(
$this->get_control_id( 'section_email' ),
[
'label' => $this->get_label(),
'tab' => Controls_Manager::TAB_CONTENT,
'condition' => [
'submit_actions' => $this->get_name(),
],
]
);
$widget->add_control(
$this->get_control_id( 'email_to' ),
[
'label' => esc_html__( 'To', 'elementor-pro' ),
'type' => Controls_Manager::TEXT,
'default' => get_option( 'admin_email' ),
'placeholder' => get_option( 'admin_email' ),
'label_block' => true,
'title' => esc_html__( 'Separate emails with commas', 'elementor-pro' ),
'render_type' => 'none',
]
);
/* translators: %s: Site title. */
$default_message = sprintf( esc_html__( 'New message from "%s"', 'elementor-pro' ), get_option( 'blogname' ) );
$widget->add_control(
$this->get_control_id( 'email_subject' ),
[
'label' => esc_html__( 'Subject', 'elementor-pro' ),
'type' => Controls_Manager::TEXT,
'default' => $default_message,
'placeholder' => $default_message,
'label_block' => true,
'render_type' => 'none',
]
);
$widget->add_control(
$this->get_control_id( 'email_content' ),
[
'label' => esc_html__( 'Message', 'elementor-pro' ),
'type' => Controls_Manager::TEXTAREA,
'default' => '[all-fields]',
'placeholder' => '[all-fields]',
'description' => sprintf( esc_html__( 'By default, all form fields are sent via %s shortcode. To customize sent fields, copy the shortcode that appears inside each field and paste it above.', 'elementor-pro' ), '<code>[all-fields]</code>' ),
'render_type' => 'none',
]
);
$site_domain = Utils::get_site_domain();
$widget->add_control(
$this->get_control_id( 'email_from' ),
[
'label' => esc_html__( 'From Email', 'elementor-pro' ),
'type' => Controls_Manager::TEXT,
'default' => 'email@' . $site_domain,
'render_type' => 'none',
]
);
$widget->add_control(
$this->get_control_id( 'email_from_name' ),
[
'label' => esc_html__( 'From Name', 'elementor-pro' ),
'type' => Controls_Manager::TEXT,
'default' => get_bloginfo( 'name' ),
'render_type' => 'none',
]
);
$admin_email = get_option( 'admin_email' );
$widget->add_control(
$this->get_control_id( 'email_reply_to' ),
[
'label' => esc_html__( 'Reply-To', 'elementor-pro' ),
'type' => Controls_Manager::TEXT,
'default' => $admin_email,
'placeholder' => $admin_email,
'render_type' => 'none',
'description' => esc_html__( 'You can ID email filed', 'elementor-pro' ),
]
);
$widget->add_control(
$this->get_control_id( 'email_to_cc' ),
[
'label' => esc_html__( 'Cc', 'elementor-pro' ),
'type' => Controls_Manager::TEXT,
'default' => '',
'title' => esc_html__( 'Separate emails with commas', 'elementor-pro' ),
'render_type' => 'none',
]
);
$widget->add_control(
$this->get_control_id( 'email_to_bcc' ),
[
'label' => esc_html__( 'Bcc', 'elementor-pro' ),
'type' => Controls_Manager::TEXT,
'default' => '',
'title' => esc_html__( 'Separate emails with commas', 'elementor-pro' ),
'render_type' => 'none',
]
);
$widget->add_control(
$this->get_control_id( 'form_metadata' ),
[
'label' => esc_html__( 'Meta Data', 'elementor-pro' ),
'type' => Controls_Manager::SELECT2,
'multiple' => true,
'label_block' => true,
'separator' => 'before',
'default' => [
'date',
'time',
'page_url',
'user_agent',
'remote_ip',
'credit',
],
'options' => [
'date' => esc_html__( 'Date', 'elementor-pro' ),
'time' => esc_html__( 'Time', 'elementor-pro' ),
'page_url' => esc_html__( 'Page URL', 'elementor-pro' ),
'user_agent' => esc_html__( 'User Agent', 'elementor-pro' ),
'remote_ip' => esc_html__( 'Remote IP', 'elementor-pro' ),
'credit' => esc_html__( 'Credit', 'elementor-pro' ),
],
'render_type' => 'none',
]
);
$widget->add_control(
$this->get_control_id( 'email_content_type' ),
[
'label' => esc_html__( 'Send As', 'elementor-pro' ),
'type' => Controls_Manager::SELECT,
'default' => 'html',
'render_type' => 'none',
'options' => [
'html' => esc_html__( 'HTML', 'elementor-pro' ),
'plain' => esc_html__( 'Plain', 'elementor-pro' ),
],
]
);
$control_id_conditional_logic = $this->get_control_id( 'email_conditional_logic' );
$widget->add_control(
$control_id_conditional_logic,
[
'label' => esc_html__( 'Enable Conditional Logic', 'elementor-pro' ),
'render_type' => 'none',
'type' => Controls_Manager::SWITCHER,
]
);
$widget->add_control(
$this->get_control_id( 'email_conditional_logic_display' ),
[
'label' => esc_html__( 'Display mode', "conditional-logic-for-elementor-forms" ),
'type' => Controls_Manager::CHOOSE,
'options' => [
'show' => [
'title' => esc_html__( 'Send if', "conditional-logic-for-elementor-forms" ),
'icon' => 'fa fa-eye',
],
'hide' => [
'title' => esc_html__( 'Disable if', "conditional-logic-for-elementor-forms" ),
'icon' => 'fa fa-eye-slash',
],
],
'default' => 'show',
'condition' => [
$control_id_conditional_logic => 'yes'
],
]
);
$widget->add_control(
$this->get_control_id( 'email_conditional_logic_trigger' ),
[
'label' => esc_html__( 'When to Trigger', "conditional-logic-for-elementor-forms" ),
'type' => Controls_Manager::SELECT,
'options' => [
"ALL"=>"ALL",
"ANY"=>"ANY"
],
'default' => 'ALL',
'condition' => [
$control_id_conditional_logic => 'yes'
],
]
);
$widget->add_control(
$this->get_control_id( 'email_conditional_logic_datas' ),
[
'name' => 'email_conditional_logic_datas',
'label' => esc_html__( 'Fields if', "conditional-logic-for-elementor-forms" ),
'type' => 'conditional_logic_repeater',
'fields' => [
[
'name' => 'conditional_logic_id',
'label' => esc_html__( 'Field ID', "conditional-logic-for-elementor-forms" ),
'type' => Controls_Manager::TEXT,
'label_block' => true,
'default' => '',
],
[
'name' => 'conditional_logic_operator',
'label' => esc_html__( 'Operator', "conditional-logic-for-elementor-forms" ),
'type' => Controls_Manager::SELECT,
'label_block' => true,
'options' => $options_logic,
'options_pro' => $options_pro,
'default' => '==',
],
[
'name' => 'conditional_logic_value',
'label' => esc_html__( 'Value to compare', "conditional-logic-for-elementor-forms" ),
'type' => Controls_Manager::TEXT,
'label_block' => true,
'default' => '',
],
],
'condition' => [
$control_id_conditional_logic => 'yes'
],
'style_transfer' => false,
'title_field' => '{{{ conditional_logic_id }}} {{{ conditional_logic_operator }}} {{{ conditional_logic_value }}}',
'default' => array(
array(
'conditional_logic_id' => '',
'conditional_logic_operator' => '==',
'conditional_logic_value' => '',
),
),
]
);
$widget->end_controls_section();
}
public function run( $record, $ajax_handler ) {
$settings = $record->get( 'form_settings' );
$send_status = true;
if( $settings[$this->get_control_id( 'email_conditional_logic' )] == "yes" ){
$display = $settings[$this->get_control_id( 'email_conditional_logic_display' )];
$trigger = $settings[$this->get_control_id( 'email_conditional_logic_trigger' )];
$datas = $settings[$this->get_control_id( 'email_conditional_logic_datas' )];
$rs = array();
$form_fields = $record->get("fields");
foreach ( $datas as $logic_key => $logic_values ) {
if(isset($form_fields[$logic_values["conditional_logic_id"]])){
$value_id = $form_fields[$logic_values["conditional_logic_id"]]["value"];
if( is_array($value_id) ){
$value_id = implode(", ",$value_id);
}
}else{
$value_id = $logic_values["conditional_logic_id"];
}
$operator = $logic_values["conditional_logic_operator"];
$value = $logic_values["conditional_logic_value"];
$rs[] = $this->elementor_conditional_logic_check_single($value_id,$operator,$value);
}
if( $trigger =="ALL" ){
$check_rs = true;
foreach ( $rs as $fkey => $fvalue ) {
if( $fvalue == false ){
$check_rs =false;
break;
}
}
}else{
$check_rs = false;
foreach ( $rs as $fkey => $fvalue ) {
if( $fvalue == true ){
$check_rs =true;
break;
}
}
}
if($display == "show"){
if( $check_rs == true ){
$send_status = true;
}else{
$send_status = false;
}
}else{
if( $check_rs == true ){
$send_status = false;
}else{
$send_status = true;
}
}
}
if( $send_status == true ){
$send_html = 'plain' !== $settings[ $this->get_control_id( 'email_content_type' ) ];
$line_break = $send_html ? '<br>' : "\n";
$fields = [
'email_to' => get_option( 'admin_email' ),
/* translators: %s: Site title. */
'email_subject' => sprintf( esc_html__( 'New message from "%s"', 'elementor-pro' ), get_bloginfo( 'name' ) ),
'email_content' => '[all-fields]',
'email_from_name' => get_bloginfo( 'name' ),
'email_from' => get_bloginfo( 'admin_email' ),
'email_reply_to' => 'noreply@' . Utils::get_site_domain(),
'email_to_cc' => '',
'email_to_bcc' => '',
];
foreach ( $fields as $key => $default ) {
$setting = trim( $settings[ $this->get_control_id( $key ) ] );
$setting = $record->replace_setting_shortcodes( $setting );
if ( ! empty( $setting ) ) {
$fields[ $key ] = $setting;
}
}
$email_reply_to = $this->get_reply_to( $record, $fields );
$fields['email_content'] = $this->replace_content_shortcodes( $fields['email_content'], $record, $line_break );
$email_meta = '';
$form_metadata_settings = $settings[ $this->get_control_id( 'form_metadata' ) ];
foreach ( $record->get( 'meta' ) as $id => $field ) {
if ( in_array( $id, $form_metadata_settings ) ) {
$email_meta .= $this->field_formatted( $field ) . $line_break;
}
}
if ( ! empty( $email_meta ) ) {
$fields['email_content'] .= $line_break . '---' . $line_break . $line_break . $email_meta;
}
$headers = sprintf( 'From: %s <%s>' . "\r\n", $fields['email_from_name'], $fields['email_from'] );
$headers .= sprintf( 'Reply-To: %s' . "\r\n", $email_reply_to );
if ( $send_html ) {
$headers .= 'Content-Type: text/html; charset=UTF-8' . "\r\n";
}
$cc_header = '';
if ( ! empty( $fields['email_to_cc'] ) ) {
$cc_header = 'Cc: ' . $fields['email_to_cc'] . "\r\n";
}
/**
* Email headers.
*
* Filters the additional headers sent when the form send an email.
*
* @since 1.0.0
*
* @param string|array $headers Additional headers.
*/
$headers = apply_filters( 'elementor_pro/forms/wp_mail_headers', $headers );
/**
* Email content.
*
* Filters the content of the email sent by the form.
*
* @since 1.0.0
*
* @param string $email_content Email content.
*/
$fields['email_content'] = apply_filters( 'elementor_pro/forms/wp_mail_message', $fields['email_content'] );
$email_sent = wp_mail( $fields['email_to'], $fields['email_subject'], $fields['email_content'], $headers . $cc_header );
if ( ! empty( $fields['email_to_bcc'] ) ) {
$bcc_emails = explode( ',', $fields['email_to_bcc'] );
foreach ( $bcc_emails as $bcc_email ) {
wp_mail( trim( $bcc_email ), $fields['email_subject'], $fields['email_content'], $headers );
}
}
/**
* Elementor form mail sent.
*
* Fires when an email was sent successfully.
*
* @since 1.0.0
*
* @param array $settings Form settings.
* @param Form_Record $record An instance of the form record.
*/
do_action( 'elementor_pro/forms/mail_sent', $settings, $record );
if ( ! $email_sent ) {
$message = Ajax_Handler::get_default_message( Ajax_Handler::SERVER_ERROR, $settings );
$ajax_handler->add_error_message( $message );
throw new \Exception( $message );
}
}else{
// $ajax_handler->add_admin_error_message( "Conditional Logic: Disable send email");
// $ajax_handler->set_success(true);
}
}
private function replace_content_shortcodes( $email_content, $record, $line_break ) {
$email_content = do_shortcode( $email_content );
$all_fields_shortcode = '[all-fields]';
if ( false !== strpos( $email_content, $all_fields_shortcode ) ) {
$text = '';
foreach ( $record->get( 'fields' ) as $field ) {
$formatted = $this->field_formatted( $field );
if ( ( 'textarea' === $field['type'] ) && ( '<br>' === $line_break ) ) {
$formatted = str_replace( [ "\r\n", "\n", "\r" ], '<br />', $formatted );
}
$text .= $formatted . $line_break;
}
$email_content = str_replace( $all_fields_shortcode, $text, $email_content );
}
return $email_content;
}
private function field_formatted( $field ) {
$formatted = '';
if ( ! empty( $field['title'] ) ) {
$formatted = sprintf( '%s: %s', $field['title'], $field['value'] );
} elseif ( ! empty( $field['value'] ) ) {
$formatted = sprintf( '%s', $field['value'] );
}
return $formatted;
}
function elementor_conditional_logic_check_single($value_id,$operator,$value){
$rs = false;
switch($operator) {
case "==":
if( $value_id == $value){
$rs = true;
}
break;
case "!=":
if( $value_id != $value){
$rs = true;
}
break;
case "e":
if( $value_id == ""){
$rs = true;
}
break;
case "!e":
if( $value_id != ""){
$rs = true;
}
break;
case "c":
if( str_contains($value_id,$value) ){
$rs = true;
}
break;
case "!c":
if( !str_contains($value_id,$value) ){
$rs = true;
}
break;
case "^":
if( str_starts_with($value_id,$value) ){
$rs = true;
}
break;
case "~":
if( str_ends_with($value_id,$value) ){
$rs = true;
}
break;
case ">":
if( $value_id > $value){
$rs = true;
}
break;
case "<":
if( $value_id < $value){
$rs = true;
}
case "array":
$values= array_map('trim', explode(',', $value));
if( in_array($value_id,$values)){
$rs = true;
}
break;
case "!array":
$values= array_map('trim', explode(',', $value));
if( !in_array($value_id,$values)){
$rs = true;
}
break;
case "array_contain":
$values= array_map('trim', explode(',', $value));
foreach($values as $vl){
if( str_contains($value_id,$vl) ){
$rs = true;
}
}
break;
case "!array_contain":
$values= array_map('trim', explode(',', $value));
$rs = true;
foreach($values as $vl){
if( str_contains($value_id,$vl) ){
$rs = false;
}
}
break;
default:
break;
}
return $rs;
}
}
class Superaddons_Email_Conditional_Logic_2 extends Superaddons_Email_Conditional_Logic {
public function get_name() {
return 'email_conditional_logic_2';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Email Conditional Logic 2 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Email Conditional Logic 2', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_2';
}
public function register_settings_section( $widget ) {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
$widget->start_controls_section(
$this->get_control_id('email_logic_section_sendy'),
[
'label' => $this->get_label(),
'condition' => [
'submit_actions' => $this->get_name(),
],
]
);
$widget->add_control(
$this->get_control_id('cemail_logic_pro'),
[
'label' => esc_html__( 'Pro version', 'pdf-for-elementor-forms' ),
'type' => Controls_Manager::RAW_HTML,
'content_classes' => 'pro_disable elementor-panel-alert elementor-panel-alert-info',
'raw' => esc_html__( 'Upgrade to pro version', 'pdf-for-elementor-forms' ),
]
);
$widget->end_controls_section();
}else{
parent::register_settings_section($widget);
}
}
}
class Superaddons_Email_Conditional_Logic_3 extends Superaddons_Email_Conditional_Logic_2 {
public function get_name() {
return 'email_conditional_logic_3';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Email Conditional Logic 3 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Email Conditional Logic 3', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_3';
}
}
class Superaddons_Email_Conditional_Logic_4 extends Superaddons_Email_Conditional_Logic_2 {
public function get_name() {
return 'email_conditional_logic_4';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Email Conditional Logic 4 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Email Conditional Logic 4', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_4';
}
}
class Superaddons_Email_Conditional_Logic_5 extends Superaddons_Email_Conditional_Logic_2 {
public function get_name() {
return 'email_conditional_logic_5';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Email Conditional Logic 5 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Email Conditional Logic 5', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_5';
}
}
class Superaddons_Email_Conditional_Logic_6 extends Superaddons_Email_Conditional_Logic_2 {
public function get_name() {
return 'email_conditional_logic_6';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Email Conditional Logic 6 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Email Conditional Logic 6', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_6';
}
}
class Superaddons_Email_Conditional_Logic_7 extends Superaddons_Email_Conditional_Logic_2 {
public function get_name() {
return 'email_conditional_logic_7';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Email Conditional Logic 7 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Email Conditional Logic 7', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_7';
}
}
class Superaddons_Email_Conditional_Logic_8 extends Superaddons_Email_Conditional_Logic_2 {
public function get_name() {
return 'email_conditional_logic_8';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Email Conditional Logic 8(Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Email Conditional Logic 8', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_8';
}
}
class Superaddons_Email_Conditional_Logic_9 extends Superaddons_Email_Conditional_Logic_2 {
public function get_name() {
return 'email_conditional_logic_9';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Email Conditional Logic 9 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Email Conditional Logic 9', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_9';
}
}
class Superaddons_Email_Conditional_Logic_10 extends Superaddons_Email_Conditional_Logic_2 {
public function get_name() {
return 'email_conditional_logic_10';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Email Conditional Logic 10 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Email Conditional Logic 10', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_10';
}
}
class Superaddons_Email_Conditional_Logic_11 extends Superaddons_Email_Conditional_Logic_2 {
public function get_name() {
return 'email_conditional_logic_11';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Email Conditional Logic 11 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Email Conditional Logic 11', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_11';
}
}
class Superaddons_Email_Conditional_Logic_12 extends Superaddons_Email_Conditional_Logic_2 {
public function get_name() {
return 'email_conditional_logic_12';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Email Conditional Logic 12 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Email Conditional Logic 12', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_12';
}
}
class Superaddons_Email_Conditional_Logic_13 extends Superaddons_Email_Conditional_Logic_2 {
public function get_name() {
return 'email_conditional_logic_13';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Email Conditional Logic 13 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Email Conditional Logic 13', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_13';
}
}
class Superaddons_Email_Conditional_Logic_14 extends Superaddons_Email_Conditional_Logic_2 {
public function get_name() {
return 'email_conditional_logic_14';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Email Conditional Logic 14 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Email Conditional Logic 14', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_14';
}
}
class Superaddons_Email_Conditional_Logic_15 extends Superaddons_Email_Conditional_Logic_2 {
public function get_name() {
return 'email_conditional_logic_15';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Email Conditional Logic 15 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Email Conditional Logic 15', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_15';
}
}
class Superaddons_Email_Conditional_Logic_16 extends Superaddons_Email_Conditional_Logic_2 {
public function get_name() {
return 'email_conditional_logic_16';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Email Conditional Logic 16 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Email Conditional Logic 16', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_16';
}
}
class Superaddons_Email_Conditional_Logic_17 extends Superaddons_Email_Conditional_Logic_2 {
public function get_name() {
return 'email_conditional_logic_17';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Email Conditional Logic 17 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Email Conditional Logic 17', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_17';
}
}
class Superaddons_Email_Conditional_Logic_18 extends Superaddons_Email_Conditional_Logic_2 {
public function get_name() {
return 'email_conditional_logic_18';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Email Conditional Logic 18 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Email Conditional Logic 18', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_18';
}
}
class Superaddons_Email_Conditional_Logic_19 extends Superaddons_Email_Conditional_Logic_2 {
public function get_name() {
return 'email_conditional_logic_19';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Email Conditional Logic 19 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Email Conditional Logic 19', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_19';
}
}
class Superaddons_Email_Conditional_Logic_20 extends Superaddons_Email_Conditional_Logic_2 {
public function get_name() {
return 'email_conditional_logic_20';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Email Conditional Logic 20 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Email Conditional Logic 20', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_20';
}
}
class Superaddons_Email_Conditional_Logic_21 extends Superaddons_Email_Conditional_Logic_2 {
public function get_name() {
return 'email_conditional_logic_21';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Email Conditional Logic 21 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Email Conditional Logic 21', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_21';
}
}
class Superaddons_Email_Conditional_Logic_22 extends Superaddons_Email_Conditional_Logic_2 {
public function get_name() {
return 'email_conditional_logic_22';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Email Conditional Logic 22 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Email Conditional Logic 22', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_22';
}
}
class Superaddons_Email_Conditional_Logic_23 extends Superaddons_Email_Conditional_Logic_2 {
public function get_name() {
return 'email_conditional_logic_23';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Email Conditional Logic 23 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Email Conditional Logic 23', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_23';
}
}
class Superaddons_Email_Conditional_Logic_24 extends Superaddons_Email_Conditional_Logic_2 {
public function get_name() {
return 'email_conditional_logic_24';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Email Conditional Logic 24 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Email Conditional Logic 24', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_24';
}
}
class Superaddons_Email_Conditional_Logic_25 extends Superaddons_Email_Conditional_Logic_2 {
public function get_name() {
return 'email_conditional_logic_25';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Email Conditional Logic 25 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Email Conditional Logic 25', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_25';
}
}
class Superaddons_Email_Conditional_Logic_26 extends Superaddons_Email_Conditional_Logic_2 {
public function get_name() {
return 'email_conditional_logic_26';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Email Conditional Logic 26 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Email Conditional Logic 26', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_26';
}
}
class Superaddons_Email_Conditional_Logic_27 extends Superaddons_Email_Conditional_Logic_2 {
public function get_name() {
return 'email_conditional_logic_27';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Email Conditional Logic 27 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Email Conditional Logic 27', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_27';
}
}
class Superaddons_Email_Conditional_Logic_28 extends Superaddons_Email_Conditional_Logic_2 {
public function get_name() {
return 'email_conditional_logic_28';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Email Conditional Logic 28 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Email Conditional Logic 28', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_28';
}
}
class Superaddons_Email_Conditional_Logic_29 extends Superaddons_Email_Conditional_Logic_2 {
public function get_name() {
return 'email_conditional_logic_29';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Email Conditional Logic 29 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Email Conditional Logic 29', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_29';
}
}
class Superaddons_Email_Conditional_Logic_30 extends Superaddons_Email_Conditional_Logic_2 {
public function get_name() {
return 'email_conditional_logic_30';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Email Conditional Logic 30 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Email Conditional Logic 30', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_30';
}
}
Original: /includes/redirect-action-logic.php
<?php
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
use Elementor\Controls_Manager;
use ElementorPro\Modules\Forms\actions\Redirect;
use Elementor\Modules\DynamicTags\Module as TagsModule;
class Superaddons_Redirect_Conditional_Logic extends Redirect {
public function get_name() {
return 'redirect_logic';
}
public function get_label() {
return esc_html__( 'Redirect Conditional Logic', 'elementor-pro' );
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic';
}
public function register_settings_section( $widget ) {
$check = get_option( '_redmuber_item_1473');
if($check == "ok"){
$options_logic = array(
"==" => esc_html__("is","conditional-logic-for-elementor-forms"),
"!=" => esc_html__("not is","conditional-logic-for-elementor-forms"),
"e" => esc_html__("empty","conditional-logic-for-elementor-forms"),
"!e" => esc_html__("not empty","conditional-logic-for-elementor-forms"),
"c" => esc_html__("contains","conditional-logic-for-elementor-forms"),
"!c" => esc_html__("does not contain","conditional-logic-for-elementor-forms"),
"^" => esc_html__("starts with","conditional-logic-for-elementor-forms"),
"~" => esc_html__("ends with","conditional-logic-for-elementor-forms"),
">" => esc_html__("greater than","conditional-logic-for-elementor-forms"),
"<" => esc_html__("less than","conditional-logic-for-elementor-forms"),
"array" => esc_html__("list array (a,b,c)","conditional-logic-for-elementor-forms"),
"!array" => esc_html__("not list array (a,b,c)","conditional-logic-for-elementor-forms"),
"array_contain" => esc_html__("list array contain (a,b,c)","conditional-logic-for-elementor-forms"),
"!array_contain" => esc_html__("not list array contain (a,b,c)","conditional-logic-for-elementor-forms"),
);
$options_pro = array();
}else{
$options_logic = array(
"==" => esc_html__("is","conditional-logic-for-elementor-forms"),
"!=" => esc_html__("not is","conditional-logic-for-elementor-forms"),
);
$options_pro = array(
"1" => esc_html__("Empty (Pro version)","conditional-logic-for-elementor-forms"),
"1" => esc_html__("Not empty (Pro version)","conditional-logic-for-elementor-forms"),
"3" => esc_html__("Contains (Pro version)","conditional-logic-for-elementor-forms"),
"4" => esc_html__("Does not contain (Pro version)","conditional-logic-for-elementor-forms"),
"5" => esc_html__("Starts with (Pro version)","conditional-logic-for-elementor-forms"),
"6" => esc_html__("Ends with (Pro version)","conditional-logic-for-elementor-forms"),
"7" => esc_html__("Greater than > (Pro version)","conditional-logic-for-elementor-forms"),
"8" => esc_html__("Less than < (Pro version)","conditional-logic-for-elementor-forms"),
"9" => esc_html__("List array (a,b,c)","conditional-logic-for-elementor-forms"),
"10" => esc_html__("Not List array (a,b,c)","conditional-logic-for-elementor-forms"),
"11" => esc_html__("List array contain (a,b,c)","conditional-logic-for-elementor-forms"),
"12" => esc_html__("Not List array contain (a,b,c)","conditional-logic-for-elementor-forms"),
);
}
$widget->start_controls_section(
$this->get_control_id( 'section_redirect' ),
[
'label' => $this->get_label(),
'condition' => [
'submit_actions' => $this->get_name(),
],
]
);
$control_id_conditional_logic = $this->get_control_id( 'redirect_conditional_logic' );
$widget->add_control(
$control_id_conditional_logic,
[
'label' => esc_html__( 'Enable Conditional Logic', 'elementor-pro' ),
'render_type' => 'none',
'type' => Controls_Manager::SWITCHER,
]
);
$widget->add_control(
$this->get_control_id( 'redirect_conditional_logic_display' ),
[
'label' => esc_html__( 'Display mode', "conditional-logic-for-elementor-forms" ),
'type' => Controls_Manager::CHOOSE,
'options' => [
'show' => [
'title' => esc_html__( 'Redirect if', "conditional-logic-for-elementor-forms" ),
'icon' => 'fa fa-eye',
],
'hide' => [
'title' => esc_html__( 'Disable if', "conditional-logic-for-elementor-forms" ),
'icon' => 'fa fa-eye-slash',
],
],
'default' => 'show',
'condition' => [
$control_id_conditional_logic => 'yes'
],
]
);
$widget->add_control(
$this->get_control_id( 'redirect_conditional_logic_trigger' ),
[
'label' => esc_html__( 'When to Trigger', "conditional-logic-for-elementor-forms" ),
'type' => Controls_Manager::SELECT,
'options' => [
"ALL"=>"ALL",
"ANY"=>"ANY"
],
'default' => 'ALL',
'condition' => [
$control_id_conditional_logic => 'yes'
],
]
);
$widget->add_control(
$this->get_control_id( 'redirect_conditional_logic_datas' ),
[
'name' => 'redirect_conditional_logic_datas',
'label' => esc_html__( 'Fields if', "conditional-logic-for-elementor-forms" ),
'type' => 'conditional_logic_repeater',
'fields' => [
[
'name' => 'conditional_logic_id',
'label' => esc_html__( 'Field ID', "conditional-logic-for-elementor-forms" ),
'type' => Controls_Manager::TEXT,
'label_block' => true,
'default' => '',
],
[
'name' => 'conditional_logic_operator',
'label' => esc_html__( 'Operator', "conditional-logic-for-elementor-forms" ),
'type' => Controls_Manager::SELECT,
'label_block' => true,
'options' => $options_logic,
'options_pro' => $options_pro,
'default' => '==',
],
[
'name' => 'conditional_logic_value',
'label' => esc_html__( 'Value to compare', "conditional-logic-for-elementor-forms" ),
'type' => Controls_Manager::TEXT,
'label_block' => true,
'default' => '',
],
],
'condition' => [
$control_id_conditional_logic => 'yes'
],
'style_transfer' => false,
'title_field' => '{{{ conditional_logic_id }}} {{{ conditional_logic_operator }}} {{{ conditional_logic_value }}}',
'default' => array(
array(
'conditional_logic_id' => '',
'conditional_logic_operator' => '==',
'conditional_logic_value' => '',
),
),
]
);
$widget->add_control(
$this->get_control_id( 'redirect_to' ),
[
'label' => esc_html__( 'Redirect To', 'elementor-pro' ),
'type' => Controls_Manager::TEXT,
'placeholder' => esc_html__( 'https://your-link.com', 'elementor-pro' ),
'dynamic' => [
'active' => true,
'categories' => [
TagsModule::POST_META_CATEGORY,
TagsModule::TEXT_CATEGORY,
TagsModule::URL_CATEGORY,
],
],
'label_block' => true,
'render_type' => 'none',
'classes' => 'elementor-control-direction-ltr',
]
);
$widget->end_controls_section();
}
public function on_export( $element ) {
unset(
$element['settings'][$this->get_control_id( 'redirect_to' )]
);
return $element;
}
public function run( $record, $ajax_handler ) {
$settings = $record->get( 'form_settings' );
$send_status = true;
if( $settings[$this->get_control_id( 'redirect_conditional_logic' )] == "yes" ){
$display = $settings[$this->get_control_id( 'redirect_conditional_logic_display' )];
$trigger = $settings[$this->get_control_id( 'redirect_conditional_logic_trigger' )];
$datas = $settings[$this->get_control_id( 'redirect_conditional_logic_datas' )];
$rs = array();
$form_fields = $record->get("fields");
foreach ( $datas as $logic_key => $logic_values ) {
if(isset($form_fields[$logic_values["conditional_logic_id"]])){
$value_id = $form_fields[$logic_values["conditional_logic_id"]]["value"];
if( is_array($value_id) ){
$value_id = implode(", ",$value_id);
}
}else{
$value_id = $logic_values["conditional_logic_id"];
}
$operator = $logic_values["conditional_logic_operator"];
$value = $logic_values["conditional_logic_value"];
$rs[] = $this->elementor_conditional_logic_check_single($value_id,$operator,$value);
}
if( $trigger =="ALL" ){
$check_rs = true;
foreach ( $rs as $fkey => $fvalue ) {
if( $fvalue == false ){
$check_rs =false;
break;
}
}
}else{
$check_rs = false;
foreach ( $rs as $fkey => $fvalue ) {
if( $fvalue == true ){
$check_rs =true;
break;
}
}
}
if($display == "show"){
if( $check_rs == true ){
$send_status = true;
}else{
$send_status = false;
}
}else{
if( $check_rs == true ){
$send_status = false;
}else{
$send_status = true;
}
}
}
if( $send_status == true ){
$redirect_to = $settings[$this->get_control_id( 'redirect_to' )];
$redirect_to = $record->replace_setting_shortcodes( $redirect_to, true );
if ( ! empty( $redirect_to ) && filter_var( $redirect_to, FILTER_VALIDATE_URL ) ) {
$ajax_handler->add_response_data( 'redirect_url', $redirect_to );
}
}else{
//$ajax_handler->add_admin_error_message( "Conditional Logic: Disable Redirect" );
}
}
function elementor_conditional_logic_check_single($value_id,$operator,$value){
$rs = false;
switch($operator) {
case "==":
if( $value_id == $value){
$rs = true;
}
break;
case "!=":
if( $value_id != $value){
$rs = true;
}
break;
case "e":
if( $value_id == ""){
$rs = true;
}
break;
case "!e":
if( $value_id != ""){
$rs = true;
}
break;
case "c":
if( str_contains($value_id,$value) ){
$rs = true;
}
break;
case "!c":
if( !str_contains($value_id,$value) ){
$rs = true;
}
break;
case "^":
if( str_starts_with($value_id,$value) ){
$rs = true;
}
break;
case "~":
if( str_ends_with($value_id,$value) ){
$rs = true;
}
break;
case ">":
if( $value_id > $value){
$rs = true;
}
break;
case "<":
if( $value_id < $value){
$rs = true;
}
break;
case "array":
$values= array_map('trim', explode(',', $value));
if( in_array($value_id,$values)){
$rs = true;
}
break;
case "!array":
$values= array_map('trim', explode(',', $value));
if( !in_array($value_id,$values)){
$rs = true;
}
break;
case "array_contain":
$values= array_map('trim', explode(',', $value));
foreach($values as $vl){
if( str_contains($value_id,$vl) ){
$rs = true;
}
}
break;
case "!array_contain":
$values= array_map('trim', explode(',', $value));
$rs = true;
foreach($values as $vl){
if( str_contains($value_id,$vl) ){
$rs = false;
}
}
break;
default:
break;
}
return $rs;
}
}
class Superaddons_Redirect_Conditional_Logic_2 extends Superaddons_Redirect_Conditional_Logic {
public function get_name() {
return 'redirect_conditional_logic_2';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Redirect Conditional Logic 2 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Redirect Conditional Logic 2', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_2';
}
public function register_settings_section( $widget ) {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
$widget->start_controls_section(
$this->get_control_id('conditional_logic_section_sendy'),
[
'label' => $this->get_label(),
'condition' => [
'submit_actions' => $this->get_name(),
],
]
);
$widget->add_control(
$this->get_control_id('conditional_logic_pro'),
[
'label' => esc_html__( 'Pro version', 'pdf-for-elementor-forms' ),
'type' => Controls_Manager::RAW_HTML,
'content_classes' => 'pro_disable elementor-panel-alert elementor-panel-alert-info',
'raw' => esc_html__( 'Upgrade to pro version', 'pdf-for-elementor-forms' ),
]
);
$widget->end_controls_section();
}else{
parent::register_settings_section($widget);
}
}
}
class Superaddons_Redirect_Conditional_Logic_3 extends Superaddons_Redirect_Conditional_Logic_2 {
public function get_name() {
return 'redirect_conditional_logic_3';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Redirect Conditional Logic 3 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Redirect Conditional Logic 3', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_3';
}
}
class Superaddons_Redirect_Conditional_Logic_4 extends Superaddons_Redirect_Conditional_Logic_2 {
public function get_name() {
return 'redirect_conditional_logic_4';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Redirect Conditional Logic 4 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Redirect Conditional Logic 4', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_4';
}
}
class Superaddons_Redirect_Conditional_Logic_5 extends Superaddons_Redirect_Conditional_Logic_2 {
public function get_name() {
return 'redirect_conditional_logic_5';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Redirect Conditional Logic 5 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Redirect Conditional Logic 5', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_5';
}
}
class Superaddons_Redirect_Conditional_Logic_6 extends Superaddons_Redirect_Conditional_Logic_2 {
public function get_name() {
return 'redirect_conditional_logic_6';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Redirect Conditional Logic 6 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Redirect Conditional Logic 6', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_6';
}
}
class Superaddons_Redirect_Conditional_Logic_7 extends Superaddons_Redirect_Conditional_Logic_2 {
public function get_name() {
return 'redirect_conditional_logic_7';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Redirect Conditional Logic 7 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Redirect Conditional Logic 7', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_7';
}
}
class Superaddons_Redirect_Conditional_Logic_8 extends Superaddons_Redirect_Conditional_Logic_2 {
public function get_name() {
return 'redirect_conditional_logic_8';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Redirect Conditional Logic 8 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Redirect Conditional Logic 8', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_8';
}
}
class Superaddons_Redirect_Conditional_Logic_9 extends Superaddons_Redirect_Conditional_Logic_2 {
public function get_name() {
return 'redirect_conditional_logic_9';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Redirect Conditional Logic 9 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Redirect Conditional Logic 9', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_9';
}
}
class Superaddons_Redirect_Conditional_Logic_10 extends Superaddons_Redirect_Conditional_Logic_2 {
public function get_name() {
return 'redirect_conditional_logic_10';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Redirect Conditional Logic 10 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Redirect Conditional Logic 10', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_10';
}
}
class Superaddons_Redirect_Conditional_Logic_11 extends Superaddons_Redirect_Conditional_Logic_2 {
public function get_name() {
return 'redirect_conditional_logic_11';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Redirect Conditional Logic 11 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Redirect Conditional Logic 11', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_11';
}
}
class Superaddons_Redirect_Conditional_Logic_12 extends Superaddons_Redirect_Conditional_Logic_2 {
public function get_name() {
return 'redirect_conditional_logic_12';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Redirect Conditional Logic 12 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Redirect Conditional Logic 12', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_12';
}
}
class Superaddons_Redirect_Conditional_Logic_13 extends Superaddons_Redirect_Conditional_Logic_2 {
public function get_name() {
return 'redirect_conditional_logic_13';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Redirect Conditional Logic 13 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Redirect Conditional Logic 13', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_13';
}
}
class Superaddons_Redirect_Conditional_Logic_14 extends Superaddons_Redirect_Conditional_Logic_2 {
public function get_name() {
return 'redirect_conditional_logic_14';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Redirect Conditional Logic 14 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Redirect Conditional Logic 14', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_14';
}
}
class Superaddons_Redirect_Conditional_Logic_15 extends Superaddons_Redirect_Conditional_Logic_2 {
public function get_name() {
return 'redirect_conditional_logic_15';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Redirect Conditional Logic 15 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Redirect Conditional Logic 15', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_15';
}
}
class Superaddons_Redirect_Conditional_Logic_16 extends Superaddons_Redirect_Conditional_Logic_2 {
public function get_name() {
return 'redirect_conditional_logic_16';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Redirect Conditional Logic 16 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Redirect Conditional Logic 16', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_16';
}
}
class Superaddons_Redirect_Conditional_Logic_17 extends Superaddons_Redirect_Conditional_Logic_2 {
public function get_name() {
return 'redirect_conditional_logic_17';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Redirect Conditional Logic 17 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Redirect Conditional Logic 17', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_17';
}
}
class Superaddons_Redirect_Conditional_Logic_18 extends Superaddons_Redirect_Conditional_Logic_2 {
public function get_name() {
return 'redirect_conditional_logic_18';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Redirect Conditional Logic 18 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Redirect Conditional Logic 18', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_18';
}
}
class Superaddons_Redirect_Conditional_Logic_19 extends Superaddons_Redirect_Conditional_Logic_2 {
public function get_name() {
return 'redirect_conditional_logic_19';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Redirect Conditional Logic 19 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Redirect Conditional Logic 19', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_19';
}
}
class Superaddons_Redirect_Conditional_Logic_20 extends Superaddons_Redirect_Conditional_Logic_2 {
public function get_name() {
return 'redirect_conditional_logic_20';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Redirect Conditional Logic 20 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Redirect Conditional Logic 20', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_20';
}
}
class Superaddons_Redirect_Conditional_Logic_21 extends Superaddons_Redirect_Conditional_Logic_2 {
public function get_name() {
return 'redirect_conditional_logic_21';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Redirect Conditional Logic 3 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Redirect Conditional Logic 21', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_21';
}
}
class Superaddons_Redirect_Conditional_Logic_22 extends Superaddons_Redirect_Conditional_Logic_2 {
public function get_name() {
return 'redirect_conditional_logic_22';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Redirect Conditional Logic 3 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Redirect Conditional Logic 22', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_22';
}
}
class Superaddons_Redirect_Conditional_Logic_23 extends Superaddons_Redirect_Conditional_Logic_2 {
public function get_name() {
return 'redirect_conditional_logic_23';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Redirect Conditional Logic 3 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Redirect Conditional Logic 23', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_23';
}
}
class Superaddons_Redirect_Conditional_Logic_24 extends Superaddons_Redirect_Conditional_Logic_2 {
public function get_name() {
return 'redirect_conditional_logic_24';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Redirect Conditional Logic 24 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Redirect Conditional Logic 24', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_24';
}
}
class Superaddons_Redirect_Conditional_Logic_25 extends Superaddons_Redirect_Conditional_Logic_2 {
public function get_name() {
return 'redirect_conditional_logic_25';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Redirect Conditional Logic 3 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Redirect Conditional Logic 25', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_25';
}
}
class Superaddons_Redirect_Conditional_Logic_26 extends Superaddons_Redirect_Conditional_Logic_2 {
public function get_name() {
return 'redirect_conditional_logic_26';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Redirect Conditional Logic 3 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Redirect Conditional Logic 26', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_26';
}
}
class Superaddons_Redirect_Conditional_Logic_27 extends Superaddons_Redirect_Conditional_Logic_2 {
public function get_name() {
return 'redirect_conditional_logic_27';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Redirect Conditional Logic 3 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Redirect Conditional Logic 27', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_27';
}
}
class Superaddons_Redirect_Conditional_Logic_28 extends Superaddons_Redirect_Conditional_Logic_2 {
public function get_name() {
return 'redirect_conditional_logic_28';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Redirect Conditional Logic 3 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Redirect Conditional Logic 28', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_28';
}
}
class Superaddons_Redirect_Conditional_Logic_29 extends Superaddons_Redirect_Conditional_Logic_2 {
public function get_name() {
return 'redirect_conditional_logic_29';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Redirect Conditional Logic 3 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Redirect Conditional Logic 29', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_29';
}
}
class Superaddons_Redirect_Conditional_Logic_30 extends Superaddons_Redirect_Conditional_Logic_2 {
public function get_name() {
return 'redirect_conditional_logic_30';
}
public function get_label() {
$check = get_option( '_redmuber_item_1473');
if($check != "ok"){
return esc_html__( 'Redirect Conditional Logic 3 (Pro version)', 'elementor-pro' );
}else{
return esc_html__( 'Redirect Conditional Logic 30', 'elementor-pro' );
}
}
protected function get_control_id( $control_id ) {
return $control_id . '_conditional_logic_30';
}
}
Stammordner: flexityforms-pro.php
<?php
/**
* Plugin Name: FlexityForms Pro
* Plugin URI: https://d-webagentur.de
* Description: Erweiterte benutzerdefinierte Formularaktionen für Elementor Pro.
* Version: 1.0.0
* Author: D-Webagentur - Denny Kruse
* Author URI: https://d-webagentur.de/
* Text Domain: flexityforms-pro
*/
// Sicherstellen, dass kein direkter Zugriff erfolgt
if ( ! defined( 'ABSPATH' ) ) exit;
// Plugin-Pfade definieren
define( 'FLEXITYFORMS_PRO_PLUGIN_PATH', plugin_dir_path( __FILE__ ) );
define( 'FLEXITYFORMS_PRO_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
// Autoloader einbinden
$autoloader = FLEXITYFORMS_PRO_PLUGIN_PATH . 'includes/flexityformspro_autoloader.php';
if ( file_exists( $autoloader ) ) {
include $autoloader;
} else {
error_log('Autoloader-Datei nicht gefunden: ' . $autoloader);
return;
}
// Sicherstellen, dass Elementor Pro aktiv ist
add_action( 'elementor_pro/init', function() {
if ( defined( 'ELEMENTOR_PRO_VERSION' ) && version_compare( ELEMENTOR_PRO_VERSION, '3.0', '>=' ) ) {
new FlexityFormsPro_Init();
} else {
error_log( 'Elementor Pro Version nicht kompatibel.' );
}
} );
class FlexityFormsPro_Init {
public function __construct() {
add_action( 'elementor_pro/forms/actions/register', [ $this, 'register_custom_form_actions' ] );
}
public function register_custom_form_actions( $form_actions_registrar ) {
if ( class_exists( 'FlexityFormsPro_Email_Conditional_Logic' ) ) {
$form_actions_registrar->register( new \FlexityFormsPro_Email_Conditional_Logic() );
}
if ( class_exists( 'FlexityFormsPro_Redirect_Conditional_Logic' ) ) {
$form_actions_registrar->register( new \FlexityFormsPro_Redirect_Conditional_Logic() );
}
}
}
Stammordner: flexityformspro-uninstall.php
<?php
/**
* Handles plugin uninstallation.
*
* This file is executed when the plugin is deleted via the WordPress Admin.
*/
// Exit if accessed directly
if (!defined('WP_UNINSTALL_PLUGIN')) {
exit;
}
// Remove plugin options
$options_to_delete = [
'flexityforms_pro_version',
'flexityforms_pro_settings'
];
foreach ($options_to_delete as $option) {
delete_option($option);
}
// Clean up custom database tables
global $wpdb;
$table_name = $wpdb->prefix . 'flexityforms_pro';
$wpdb->query($wpdb->prepare("DROP TABLE IF EXISTS %s", $table_name));
// Remove transient data
$transient_keys = $wpdb->get_results(
"SELECT option_name FROM {$wpdb->options} WHERE option_name LIKE '_transient_flexityforms_pro_%'",
ARRAY_A
);
if (!empty($transient_keys)) {
foreach ($transient_keys as $transient) {
delete_option($transient['option_name']);
}
}
// Optionally clear log files or other plugin-specific files outside the database
$upload_dir = wp_get_upload_dir();
$log_dir = $upload_dir['basedir'] . '/flexityforms_pro_logs';
if (file_exists($log_dir)) {
array_map('unlink', glob("$log_dir/*.*"));
rmdir($log_dir);
}
/**
* Note: The uninstall process is designed to clean up all plugin-related data
* to comply with best practices and data protection regulations.
*/
assets/css/flexityformspro_admin.css
/* Backend Styles */
/* Add styles for admin settings here */
assets/css/flexityformspro_frontend.css
/* Frontend Styles */
/* Add styles for frontend forms here */
assets/js/flexityformspro_admin.js
// Backend Scripts
// Add JavaScript functionality for admin settings
assets/js/flexityformspro_frontend.js
// Frontend Scripts
// Add JavaScript functionality for frontend forms
includes/flexityformspro_activator.php
<?php
/**
* Activation logic for FlexityForms Pro.
*/
class FlexityFormsPro_Activator {
/**
* Executes activation logic.
*/
public static function activate() {
// Ensure required WordPress version is met
global $wp_version;
if (version_compare($wp_version, '5.0', '<')) {
wp_die(
__('FlexityForms Pro requires WordPress version 5.0 or higher.', 'flexityforms-pro'),
__('Activation Error', 'flexityforms-pro'),
['back_link' => true]
);
}
// Set up default options
self::add_default_options();
// Flush rewrite rules
flush_rewrite_rules();
}
/**
* Adds default options to the database.
*/
private static function add_default_options() {
if (get_option('flexityforms_pro_version') === false) {
add_option('flexityforms_pro_version', '1.0.0');
}
// Add additional default settings here
add_option('flexityforms_pro_default_email', __('example@example.com', 'flexityforms-pro'));
}
}
includes/flexityformspro_admin_ui.php
<?php
/**
* Admin UI for Conditional Logic in FlexityForms Pro.
*/
class FlexityFormsPro_AdminUI {
/**
* Register the admin page for conditional logic settings.
*/
public static function register_admin_page() {
add_menu_page(
__('Conditional Logic', 'flexityforms-pro'),
__('Conditional Logic', 'flexityforms-pro'),
'manage_options',
'flexityforms-conditional-logic',
[__CLASS__, 'render_admin_page'],
'dashicons-forms',
60
);
}
/**
* Render the admin page content.
*/
public static function render_admin_page() {
echo '<div class="wrap">';
echo '<h1>' . esc_html(__('Conditional Logic Settings', 'flexityforms-pro')) . '</h1>';
echo '<p>' . esc_html(__('Configure your conditional logic rules here.', 'flexityforms-pro')) . '</p>';
echo '<div id="flexityforms-admin-logic-ui"></div>'; // Placeholder for future UI
echo '</div>';
}
}
// Register the admin page
add_action('admin_menu', ['FlexityFormsPro_AdminUI', 'register_admin_page']);
?>
includes/flexityformspro_autoloader.php
<?php
/**
* FlexityForms Pro Autoloader
*
* Dieser Autoloader lädt alle benötigten Klassen für das Plugin.
*/
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
spl_autoload_register( function( $class ) {
// Nur Klassen laden, die mit "FlexityFormsPro_" beginnen
if ( strpos( $class, 'FlexityFormsPro_' ) !== 0 ) {
return;
}
// Klasse in Pfad umwandeln
$class_path = strtolower( str_replace( '_', '-', $class ) );
$file_path = FLEXITYFORMS_PRO_PLUGIN_PATH . 'includes/' . $class_path . '.php';
// Datei einbinden, wenn sie existiert
if ( file_exists( $file_path ) ) {
include $file_path;
} else {
error_log( 'FlexityFormsPro-Klasse konnte nicht geladen werden: ' . $class . ' (' . $file_path . ')' );
}
} );
includes/flexityformspro_conditional_email.php
<?php
namespace FlexityFormsPro;
if ( ! defined( 'ABSPATH' ) ) exit;
class EmailConditionalLogic extends \ElementorPro\Modules\Forms\Classes\Action_Base {
public function get_name() {
return 'ffp_email_conditional_logic';
}
public function get_label() {
return 'FFP-Email Conditional Logic';
}
public function run( $submission, $handler ) {
error_log( 'FFP-EmailConditionalLogic ausgeführt.' );
}
}
includes/flexityformspro_conditional_logic.php
<?php
/**
* Conditional Logic and Advanced Features for FlexityForms Pro.
*/
// Include modularized files
// RuleEvaluator: Validates conditional logic rules.
require_once FLEXITYFORMS_PRO_PATH . 'includes/flexityforms_rule_evaluator.php';
// EmailHandler: Processes conditional email sending.
require_once FLEXITYFORMS_PRO_PATH . 'includes/flexityforms_email_handler.php';
// RedirectHandler: Manages conditional redirects.
require_once FLEXITYFORMS_PRO_PATH . 'includes/flexityforms_redirect_handler.php';
// AdminUI: Provides backend settings for conditional logic.
require_once FLEXITYFORMS_PRO_PATH . 'includes/flexityforms_admin_ui.php';
class FlexityFormsPro_ConditionalLogic {
/**
* Initialize conditional logic functionality.
*/
public static function init() {
add_action('flexityforms_pro_process_form', [__CLASS__, 'apply_logic'], 10, 2);
add_action('admin_menu', [__CLASS__, 'register_admin_page']);
add_action('elementor_pro/forms/new_record', [__CLASS__, 'register_elementor_actions'], 10, 2);
}
/**
* Apply conditional logic to form fields.
*
* @param array $form_data Form data submitted by the user.
* @param array $logic_rules Defined conditional logic rules.
* @return array Processed form data.
*/
public static function apply_logic($form_data, $logic_rules) {
foreach ($logic_rules as $rule_group) {
if (!FlexityFormsPro_RuleEvaluator::evaluate_multiple_rules($rule_group['rules'], $form_data)) {
unset($form_data[$rule_group['field']]);
}
}
return $form_data;
}
/**
* Register admin page for Conditional Logic settings.
*/
public static function register_admin_page() {
FlexityFormsPro_AdminUI::register_admin_page();
}
/**
* Register custom actions in Elementor.
*/
public static function register_elementor_actions($record, $handler) {
$form_settings = $handler->get_settings();
if (!empty($form_settings['ffp_conditional_email'])) {
FlexityFormsPro_EmailHandler::handle_email($record, $form_settings['ffp_conditional_email']);
}
if (!empty($form_settings['ffp_conditional_redirect'])) {
FlexityFormsPro_RedirectHandler::handle_redirect($record, $form_settings['ffp_conditional_redirect']);
}
}
}
// Initialize the class
FlexityFormsPro_ConditionalLogic::init();
includes/flexityformspro_conditional_redirect.php
<?php
namespace FlexityFormsPro;
if ( ! defined( 'ABSPATH' ) ) exit;
class RedirectConditionalLogic extends \ElementorPro\Modules\Forms\Classes\Action_Base {
public function get_name() {
return 'ffp_redirect_conditional_logic';
}
public function get_label() {
return 'FFP-Redirect Conditional Logic';
}
public function run( $submission, $handler ) {
error_log( 'FFP-RedirectConditionalLogic ausgeführt.' );
}
}
includes/flexityformspro_core.php
<?php
namespace FlexityFormsPro;
if (!defined('ABSPATH')) {
exit; // Direktzugriff verhindern
}
class Core {
public static function init() {
add_action('elementor_pro/init', [__CLASS__, 'register_hooks']);
}
public static function register_hooks() {
add_action('elementor_pro/forms/new_action', [__CLASS__, 'register_elementor_actions']);
}
public static function register_elementor_actions($manager) {
// Email Conditional Logic
if (class_exists('\FlexityFormsPro\ConditionalEmail')) {
$manager->register(new \FlexityFormsPro\ConditionalEmail());
error_log('FFP Conditional Email erfolgreich registriert.');
} else {
error_log('FFP Conditional Email konnte nicht geladen werden.');
}
// Redirect Conditional Logic
if (class_exists('\FlexityFormsPro\ConditionalRedirect')) {
$manager->register(new \FlexityFormsPro\ConditionalRedirect());
error_log('FFP Conditional Redirect erfolgreich registriert.');
} else {
error_log('FFP Conditional Redirect konnte nicht geladen werden.');
}
}
}
// Initialisieren
Core::init();
includes/flexityformspro_deactivator.php
<?php
/**
* Deactivation logic for FlexityForms Pro.
*/
class FlexityFormsPro_Deactivator {
/**
* Executes deactivation logic.
*/
public static function deactivate() {
// Flush rewrite rules to remove plugin's custom rewrite rules
flush_rewrite_rules();
// Optionally remove transients or other temporary data
self::cleanup_transients();
}
/**
* Removes plugin-specific transients.
*/
private static function cleanup_transients() {
global $wpdb;
$transients = $wpdb->get_results(
"SELECT option_name FROM {$wpdb->options} WHERE option_name LIKE '_transient_flexityforms_pro_%'",
ARRAY_A
);
if (!empty($transients)) {
foreach ($transients as $transient) {
delete_option($transient['option_name']);
}
}
}
}
includes/flexityformspro_email_handler.php
<?php
/**
* Email Handler for FlexityForms Pro.
*/
class FlexityFormsPro_EmailHandler {
/**
* Process conditional email logic.
*
* @param array $record Form submission data.
* @param array $settings Email settings including conditions.
*/
public static function handle_email($record, $settings) {
$email_address = $settings['email'];
$subject = $settings['subject'];
$message = $settings['message'];
$conditions = $settings['conditions'];
foreach ($conditions as $condition) {
if (!FlexityFormsPro_RuleEvaluator::evaluate_rule($condition, $record->get('fields'))) {
return; // Skip email if any condition fails
}
}
wp_mail($email_address, $subject, $message);
}
}
?>
includes/flexityformspro_redirect_handler.php
<?php
/**
* Redirect Handler for FlexityForms Pro.
*/
class FlexityFormsPro_RedirectHandler {
/**
* Process conditional redirect logic.
*
* @param array $record Form submission data.
* @param array $settings Redirect settings including conditions.
*/
public static function handle_redirect($record, $settings) {
$redirect_url = $settings['url'];
$conditions = $settings['conditions'];
foreach ($conditions as $condition) {
if (!FlexityFormsPro_RuleEvaluator::evaluate_rule($condition, $record->get('fields'))) {
return; // Skip redirect if any condition fails
}
}
wp_redirect($redirect_url);
exit;
}
}
?>
includes/flexityformspro_rule_evaluator.php
<?php
/**
* Rule Evaluator for FlexityForms Pro.
*/
class FlexityFormsPro_RuleEvaluator {
/**
* Evaluate a single conditional logic rule.
*
* @param array $rule The logic rule to evaluate.
* @param array $form_data Form data submitted by the user.
* @return bool True if the rule passes, false otherwise.
*/
public static function evaluate_rule($rule, $form_data) {
$field_value = isset($form_data[$rule['field']]) ? $form_data[$rule['field']] : null;
switch ($rule['operator']) {
case 'equals':
return $field_value === $rule['value'];
case 'not_equals':
return $field_value !== $rule['value'];
case 'greater_than':
return $field_value > $rule['value'];
case 'less_than':
return $field_value < $rule['value'];
case 'contains':
return strpos($field_value, $rule['value']) !== false;
case 'not_contains':
return strpos($field_value, $rule['value']) === false;
case 'is_checked':
return !empty($field_value) && $field_value === '1';
case 'is_not_checked':
return empty($field_value) || $field_value !== '1';
default:
return false;
}
}
}
?>
includes/flexityformspro_settings.php
<?php
/**
* Plugin-Einstellungen für FlexityForms Pro
*/
if ( ! defined( 'ABSPATH' ) ) exit;
// Beispiel: Hinzufügen von Einstellungen im WP-Admin
add_action( 'admin_menu', function() {
add_options_page(
'FlexityForms Pro',
'FlexityForms Pro',
'manage_options',
'flexityforms-pro-settings',
function() {
echo '<h1>FlexityForms Pro Einstellungen</h1>';
}
);
} );
languages/flexityformspro_language.pot
# FlexityForms Pro Translation Template
msgid ""
msgstr ""
"Project-Id-Version: FlexityForms Pro\n"
"POT-Creation-Date: 2025-01-18 00:00+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
msgid "FlexityForms"
msgstr ""
msgid "FlexityForm"
msgstr ""