0x1998 - MANAGER
Düzenlenen Dosya: conditions-checker.php
<?php namespace Jet_Engine\Modules\Dynamic_Visibility; class Condition_Checker { /** * Prevent condition check. * By default prevent for admin, can be changed with hook. * * @return boolen */ public function prevent_check() { $prevent_check = false; if ( is_admin() && ! empty( $_GET['post'] ) ) { $prevent_check = true; } /** * Allows to disbale or modify preventing of conditions check. */ $prevent_check = apply_filters( 'jet-engine/modules/dynamic-visibility/condition/prevent-check', $prevent_check ); return $prevent_check; } /** * Check render conditions * * @param [type] $result [description] * @param [type] $element [description] * @return [type] [description] */ public function check_cond( $settings = array(), $dynamic_settings = array() ) { $is_enabled = ! empty( $settings['jedv_enabled'] ) ? $settings['jedv_enabled'] : false; $is_enabled = filter_var( $is_enabled, FILTER_VALIDATE_BOOLEAN ); if ( ! $is_enabled ) { return true; } $conditions = $dynamic_settings['jedv_conditions']; $relation = ! empty( $settings['jedv_relation'] ) ? $settings['jedv_relation'] : 'AND'; $is_or_relation = 'OR' === $relation; $type = ! empty( $settings['jedv_type'] ) ? $settings['jedv_type'] : 'show'; $has_conditions = false; $result = true; foreach ( $conditions as $index => $condition ) { $args = array( 'type' => $type, 'condition' => null, 'user_role' => null, 'user_id' => null, 'field' => null, 'value' => null, 'data_type' => null, 'context' => null, ); foreach ( $args as $arg => $default ) { $key = 'jedv_' . $arg; $args[ $arg ] = ! \Jet_Engine_Tools::is_empty( $condition, $key ) ? $condition[ $key ] : $default; } // Apply macros in value if ( null !== $args['value'] ) { $args['value'] = jet_engine()->listings->macros->do_macros( $args['value'] ); } $is_dynamic_field = isset( $condition['__dynamic__']['jedv_field'] ); $is_empty_field = empty( $condition['jedv_field'] ); $args['field_raw'] = ( ! $is_dynamic_field && ! $is_empty_field ) ? $condition['jedv_field'] : null; /** * ensure macros applied in Field input; * check if macros have been actually processed */ if ( strpos( $args['field_raw'] ?? '', '%' ) !== false ) { $processed_macro = jet_engine()->listings->macros->do_macros( $args['field_raw'] ); if ( $args['field_raw'] !== $processed_macro ) { $args['field'] = $processed_macro; unset( $args['field_raw'] ); } } if ( empty( $args['condition'] ) ) { continue; } $condition_id = $args['condition']; $condition_instance = Module::instance()->conditions->get_condition( $condition_id ); if ( ! $condition_instance ) { continue; } if ( ! $has_conditions ) { $has_conditions = true; } $custom_value_key = 'value_' . $condition_instance->get_id(); $custom_value = ! empty( $condition[ $custom_value_key ] ) ? $condition[ $custom_value_key ] : false; if ( $custom_value ) { $args['value'] = $custom_value; } $args['condition_settings'] = $condition; $args = apply_filters( 'jet-engine/modules/dynamic-visibility/condition/args', $args ); $check = $condition_instance->check( $args ); if ( 'show' === $type ) { if ( $is_or_relation ) { if ( $check ) { return true; } } elseif ( ! $check ) { return false; } } else { if ( $is_or_relation ) { if ( ! $check ) { return false; } } elseif ( $check ) { return true; } } } if ( ! $has_conditions ) { return true; } $result = ( 'show' === $type ) ? ! $is_or_relation : $is_or_relation; return $result; } }
geri dön