/** * Get the display by relation. * * @param array $rules * * @return bool */ protected function display_by_relation(array $rules) { if ($rules['relation'] === 'AND') { $display = true; foreach ($rules as $rule) { if (!$display) { break; } if (papi_is_rule($rule)) { $display = papi_filter_conditional_rule_allowed($rule); } } return $display; } $empty = array_filter($rules, function ($rule) { return papi_is_rule($rule) ? true : null; }); if (empty($empty)) { return true; } $result = []; foreach ($rules as $rule) { if (papi_is_rule($rule)) { $result[] = papi_filter_conditional_rule_allowed($rule); } } $result = array_filter($result, function ($res) { return $res === true ? true : null; }); return !empty($result); }
/** * Get conditional rule value. * * @param array|Papi_Core_Conditional_Rule $rule * * @return bool */ function papi_filter_conditional_rule_allowed($rule) { $rule = papi_rule($rule); if (!papi_is_rule($rule)) { return false; } $result = apply_filters('papi/conditional/rule/' . $rule->operator, $rule); if ($result === true || $result === false) { return $result; } return false; }