if ( $allowed != 0 ) { $allowed = 1; } } else { $allowed = 0; } } break; case ( $pr_array['condition'] = '=<' ): if ( ( $v <= $pr_array['criteria'] ) ) { if ( $pr_array['than'] == 'include_only' ) { if ( $allowed != 0 ) { $allowed = 1; } } else { $allowed = 0; } } break; case ( $pr_array['condition'] = 'empty' ): if ( strlen( $v ) < 1 ) { if ( $pr_array['than'] == 'include_only' ) { if ( $allowed != 0 ) { $allowed = 1; } } elseif ( ! empty( $pt_value ) ) { $allowed = 1; } else { $allowed = 0; } } break; case ( $pr_array['condition'] = 'notempty' ): if ( strlen( $v ) > 1 ) { if ( $pr_array['than'] == 'include_only' ) { if ( $allowed != 0 ) { $allowed = 1; } } elseif ( ! empty( $pt_value ) ) { $allowed = 1; } else { $allowed = 0; } } break; default: break; } } else { switch ( $pr_array['condition'] ) { case ( $pr_array['condition'] = 'contains' ): if ( $pr_array['than'] == 'include_only' ) { $allowed = 0; } elseif ( $allowed != 0 ) { $allowed = 1; } break; case ( $pr_array['condition'] = 'containsnot' ): if ( $pr_array['than'] == 'include_only' ) { if ( $allowed != 0 ) { $allowed = 1; } } else { $allowed = 0; } break; case ( $pr_array['condition'] = '=' ): if ( $pr_array['than'] == 'include_only' ) { $allowed = 0; } elseif ( $allowed != 0 ) { $allowed = 1; } break; case ( $pr_array['condition'] = '!=' ): if ( $pr_array['than'] == 'include_only' ) { if ( $allowed != 0 ) { $allowed = 1; } } else { $allowed = 0; } break; case ( $pr_array['condition'] = '>' ): if ( $pr_array['than'] == 'include_only' ) { $allowed = 0; } else { $allowed = 0; } break; case ( $pr_array['condition'] = '>=' ): if ( $pr_array['than'] == 'include_only' ) { $allowed = 0; } else { $allowed = 0; } break; case ( $pr_array['condition'] = '<' ): if ( $pr_array['than'] == 'include_only' ) { $allowed = 0; } else { $allowed = 0; } break; case ( $pr_array['condition'] = '=<' ): if ( $pr_array['than'] == 'include_only' ) { $allowed = 0; } else { $allowed = 0; } break; case ( $pr_array['condition'] = 'empty' ): if ( $pr_array['than'] == 'include_only' ) { if ( $allowed != 0 ) { $allowed = 1; } } else { $allowed = 0; } break; case ( $pr_array['condition'] = 'notempty' ): if ( $pr_array['than'] == 'include_only' ) { if ( $allowed != 0 ) { $allowed = 0; } } else { $allowed = 1; } break; default: break; } } } else { // For now only shipping details are in an array foreach ( $pd_value as $k => $v ) { foreach ( $v as $kk => $vv ) { // Only shipping detail rule can be on price for now if ( $kk == 'price' ) { switch ( $pr_array['condition'] ) { case ( $pr_array['condition'] = 'contains' ): if ( ( preg_match( '/' . $pr_array['criteria'] . '/', $vv ) ) ) { $allowed = 0; } break; case ( $pr_array['condition'] = 'containsnot' ): if ( ( ! preg_match( '/' . $pr_array['criteria'] . '/', $vv ) ) ) { $allowed = 0; } break; case ( $pr_array['condition'] = '=' ): if ( ( $vv == $pr_array['criteria'] ) ) { $allowed = 0; } break; case ( $pr_array['condition'] = '!=' ): if ( ( $vv != $pr_array['criteria'] ) ) { $allowed = 0; } break; case ( $pr_array['condition'] = '>' ): if ( ( $vv > $pr_array['criteria'] ) ) { $allowed = 0; } break; case ( $pr_array['condition'] = '>=' ): if ( ( $vv >= $pr_array['criteria'] ) ) { $allowed = 0; } break; case ( $pr_array['condition'] = '<' ): if ( ( $vv < $pr_array['criteria'] ) ) { $allowed = 0; } break; case ( $pr_array['condition'] = '=<' ): if ( ( $vv <= $pr_array['criteria'] ) ) { $allowed = 0; } break; case ( $pr_array['condition'] = 'empty' ): if ( strlen( $vv ) < 1 ) { $allowed = 0; } break; case ( $pr_array['condition'] = 'notempty' ): if ( strlen( $vv ) > 1 ) { $allowed = 0; } break; default: break; } } else { // These are filters on reviews switch ( $pr_array['condition'] ) { case ( $pr_array['condition'] = 'contains' ): if ( ( preg_match( '/' . $pr_array['criteria'] . '/', $vv ) ) ) { if ( $pr_array['than'] == 'include_only' ) { $allowed = 1; } else { $allowed = 0; } } break; case ( $pr_array['condition'] = 'containsnot' ): if ( ( ! preg_match( '/' . $pr_array['criteria'] . '/', $vv ) ) ) { if ( $pr_array['than'] == 'include_only' ) { $allowed = 0; } else { $allowed = 1; } } break; case ( $pr_array['condition'] = '=' ): if ( ( $vv == $pr_array['criteria'] ) ) { if ( $pr_array['than'] == 'include_only' ) { $allowed = 1; } else { $allowed = 0; } } break; case ( $pr_array['condition'] = '!=' ): if ( ( $vv != $pr_array['criteria'] ) ) { if ( $pr_array['than'] == 'include_only' ) { $allowed = 0; } else { $allowed = 1; } } break; default: break; } } } } } } else { // Filters for string values // If case-sensitve is off than lowercase both the criteria and attribute value if ( array_key_exists( 'cs', $pr_array ) ) { if ( $pr_array['cs'] != 'on' ) { $pd_value = strtolower( $pd_value ); $pr_array['criteria'] = strtolower( $pr_array['criteria'] ); } } $pos = strpos( $pd_value, '&' ); $pos_slash_back = strpos( $pr_array['criteria'], '\\' ); $pos_slash_forward = strpos( $pr_array['criteria'], '/' ); if ( $pos !== false ) { $pd_value = str_replace( '&', '&', $pd_value ); } if ( $pos_slash_back !== false ) { $pr_array['criteria'] = str_replace( '\\', '', $pr_array['criteria'] ); } if ( $pos_slash_forward !== false ) { $pr_array['criteria'] = str_replace( '/', '', $pr_array['criteria'] ); $pd_value = str_replace( '/', '', $pd_value ); } // if(!empty($pd_value)){ switch ( $pr_array['condition'] ) { case ( $pr_array['condition'] = 'contains' ): if ( ( preg_match( '/' . $pr_array['criteria'] . '/', $pd_value ) ) && ( $pr_array['than'] == 'exclude' ) ) { $allowed = 0; } elseif ( ( ! preg_match( '/' . $pr_array['criteria'] . '/', $pd_value ) ) && ( $pr_array['than'] == 'include_only' ) ) { $allowed = 0; } elseif ( ( preg_match( '/' . $pr_array['criteria'] . '/', $pd_value ) ) && ( $pr_array['than'] == 'include_only' ) ) { if ( $allowed != 0 ) { $allowed = 1; } } break; case ( $pr_array['condition'] = 'containsnot' ): if ( ( ! preg_match( '/' . $pr_array['criteria'] . '/', $pd_value ) ) && ( $pr_array['than'] == 'exclude' ) ) { $allowed = 0; } elseif ( ( preg_match( '/' . $pr_array['criteria'] . '/', $pd_value ) ) && ( $pr_array['than'] == 'include_only' ) ) { $allowed = 0; } break; case ( $pr_array['condition'] = '=' ): if ( ( $pr_array['criteria'] == "$pd_value" ) && ( $pr_array['than'] == 'exclude' ) ) { $allowed = 0; } elseif ( ( $pr_array['criteria'] != "$pd_value" ) && ( $pr_array['than'] == 'include_only' ) ) { $found = strpos( $pd_value, $pr_array['criteria'] ); if ( $found !== false ) { // for category mapping check if its an array if ( $pr_array['attribute'] == 'raw_categories' ) { $raw_cats_arr = explode( '||', $pd_value ); if ( is_array( $raw_cats_arr ) ) { if ( in_array( $pr_array['criteria'], $raw_cats_arr, true ) ) { if ( $allowed != 0 ) { $allowed = 1; } } else { $allowed = 0; } } } elseif ( $allowed != 0 ) { $allowed = 1; } } else { $allowed = 0; } } elseif ( ( $pr_array['criteria'] == "$pd_value" ) && ( $pr_array['than'] == 'include_only' ) ) { if ( $allowed != 0 ) { $allowed = 1; } } elseif ( ( preg_match( '/' . $pr_array['criteria'] . '/', $pd_value ) ) && ( $pr_array['than'] == 'exclude' ) ) { // $allowed = 0; } elseif ( ( preg_match( '/' . $pr_array['criteria'] . '/', $pd_value ) ) && ( $pr_array['than'] == 'include_only' ) ) { $allowed = 1; } else { // $allowed = 1; // Change made on February 24th 2021 } break; case ( $pr_array['condition'] = '!=' ): if ( ( $pr_array['criteria'] == "$pd_value" ) && ( $pr_array['than'] == 'exclude' ) ) { if ( $allowed != 0 ) { $allowed = 1; } } elseif ( ( $pr_array['criteria'] == "$pd_value" ) && ( $pr_array['than'] == 'include_only' ) ) { $allowed = 0; } elseif ( ( $pr_array['criteria'] != "$pd_value" ) && ( $pr_array['than'] == 'exclude' ) ) { $allowed = 0; } break; case ( $pr_array['condition'] = '>' ): // Use a lexical order on relational string operators if ( ( $pd_value > $pr_array['criteria'] ) && ( $pr_array['than'] == 'exclude' ) ) { $allowed = 0; } elseif ( ( $pd_value < $pr_array['criteria'] ) && ( $pr_array['than'] == 'include_only' ) ) { $allowed = 0; } break; case ( $pr_array['condition'] = '>=' ): // Use a lexical order on relational string operators if ( ( $pd_value >= $pr_array['criteria'] ) && ( $pr_array['than'] == 'exclude' ) ) { $allowed = 0; } elseif ( ( $pd_value < $pr_array['criteria'] ) && ( $pr_array['than'] == 'include_only' ) ) { $allowed = 0; } break; case ( $pr_array['condition'] = '<' ): // Use a lexical order on relational string operators if ( ( $pd_value < $pr_array['criteria'] ) && ( $pr_array['than'] == 'exclude' ) ) { $allowed = 0; } elseif ( ( $pd_value > $pr_array['criteria'] ) && ( $pr_array['than'] == 'include_only' ) ) { $allowed = 0; } break; case ( $pr_array['condition'] = '=<' ): // Use a lexical order on relational string operators if ( ( $pd_value <= $pr_array['criteria'] ) && ( $pr_array['than'] == 'exclude' ) ) { $allowed = 0; } elseif ( ( $pd_value > $pr_array['criteria'] ) && ( $pr_array['than'] == 'include_only' ) ) { $allowed = 0; } break; case ( $pr_array['condition'] = 'empty' ): if ( ( strlen( $pd_value ) < 1 ) && ( $pr_array['than'] == 'exclude' ) ) { $allowed = 0; } elseif ( ( strlen( $pd_value ) > 0 ) && ( $pr_array['than'] == 'exclude' ) ) { if ( $allowed != 0 ) { $allowed = 1; } } elseif ( ( strlen( $pd_value ) > 0 ) && ( $pr_array['than'] == 'include_only' ) ) { $allowed = 0; } break; case ( $pr_array['condition'] = 'notempty' ): if ( ( strlen( $pd_value ) > 0 ) && ( $pr_array['than'] == 'exclude' ) ) { $allowed = 0; } elseif ( ( strlen( $pd_value ) < 1 ) && ( $pr_array['than'] == 'exclude' ) ) { if ( $allowed != 0 ) { $allowed = 1; } } elseif ( ( strlen( $pd_value ) < 1 ) && ( $pr_array['than'] == 'include_only' ) ) { $allowed = 0; } break; default: break; } // } } } } } if ( $allowed < 1 ) { $product_data = array(); $product_data = null; } else { return $product_data; } } }