Check user based conditions for bxgy discount bar

Verify conditions based on user attributes for a "Buy X Get Y" discount bar.

add_filter('advanced_woo_discount_rules_filter_passed', function($filter_passed, $rule, $product, $sale_badge){
	if(is_object($rule)){
		$rule_type = $rule->getRuleDiscountType();
		$conditions = $rule->getConditions();
		$filter_passed_user_logged_in = $user_logged_in_passed = $filter_passed_user_role = $filter_passed_user_list = $user_role_passed = $user_list_passed = $has_other_conditions = false;
		$condition_relationship = $rule->getRelationship('condition', 'and');
		if(!empty($conditions) && $filter_passed && $rule_type == 'wdr_buy_x_get_y_discount'){
			foreach($conditions as $condition){
				$cart = array();
				$options = isset($condition->options) ? $condition->options : array();
				$condition_type = isset($condition->type) ? $condition->type : array();
				if( !empty($condition_type) ){
					if (!empty($options) && isset($rule->available_conditions[$condition_type]['object']) && is_object($rule->available_conditions[$condition_type]['object']) && method_exists($rule->available_conditions[$condition_type]['object'], 'check')) {
						$rule->available_conditions[$condition_type]['object']->rule = $rule;
						if( $condition_type == 'user_role'){
							$user_role_passed = true;
							$filter_passed_user_role = $rule->available_conditions[$condition_type]['object']->check($cart, $options);
						}
						if( $condition_type == 'user_list'){
							$user_list_passed = true;
							$filter_passed_user_list = $rule->available_conditions[$condition_type]['object']->check($cart, $options);
						}
						if( $condition_type == 'user_logged_in'){
							$user_logged_in_passed = true;
							$filter_passed_user_logged_in = $rule->available_conditions[$condition_type]['object']->check($cart, $options);
						}
					}
				}

				if( !empty($condition_type) && !in_array($condition_type, array('user_role', 'user_list', 'user_logged_in'))){
					$has_other_conditions = true;
				}
			}

			if($user_role_passed || $user_list_passed || $user_logged_in_passed){
				if($filter_passed_user_role || $filter_passed_user_list || $filter_passed_user_logged_in){
					if($condition_relationship == 'and'){
						if($user_role_passed && $user_logged_in_passed){
							if($filter_passed_user_role && $filter_passed_user_logged_in){
							}else{
								$filter_passed = false;
							}
						}
						if($user_list_passed && $user_logged_in_passed){
							if($filter_passed_user_list && $filter_passed_user_logged_in){
							}else{
								$filter_passed = false;
							}
						}
					}
				} else {
					if($condition_relationship == 'or'){
						if($has_other_conditions){
						} else {
							$filter_passed = false;
						}
					} else {
						$filter_passed = false;
					}
				}
			}

		} 
	}
	return $filter_passed;
}, 11, 4);