Files
roi-theme/wp-content/plugins/wp-marketing-automations/rules/rules/ab_cart.php
root a22573bf0b Commit inicial - WordPress Análisis de Precios Unitarios
- WordPress core y plugins
- Tema Twenty Twenty-Four configurado
- Plugin allow-unfiltered-html.php simplificado
- .gitignore configurado para excluir wp-config.php y uploads

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 21:04:30 -06:00

1072 lines
30 KiB
PHP
Executable File

<?php
class BWFAN_Rule_Cart_Total extends BWFAN_Rule_Base {
public $supports = array( 'cart' );
public function __construct() {
$this->v2 = true;
parent::__construct( 'cart_total' );
}
/** v2 Methods: START */
public function is_match_v2( $automation_data, $rule_data ) {
if ( ! isset( $automation_data['global'] ) || ! is_array( $automation_data['global'] ) ) {
return $this->return_is_match( false, $rule_data );
}
$abandoned_data = $automation_data['global']['cart_details'];
$price = (float) $abandoned_data['total'];
$value = (float) $rule_data['data'];
switch ( $rule_data['rule'] ) {
case '==':
$result = $price === $value;
break;
case '!=':
$result = $price !== $value;
break;
case '>':
$result = $price > $value;
break;
case '<':
$result = $price < $value;
break;
case '>=':
$result = $price >= $value;
break;
case '<=':
$result = $price <= $value;
break;
default:
$result = false;
break;
}
return $this->return_is_match( $result, $rule_data );
}
public function get_condition_input_type() {
return 'Text';
}
public function is_match( $rule_data ) {
$abandoned_data = BWFAN_Core()->rules->getRulesData( 'abandoned_data' );
$price = (float) $abandoned_data['total'];
$value = (float) $rule_data['condition'];
switch ( $rule_data['operator'] ) {
case '==':
$result = $price === $value;
break;
case '!=':
$result = $price !== $value;
break;
case '>':
$result = $price > $value;
break;
case '<':
$result = $price < $value;
break;
case '>=':
$result = $price >= $value;
break;
case '<=':
$result = $price <= $value;
break;
default:
$result = false;
break;
}
return $this->return_is_match( $result, $rule_data );
}
public function ui_view() {
?>
Cart Total
<% var ops = JSON.parse('<?php echo wp_json_encode( $this->get_possible_rule_operators() ); ?>'); %>
<%= ops[operator] %>
<%= condition %>
<?php
}
public function get_possible_rule_operators() {
return $this->get_possible_number_rule_operators();
}
}
class BWFAN_Rule_All_Cart_Items_Purchased extends BWFAN_Rule_Base {
public function __construct() {
$this->v2 = true;
parent::__construct( 'all_cart_items_purchased' );
}
/** v2 Methods: START */
public function get_options( $term = '' ) {
return $this->get_possible_rule_values();
}
public function get_possible_rule_values() {
return array(
'yes' => __( 'Yes', 'wp-marketing-automations' ),
'no' => __( 'No', 'wp-marketing-automations' ),
);
}
public function get_rule_type() {
return 'Select';
}
public function is_match_v2( $automation_data, $rule_data ) {
if ( ! isset( $automation_data['global'] ) || ! is_array( $automation_data['global'] ) ) {
return $this->return_is_match( false, $rule_data );
}
$abandoned_data = $automation_data['global']['cart_details'];
$cart_contents = maybe_unserialize( $abandoned_data['items'] );
$user_id = 0;
$user = get_user_by( 'email', $abandoned_data['email'] );
if ( $user instanceof WP_User ) {
$user_id = $user->ID;
}
$customer = bwf_get_contact( $user_id, $abandoned_data['email'] );
if ( $customer->get_id() <= 0 ) {
return 'no' === $rule_data['data'];
}
$customer->set_customer_child();
$products = $customer->get_customer_purchased_products();
if ( empty( $products ) ) {
return 'no' === $rule_data['data'];
}
$result = false;
if ( is_array( $cart_contents ) && count( $cart_contents ) ) {
$cart_products = [];
foreach ( $cart_contents as $cart_item ) {
$id = $cart_item['variation_id'];
if ( 0 === absint( $id ) ) {
$id = $cart_item['product_id'];
}
$cart_products[] = $id;
}
if ( empty( array_diff( $cart_products, $products ) ) ) {
$result = true;
}
}
return ( 'yes' === $rule_data['data'] ) ? $result : ! $result;
}
/** v2 Methods: END */
public function get_possible_rule_operators() {
return null;
}
public function is_match( $rule_data ) {
$result = false;
$abandoned_data = BWFAN_Core()->rules->getRulesData( 'abandoned_data' );
$cart_contents = maybe_unserialize( $abandoned_data['items'] );
$user_id = 0;
$user = get_user_by( 'email', $abandoned_data['email'] );
if ( $user instanceof WP_User ) {
$user_id = $user->ID;
}
$customer = bwf_get_contact( $user_id, $abandoned_data['email'] );
if ( $customer->get_id() <= 0 ) {
return 'no' === $rule_data['condition'];
}
$customer->set_customer_child();
$products = $customer->get_customer_purchased_products();
if ( empty( $products ) ) {
return 'no' === $rule_data['condition'];
}
if ( is_array( $cart_contents ) && count( $cart_contents ) ) {
$cart_products = [];
foreach ( $cart_contents as $cart_item ) {
$id = $cart_item['variation_id'];
if ( 0 === absint( $id ) ) {
$id = $cart_item['product_id'];
}
$cart_products[] = $id;
}
if ( empty( array_diff( $cart_products, $products ) ) ) {
$result = true;
}
}
return ( 'yes' === $rule_data['condition'] ) ? $result : ! $result;
}
public function ui_view() {
?>
<% if (condition == "yes") { %>All <% } %>
<% if (condition == "no") { %>No <% } %>
<?php
esc_html_e( ' Cart Items purchased in the past', 'wp-marketing-automations' );
}
}
class BWFAN_Rule_Cart_Product extends BWFAN_Rule_Products {
public $supports = array( 'cart' );
public function __construct() {
$this->v2 = true;
parent::__construct( 'cart_product' );
}
public function get_condition_input_type() {
return 'Cart_Product_Select';
}
/** v2 Methods: START */
public function get_options( $term = '' ) {
return $this->get_search_results( $term, true );
}
public function get_rule_type() {
return 'product-qty';
}
public function get_value_label() {
return __( 'Product', 'wp-marketing-automations' );
}
public function is_match_v2( $automation_data, $rule_data ) {
if ( ! isset( $automation_data['global'] ) || ! is_array( $automation_data['global'] ) ) {
return $this->return_is_match( false, $rule_data );
}
$abandoned_data = $automation_data['global']['cart_details'];
$cart_contents = maybe_unserialize( $abandoned_data['items'] );
$products = isset( $rule_data['data']['search'] ) ? $rule_data['data']['search'] : [];
$products = array_map( function ( $product ) {
return absint( $product['key'] );
}, $products );
/** Marking $products always array */
$quantity = isset( $rule_data['data']['qty'] ) ? absint( $rule_data['data']['qty'] ) : 1;
$type = $rule_data['rule'];
$found_quantity = 0;
if ( $cart_contents && is_array( $cart_contents ) && count( $cart_contents ) ) {
foreach ( $cart_contents as $cart_item ) {
if ( in_array( intval( $cart_item['product_id'] ), $products, true ) || ( isset( $cart_item['variation_id'] ) && in_array( intval( $cart_item['variation_id'] ), $products, true ) ) ) {
$found_quantity += $cart_item['quantity'];
}
}
}
$found_quantity = absint( $found_quantity );
$result = false;
switch ( $type ) {
case '<':
$result = $quantity >= $found_quantity;
break;
case '>':
$result = $quantity <= $found_quantity;
break;
case '==':
$result = $quantity === $found_quantity;
break;
case '!=':
$result = $quantity !== $found_quantity;
break;
}
return $this->return_is_match( $result, $rule_data );
}
/** v2 Methods: END */
public function get_condition_values_nice_names( $values ) {
$return = array();
if ( empty( $values ) || ! isset( $values['products'] ) ) {
return $return;
}
if ( is_array( $values['products'] ) ) {
foreach ( $values['products'] as $id ) {
$return[ $id ] = BWFAN_Common::get_formatted_product_name( wc_get_product( $id ) );
}
} elseif ( absint( $values['products'] ) > 0 ) {
$return[ $values['products'] ] = BWFAN_Common::get_formatted_product_name( wc_get_product( $values['products'] ) );
}
return $return;
}
public function get_search_type_name() {
return 'product_search';
}
public function is_match( $rule_data ) {
$result = false;
$abandoned_data = BWFAN_Core()->rules->getRulesData( 'abandoned_data' );
$cart_contents = maybe_unserialize( $abandoned_data['items'] );
$products = isset( $rule_data['condition']['products'] ) ? $rule_data['condition']['products'] : [];
/** Marking $products always array */
$products = is_array( $products ) ? array_map( 'intval', $products ) : [ absint( $products ) ];
$quantity = absint( $rule_data['condition']['qty'] );
$type = $rule_data['operator'];
$found_quantity = 0;
if ( $cart_contents && is_array( $cart_contents ) && count( $cart_contents ) ) {
foreach ( $cart_contents as $cart_item ) {
if ( in_array( intval( $cart_item['product_id'] ), $products, true ) || ( isset( $cart_item['variation_id'] ) && in_array( intval( $cart_item['variation_id'] ), $products, true ) ) ) {
$found_quantity += $cart_item['quantity'];
}
}
}
$found_quantity = absint( $found_quantity );
switch ( $type ) {
case '<':
$result = $quantity >= $found_quantity;
break;
case '>':
$result = $quantity <= $found_quantity;
break;
case '==':
$result = $quantity === $found_quantity;
break;
case '!=':
$result = $quantity !== $found_quantity;
break;
}
return $this->return_is_match( $result, $rule_data );
}
public function ui_view() {
?>
Cart Items
<% var ops = JSON.parse('<?php echo wp_json_encode( $this->get_possible_rule_operators() ); ?>'); %>
<%= ops[operator] +' ' +condition.qty +' qty of' %>
<% var chosen = []; %>
<% if(_.has(condition, 'products')) { %>
<% chosen.push(uiData[condition.products]); %>
<% } %>
<%= chosen.join("/ ") %>
<?php
}
public function get_possible_rule_operators() {
return array(
'>' => __( 'contains at least', 'wp-marketing-automations' ),
'<' => __( 'contains less than', 'wp-marketing-automations' ),
'==' => __( 'contains exactly', 'wp-marketing-automations' ),
'!=' => __( 'does not contain', 'wp-marketing-automations' ),
);
}
}
class BWFAN_Rule_Cart_Category extends BWFAN_Rule_Term_Taxonomy {
public $supports = array( 'cart' );
public $taxonomy_name = 'product_cat';
public function __construct() {
$this->v2 = true;
parent::__construct( 'cart_category' );
$this->v2 = true;
}
/** v2 Methods: START */
public function get_options( $term = '' ) {
return $this->get_search_results( $term, true );
}
public function get_rule_type() {
return 'Search';
}
/** v2 Methods: END */
public function get_possible_rule_values() {
$result = array();
$terms = get_terms( 'product_cat', array(
'hide_empty' => false,
) );
if ( $terms && ! is_wp_error( $terms ) ) {
foreach ( $terms as $term ) {
$result[ $term->term_id ] = $term->name;
}
}
return $result;
}
public function get_term_ids( $automation_data = [] ) {
if ( ! empty( $automation_data ) && isset( $automation_data['global'] ) && is_array( $automation_data['global'] ) ) {
$abandoned_data = $automation_data['global']['cart_details'];
} else {
$abandoned_data = BWFAN_Core()->rules->getRulesData( 'abandoned_data' );
}
$cart_contents = maybe_unserialize( $abandoned_data['items'] );
$all_terms = array();
if ( ! is_array( $cart_contents ) || 0 === count( $cart_contents ) ) {
return $all_terms;
}
foreach ( $cart_contents as $item ) {
$product_id = $item['product_id'];
$product = wc_get_product( $product_id );
$product_id = ( $product->get_parent_id() ) ? $product->get_parent_id() : $product_id;
$terms = wp_get_object_terms( $product_id, $this->taxonomy_name, array(
'fields' => 'ids',
) );
$all_terms = array_merge( $all_terms, $terms );
}
return $all_terms;
}
public function ui_view() {
esc_html_e( 'Cart Category ', 'wp-marketing-automations' );
?>
<% var ops = JSON.parse('<?php echo wp_json_encode( $this->get_possible_rule_operators() ); ?>'); %>
<%= ops[operator] %><% var chosen = []; %>
<% _.each(condition, function( value, key ){ %>
<% chosen.push(uiData[value]); %>
<% }); %>
<%= chosen.join("/ ") %>
<?php
}
public function get_possible_rule_operators() {
return array(
'any' => __( 'matches any of', 'wp-marketing-automations' ),
'none' => __( 'matches none of', 'wp-marketing-automations' ),
);
}
}
class BWFAN_Rule_Cart_Items_Tag extends BWFAN_Rule_Term_Taxonomy {
public $supports = array( 'cart' );
public $taxonomy_name = 'product_tag';
public function __construct() {
$this->v2 = true;
parent::__construct( 'cart_items_tag' );
}
/** v2 Methods: START */
public function get_options( $term = '' ) {
return $this->get_search_results( $term, true );
}
public function get_rule_type() {
return 'Search';
}
/** v2 Methods: END */
public function get_possible_rule_values() {
$result = array();
$terms = get_terms( 'product_tag', array(
'hide_empty' => false,
) );
if ( $terms && ! is_wp_error( $terms ) ) {
foreach ( $terms as $term ) {
$result[ $term->term_id ] = $term->name;
}
}
return $result;
}
public function get_term_ids( $automation_data = [] ) {
if ( ! empty( $automation_data ) && isset( $automation_data['global'] ) && is_array( $automation_data['global'] ) ) {
$abandoned_data = $automation_data['global']['cart_details'];
} else {
$abandoned_data = BWFAN_Core()->rules->getRulesData( 'abandoned_data' );
}
$cart_contents = maybe_unserialize( $abandoned_data['items'] );
$all_terms = array();
if ( ! is_array( $cart_contents ) || 0 === count( $cart_contents ) ) {
return $all_terms;
}
foreach ( $cart_contents as $item ) {
$product_id = $item['product_id'];
$product = wc_get_product( $product_id );
$product_id = ( $product->get_parent_id() ) ? $product->get_parent_id() : $product_id;
$terms = wp_get_object_terms( $product_id, $this->taxonomy_name, array(
'fields' => 'ids',
) );
$all_terms = array_merge( $all_terms, $terms );
}
return $all_terms;
}
public function ui_view() {
esc_html_e( 'Cart Items Tag ', 'wp-marketing-automations' );
?>
<% var ops = JSON.parse('<?php echo wp_json_encode( $this->get_possible_rule_operators() ); ?>'); %>
<%= ops[operator] %><% var chosen = []; %>
<% _.each(condition, function( value, key ){ %>
<% chosen.push(uiData[value]); %>
<% }); %>
<%= chosen.join("/ ") %>
<?php
}
public function get_possible_rule_operators() {
return array(
'any' => __( 'matches any of', 'wp-marketing-automations' ),
'none' => __( 'matches none of', 'wp-marketing-automations' ),
);
}
}
class BWFAN_Rule_Cart_Coupons extends BWFAN_Dynamic_Option_Base {
public function __construct() {
$this->v2 = true;
parent::__construct( 'cart_coupons' );
}
public function get_condition_values_nice_names( $values ) {
$return = [];
if ( count( $values ) > 0 ) {
foreach ( $values as $coupon_id ) {
$return[ $coupon_id ] = get_the_title( $coupon_id );
}
}
return $return;
}
/** v2 Methods: START */
public function get_options( $term = '' ) {
return $this->get_search_results( $term, true );
}
public function get_search_results( $term, $v2 = false ) {
$array = array();
$args = array(
'post_type' => 'shop_coupon',
'posts_per_page' => 10,
'paged' => 1,
's' => $term ?? '',
);
$posts = get_posts( $args );
if ( $posts && is_array( $posts ) && count( $posts ) > 0 ) {
foreach ( $posts as $post ) :
setup_postdata( $post );
if ( ! $v2 ) {
$array[] = array(
'id' => (string) $post->ID,
'text' => $post->post_title,
);
} else {
$array[ $post->ID ] = $post->post_title;
}
endforeach;
}
if ( $v2 ) {
return $array;
}
wp_send_json( array(
'results' => $array,
) );
}
public function get_rule_type() {
return 'Search';
}
public function is_match_v2( $automation_data, $rule_data ) {
if ( ! isset( $automation_data['global'] ) || ! is_array( $automation_data['global'] ) ) {
return $this->return_is_match( false, $rule_data );
}
global $wpdb;
$type = $rule_data['rule'];
$abandoned_data = $automation_data['global']['cart_details'];
$used_coupons = maybe_unserialize( $abandoned_data['coupons'] );
$saved_coupons = array_map( function ( $data ) {
return $data['key'];
}, $rule_data['data'] );
if ( empty( $used_coupons ) ) {
if ( 'all' === $type || 'any' === $type ) {
$res = false;
} else {
$res = true;
}
return $this->return_is_match( $res, $rule_data );
}
$used_coupons_ids = [];
foreach ( $used_coupons as $coupon => $value ) { //phpcs:ignore WordPressVIPMinimum.Variables.VariableAnalysis
$used_coupons_ids[] = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM {$wpdb->posts} WHERE post_title = %s AND post_type = 'shop_coupon' AND post_status = 'publish' LIMIT 1;", $coupon ) ); //phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
}
$result = false;
switch ( $type ) {
case 'all':
if ( is_array( $saved_coupons ) && is_array( $used_coupons_ids ) ) {
$result = count( array_intersect( $saved_coupons, $used_coupons_ids ) ) === count( $saved_coupons );
}
break;
case 'any':
if ( is_array( $saved_coupons ) && is_array( $used_coupons_ids ) ) {
$result = count( array_intersect( $saved_coupons, $used_coupons_ids ) ) >= 1;
}
break;
case 'none':
if ( is_array( $saved_coupons ) && is_array( $used_coupons_ids ) ) {
$result = count( array_intersect( $saved_coupons, $used_coupons_ids ) ) === 0;
}
break;
}
return $this->return_is_match( $result, $rule_data );
}
/** v2 Methods: END */
public function get_search_type_name() {
return 'coupon_rule';
}
public function is_match( $rule_data ) {
global $wpdb;
$type = $rule_data['operator'];
$abandoned_data = BWFAN_Core()->rules->getRulesData( 'abandoned_data' );
$used_coupons = maybe_unserialize( $abandoned_data['coupons'] );
if ( empty( $used_coupons ) ) {
if ( 'all' === $type || 'any' === $type ) {
$res = false;
} else {
$res = true;
}
return $this->return_is_match( $res, $rule_data );
}
$used_coupons_ids = [];
foreach ( $used_coupons as $coupon => $value ) { //phpcs:ignore WordPressVIPMinimum.Variables.VariableAnalysis
$used_coupons_ids[] = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM {$wpdb->posts} WHERE post_title = %s AND post_type = 'shop_coupon' AND post_status = 'publish' LIMIT 1;", $coupon ) ); //phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
}
$result = false;
switch ( $type ) {
case 'all':
if ( is_array( $rule_data['condition'] ) && is_array( $used_coupons_ids ) ) {
$result = count( array_intersect( $rule_data['condition'], $used_coupons_ids ) ) === count( $rule_data['condition'] );
}
break;
case 'any':
if ( is_array( $rule_data['condition'] ) && is_array( $used_coupons_ids ) ) {
$result = count( array_intersect( $rule_data['condition'], $used_coupons_ids ) ) >= 1;
}
break;
case 'none':
if ( is_array( $rule_data['condition'] ) && is_array( $used_coupons_ids ) ) {
$result = count( array_intersect( $rule_data['condition'], $used_coupons_ids ) ) === 0;
}
break;
}
return $this->return_is_match( $result, $rule_data );
}
public function ui_view() {
echo esc_html__( 'Cart Coupon Code', 'wp-marketing-automations' );
?>
<% var ops = JSON.parse('<?php echo wp_json_encode( $this->get_possible_rule_operators() ); ?>'); %>
<%= ops[operator] %> <% var chosen = []; %>
<% _.each(condition, function( value, key ){ %>
<% chosen.push(uiData[value]); %>
<% }); %>
<%= chosen.join("/ ") %>
<?php
}
public function get_possible_rule_operators() {
return array(
'any' => __( 'matches any of', 'wp-marketing-automations' ),
'all' => __( 'matches all of ', 'wp-marketing-automations' ),
'none' => __( 'matches none of', 'wp-marketing-automations' ),
);
}
}
class BWFAN_Rule_Cart_Coupon_Text_Match extends BWFAN_Rule_Base {
public function __construct() {
$this->v2 = true;
parent::__construct( 'cart_coupon_text_match' );
}
public function is_match_v2( $automation_data, $rule_data ) {
if ( ! isset( $automation_data['global'] ) || ! is_array( $automation_data['global'] ) ) {
return $this->return_is_match( false, $rule_data );
}
$abandoned_data = $automation_data['global']['cart_details'];
$used_coupons = maybe_unserialize( $abandoned_data['coupons'] );
return $this->return_is_match( BWFAN_Common::validate_string_multi( $used_coupons, $rule_data['rule'], $rule_data['data'] ), $rule_data );
}
public function conditions_view() {
$condition_input_type = $this->get_condition_input_type();
$values = $this->get_possible_rule_values();
$value_args = array(
'input' => $condition_input_type,
'name' => 'bwfan_rule[<%= groupId %>][<%= ruleId %>][condition]',
'choices' => $values,
'placeholder' => __( 'Enter Few Characters...', 'wp-marketing-automations' ),
);
bwfan_Input_Builder::create_input_field( $value_args );
}
public function get_condition_input_type() {
return 'Text';
}
public function get_possible_rule_values() {
return null;
}
public function is_match( $rule_data ) {
$abandoned_data = BWFAN_Core()->rules->getRulesData( 'abandoned_data' );
$used_coupons = maybe_unserialize( $abandoned_data['coupons'] );
return $this->return_is_match( BWFAN_Common::validate_string_multi( $used_coupons, $rule_data['operator'], $rule_data['condition'] ), $rule_data );
}
public function ui_view() {
?>
Cart Coupon Code
<% var ops = JSON.parse('<?php echo wp_json_encode( $this->get_possible_rule_operators() ); ?>'); %>
<%= ops[operator] %>
'<%= condition %>'
<?php
}
public function get_possible_rule_operators() {
return array(
'contains' => __( 'contains', 'wp-marketing-automations' ),
'is' => __( 'matches exactly', 'wp-marketing-automations' ),
'starts_with' => __( 'starts with', 'wp-marketing-automations' ),
'ends_with' => __( 'ends with', 'wp-marketing-automations' ),
);
}
}
class BWFAN_Rule_Cart_Contains_Coupon extends BWFAN_Rule_Base {
public function __construct() {
$this->v2 = true;
parent::__construct( 'cart_contains_coupon' );
}
/** v2 Methods: START */
public function get_options( $term = '' ) {
return $this->get_possible_rule_values();
}
public function get_possible_rule_values() {
return array(
'yes' => __( 'Yes', 'wp-marketing-automations' ),
'no' => __( 'No', 'wp-marketing-automations' ),
);
}
public function get_rule_type() {
return 'Select';
}
public function is_match_v2( $automation_data, $rule_data ) {
if ( ! isset( $automation_data['global'] ) || ! is_array( $automation_data['global'] ) ) {
return $this->return_is_match( false, $rule_data );
}
$abandoned_data = $automation_data['global']['cart_details'];
$cart_coupon = maybe_unserialize( $abandoned_data['coupons'] );
$result = false;
if ( ! empty( $cart_coupon ) ) {
$result = true;
}
return ( 'yes' === $rule_data['data'] ) ? $result : ! $result;
}
public function get_default_rule_value() {
return 'yes';
}
/** v2 Methods: END */
public function get_possible_rule_operators() {
return null;
}
public function is_match( $rule_data ) {
$result = false;
$abandoned_data = BWFAN_Core()->rules->getRulesData( 'abandoned_data' );
$cart_coupon = maybe_unserialize( $abandoned_data['coupons'] );
if ( ! empty( $cart_coupon ) ) {
$result = true;
}
return ( 'yes' === $rule_data['condition'] ) ? $result : ! $result;
}
public function ui_view() {
esc_html_e( 'Cart', 'wp-marketing-automations' );
?>
<% if (condition == "yes") { %> contains <% } %>
<% if (condition == "no") { %> does not contain <% } %>
<?php
esc_html_e( 'Coupon', 'wp-marketing-automations' );
}
}
class BWFAN_Rule_Cart_Item_Count extends BWFAN_Rule_Base {
public $supports = array( 'cart' );
public function __construct() {
$this->v2 = true;
parent::__construct( 'cart_item_count' );
}
/** v2 Methods: START */
public function get_rule_type() {
return 'Number';
}
public function is_match_v2( $automation_data, $rule_data ) {
if ( ! isset( $automation_data['global'] ) || ! is_array( $automation_data['global'] ) ) {
return $this->return_is_match( false, $rule_data );
}
$abandoned_data = $automation_data['global']['cart_details'];
$cart_contents = maybe_unserialize( $abandoned_data['items'] );
/** Marking $products always array */
$value = absint( $rule_data['data'] );
$found_quantity = ( is_array( $cart_contents ) && count( $cart_contents ) > 0 ) ? count( $cart_contents ) : 0;
switch ( $rule_data['rule'] ) {
case '==':
$result = absint( $found_quantity ) === $value;
break;
case '!=':
$result = absint( $found_quantity ) !== $value;
break;
case '>':
$result = absint( $found_quantity ) > $value;
break;
case '<':
$result = absint( $found_quantity ) < $value;
break;
case '>=':
$result = absint( $found_quantity ) >= $value;
break;
case '<=':
$result = absint( $found_quantity ) <= $value;
break;
default:
$result = false;
break;
}
return $this->return_is_match( $result, $rule_data );
}
/** v2 Methods: END */
public function get_condition_input_type() {
return 'Text';
}
public function is_match( $rule_data ) {
$abandoned_data = BWFAN_Core()->rules->getRulesData( 'abandoned_data' );
$cart_contents = maybe_unserialize( $abandoned_data['items'] );
/** Marking $products always array */
$value = absint( $rule_data['condition'] );
$found_quantity = ( is_array( $cart_contents ) && count( $cart_contents ) > 0 ) ? count( $cart_contents ) : 0;
switch ( $rule_data['operator'] ) {
case '==':
$result = absint( $found_quantity ) === $value;
break;
case '!=':
$result = absint( $found_quantity ) !== $value;
break;
case '>':
$result = absint( $found_quantity ) > $value;
break;
case '<':
$result = absint( $found_quantity ) < $value;
break;
case '>=':
$result = absint( $found_quantity ) >= $value;
break;
case '<=':
$result = absint( $found_quantity ) <= $value;
break;
default:
$result = false;
break;
}
return $this->return_is_match( $result, $rule_data );
}
public function ui_view() {
?>
Cart Item Count is
<% var ops = JSON.parse('<?php echo wp_json_encode( $this->get_possible_rule_operators() ); ?>'); %>
<%= ops[operator] %>
<%= condition %>
<?php
}
public function get_possible_rule_operators() {
return $this->get_possible_number_rule_operators();
}
}
class BWFAN_Rule_Is_Global_Checkout extends BWFAN_Rule_Base {
public function __construct() {
parent::__construct( 'is_global_checkout' );
}
/** v2 Methods: START */
public function get_options( $term = '' ) {
return $this->get_possible_rule_values();
}
public function get_possible_rule_values() {
return array(
'yes' => __( 'Yes', 'wp-marketing-automations' ),
'no' => __( 'No', 'wp-marketing-automations' ),
);
}
public function get_rule_type() {
return 'Select';
}
public function is_match_v2( $automation_data, $rule_data ) {
if ( ! isset( $automation_data['global'] ) || ! is_array( $automation_data['global'] ) ) {
return $this->return_is_match( false, $rule_data );
}
$abandoned_data = $automation_data['global']['cart_details'];
$abandoned_checkout_id = isset( $abandoned_data['checkout_page_id'] ) ? $abandoned_data['checkout_page_id'] : 0;
$global_checkout_id = wc_get_page_id( 'checkout' );
$checkout_data = isset( $abandoned_data['checkout_page_id'] ) ? json_decode( $abandoned_data['checkout_data'], true ) : [];
$is_checkout_override = isset( $checkout_data['aero_data'] ) && isset( $checkout_data['aero_data']['wfacp_is_checkout_override'] ) ? $checkout_data['aero_data']['wfacp_is_checkout_override'] : false;
/** check for aerocheckout */
if ( class_exists( ( 'WFACP_Common' ) ) && $is_checkout_override ) {
$global_checkout_id = WFACP_Common::get_checkout_page_id();
}
$result = ( absint( $global_checkout_id ) === absint( $abandoned_checkout_id ) ) ? true : false;
return ( 'yes' === $rule_data['data'] ) ? $result : ! $result;
}
/** v2 Methods: END */
public function get_possible_rule_operators() {
return null;
}
public function is_match( $rule_data ) {
$result = false;
$abandoned_data = BWFAN_Core()->rules->getRulesData( 'abandoned_data' );
$abandoned_checkout_id = isset( $abandoned_data['checkout_page_id'] ) ? $abandoned_data['checkout_page_id'] : 0;
$global_checkout_id = wc_get_page_id( 'checkout' );
$checkout_data = isset( $abandoned_data['checkout_page_id'] ) ? json_decode( $abandoned_data['checkout_data'], true ) : [];
$is_checkout_override = isset( $checkout_data['aero_data'] ) && isset( $checkout_data['aero_data']['wfacp_is_checkout_override'] ) ? $checkout_data['aero_data']['wfacp_is_checkout_override'] : false;
/** check for aerocheckout */
if ( class_exists( ( 'WFACP_Common' ) ) && $is_checkout_override ) {
$global_checkout_id = WFACP_Common::get_checkout_page_id();
}
if ( absint( $global_checkout_id ) === absint( $abandoned_checkout_id ) ) {
$result = true;
}
return ( 'yes' === $rule_data['condition'] ) ? $result : ! $result;
}
public function ui_view() {
?>
<% if (condition == "yes") { %> Is <% } %>
<% if (condition == "no") { %> Is not <% } %>
<?php
esc_html_e( 'Global Checkout', 'wp-marketing-automations' );
}
}