Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
wp-content
/
plugins
/
royal-elementor-addons
/
includes
/
display-conditions
:
class-section-base.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php if ( ! defined( 'ABSPATH' ) ) { exit; } /** * Abstract base class for all visibility condition sections. * Each collapsible section in the Visibility tab extends this class. */ abstract class WPR_DC_Section_Base { /** * Unique section ID (e.g. 'wpr_dc_visitor_roles'). */ abstract public function get_id(); /** * Section label shown in the Elementor panel. */ abstract public function get_label(); /** * Sort order in the tab (10, 20, 30...). */ abstract public function get_order(); /** * Register Elementor controls for this section. */ abstract public function register_controls( $element ); /** * Evaluate conditions for this section. * * @return bool|null true = conditions met, false = not met, null = not configured (skip) */ abstract public function evaluate( $settings ); /** * Whether this section is available (e.g. required plugin is active). */ public function is_available() { return true; } /** * Compare two values using the given operator. */ protected function compare( $actual, $operator, $expected ) { switch ( $operator ) { case 'isset': return '' !== $actual && null !== $actual && false !== $actual; case 'empty': return '' === $actual || null === $actual || false === $actual; case 'equals': return (string) $actual === (string) $expected; case 'not_equals': return (string) $actual !== (string) $expected; case 'contains': return false !== strpos( (string) $actual, (string) $expected ); case 'not_contains': return false === strpos( (string) $actual, (string) $expected ); case 'starts_with': return 0 === strpos( (string) $actual, (string) $expected ); case 'ends_with': return substr( (string) $actual, -strlen( (string) $expected ) ) === (string) $expected; case 'less_than': return (float) $actual < (float) $expected; case 'greater_than': return (float) $actual > (float) $expected; case 'less_equal': return (float) $actual <= (float) $expected; case 'greater_equal': return (float) $actual >= (float) $expected; default: return true; } } /** * Get comparison operators for select dropdowns. */ protected function get_comparison_operators() { return [ 'isset' => esc_html__( 'Has any value', 'wpr-addons' ), 'empty' => esc_html__( 'Is empty', 'wpr-addons' ), 'equals' => esc_html__( 'Equals', 'wpr-addons' ), 'not_equals' => esc_html__( 'Does not equal', 'wpr-addons' ), 'contains' => esc_html__( 'Contains', 'wpr-addons' ), 'not_contains' => esc_html__( 'Does not contain', 'wpr-addons' ), 'starts_with' => esc_html__( 'Starts with', 'wpr-addons' ), 'ends_with' => esc_html__( 'Ends with', 'wpr-addons' ), 'less_than' => esc_html__( 'Less than', 'wpr-addons' ), 'greater_than' => esc_html__( 'Greater than', 'wpr-addons' ), 'less_equal' => esc_html__( 'Less than or equal to', 'wpr-addons' ), 'greater_equal' => esc_html__( 'Greater than or equal to', 'wpr-addons' ), ]; } }