Overview

Classes

  • Papi_Admin
  • Papi_Admin_Ajax
  • Papi_Admin_Assets
  • Papi_Admin_Management_Pages
  • Papi_Admin_Menu
  • Papi_Admin_Meta_Box
  • Papi_Admin_Meta_Box_Tabs
  • Papi_Admin_Option_Handler
  • Papi_Admin_Post_Handler
  • Papi_Admin_View
  • Papi_Attachment_Type
  • Papi_Conditional_Rules
  • Papi_Container
  • Papi_Core_Autoload
  • Papi_Core_Conditional
  • Papi_Core_Conditional_Rule
  • Papi_Core_Data_Handler
  • Papi_Core_Page
  • Papi_Core_Property
  • Papi_Core_Type
  • Papi_Loader
  • Papi_Option_Page
  • Papi_Option_Type
  • Papi_Page_Type
  • Papi_Page_Type_Meta
  • Papi_Porter
  • Papi_Porter_Driver
  • Papi_Porter_Driver_Core
  • Papi_Post_Page
  • Papi_Property
  • Papi_Property_Bool
  • Papi_Property_Checkbox
  • Papi_Property_Color
  • Papi_Property_Datetime
  • Papi_Property_Divider
  • Papi_Property_Dropdown
  • Papi_Property_Editor
  • Papi_Property_Email
  • Papi_Property_File
  • Papi_Property_Flexible
  • Papi_Property_Gallery
  • Papi_Property_Hidden
  • Papi_Property_Html
  • Papi_Property_Image
  • Papi_Property_Link
  • Papi_Property_Number
  • Papi_Property_Post
  • Papi_Property_Radio
  • Papi_Property_Reference
  • Papi_Property_Relationship
  • Papi_Property_Repeater
  • Papi_Property_String
  • Papi_Property_Term
  • Papi_Property_Text
  • Papi_Property_Url
  • Papi_Property_User

Functions

  • current_page
  • papi
  • papi_action_delete_value
  • papi_action_include
  • papi_append_post_type_query
  • papi_body_class
  • papi_cache_delete
  • papi_cache_get
  • papi_cache_key
  • papi_cache_set
  • papi_camel_case
  • papi_cast_string_value
  • papi_convert_to_string
  • papi_current_user_is_allowed
  • papi_dashify
  • papi_delete_field
  • papi_delete_option
  • papi_delete_property_meta_value
  • papi_display_page_type
  • papi_doing_ajax
  • papi_esc_html
  • papi_f
  • papi_field
  • papi_field_shortcode
  • papi_field_value
  • papi_fields
  • papi_filter_conditional_rule_allowed
  • papi_filter_core_load_one_type_on
  • papi_filter_format_value
  • papi_filter_load_value
  • papi_filter_settings_directories
  • papi_filter_settings_only_page_type
  • papi_filter_settings_page_type_column_title
  • papi_filter_settings_show_page_type
  • papi_filter_settings_show_standard_page_type
  • papi_filter_settings_show_standard_page_type_in_filter
  • papi_filter_settings_sort_order
  • papi_filter_settings_standard_page_description
  • papi_filter_settings_standard_page_name
  • papi_filter_settings_standard_page_thumbnail
  • papi_filter_update_value
  • papi_from_property_array_slugs
  • papi_get_all_files_in_directory
  • papi_get_all_page_type_files
  • papi_get_all_page_types
  • papi_get_box_property
  • papi_get_class_name
  • papi_get_field
  • papi_get_file_path
  • papi_get_number_of_pages
  • papi_get_only_objects
  • papi_get_option
  • papi_get_options_and_properties
  • papi_get_or_post
  • papi_get_page
  • papi_get_page_new_url
  • papi_get_page_query_strings
  • papi_get_page_type
  • papi_get_page_type_base_path
  • papi_get_page_type_by_id
  • papi_get_page_type_by_post_id
  • papi_get_page_type_id
  • papi_get_page_type_key
  • papi_get_page_type_meta_value
  • papi_get_page_type_name
  • papi_get_page_type_template
  • papi_get_parent_post_id
  • papi_get_post_id
  • papi_get_post_type
  • papi_get_post_type_label
  • papi_get_post_types
  • papi_get_property_class_name
  • papi_get_property_meta_value
  • papi_get_property_options
  • papi_get_property_type
  • papi_get_property_type_key
  • papi_get_property_type_key_f
  • papi_get_qs
  • papi_get_sanitized_post
  • papi_get_slugs
  • papi_get_tab_options
  • papi_html_name
  • papi_html_tag
  • papi_include_template
  • papi_is_empty
  • papi_is_json
  • papi_is_method
  • papi_is_option_page
  • papi_is_option_type
  • papi_is_page_type
  • papi_is_property
  • papi_is_property_type_key
  • papi_is_rule
  • papi_management_page_type_render_box
  • papi_maybe_convert_to_array
  • papi_maybe_convert_to_object
  • papi_maybe_get_callable_value
  • papi_maybe_json_decode
  • papi_maybe_json_encode
  • papi_nl2br
  • papi_option_shortcode
  • papi_option_type_exists
  • papi_page_type_exists
  • papi_populate_properties
  • papi_property
  • papi_remove_papi
  • papi_remove_trailing_quotes
  • papi_render_html_tag
  • papi_render_properties
  • papi_render_property
  • papi_require_text
  • papi_required_html
  • papi_rule
  • papi_santize_data
  • papi_set_page_type_id
  • papi_setup_tabs
  • papi_slugify
  • papi_sort_order
  • papi_tab
  • papi_template
  • papi_template_include
  • papi_to_array
  • papi_to_property_array_slugs
  • papi_translate_keys
  • papi_underscorify
  • papi_update_field
  • papi_update_option
  • papi_update_property_meta_value
  • papi_with
  • papify
  • the_papi_field
  • the_papi_option
  • the_papi_page_type_name
  • Overview
  • Class
  1: <?php
  2: 
  3: /**
  4:  * Core class that implements a conditional rule.
  5:  */
  6: class Papi_Core_Conditional_Rule {
  7: 
  8:     /**
  9:      * The operator.
 10:      *
 11:      * @var string
 12:      */
 13:     public $operator = '=';
 14: 
 15:     /**
 16:      * The slug.
 17:      *
 18:      * @var string
 19:      */
 20:     public $slug;
 21: 
 22:     /**
 23:      * The source value.
 24:      *
 25:      * @var mixed
 26:      */
 27:     public $source;
 28: 
 29:     /**
 30:      * The value.
 31:      *
 32:      * @var mixed
 33:      */
 34:     public $value;
 35: 
 36:     /**
 37:      * The constructor.
 38:      *
 39:      * @param array $rule
 40:      */
 41:     public function __construct( array $rule ) {
 42:         $this->setup( $rule );
 43:     }
 44: 
 45:     /**
 46:      * Get field slug.
 47:      *
 48:      * @return string
 49:      */
 50:     public function get_field_slug() {
 51:         if ( preg_match( '/\[|\]/', $this->slug ) ) {
 52:             $slug = preg_replace( '/\[|\]/', '.', $this->slug );
 53:             $slug = str_replace( '..', '.', $slug );
 54:             return substr( $slug, 0, -1 );
 55:         }
 56: 
 57:         return $this->slug;
 58:     }
 59: 
 60:     /**
 61:      * Get the source value.
 62:      *
 63:      * @return mixed
 64:      */
 65:     public function get_source() {
 66:         if ( is_callable( $this->source ) ) {
 67:             return call_user_func_array( $this->source, [$this->slug] );
 68:         }
 69: 
 70:         if ( is_string( $this->source ) && strpos( $this->source, '#' ) !== false ) {
 71:             $source = explode( '#', $this->source );
 72: 
 73:             if ( empty( $source[0] ) || empty( $source[1] ) ) {
 74:                 return $this->source;
 75:             }
 76: 
 77:             $source[0] = new $source[0]();
 78: 
 79:             if ( method_exists( $source[0], $source[1] ) ) {
 80:                 return call_user_func_array( $source, [$this->slug] );
 81:             }
 82: 
 83:             return;
 84:         }
 85: 
 86:         return $this->source;
 87:     }
 88: 
 89:     /**
 90:      * Setup source callable.
 91:      *
 92:      * @param  string $value
 93:      *
 94:      * @return string
 95:      */
 96:     public function setup_source( $value ) {
 97:         if ( is_array( $value ) && count( $value ) === 2 && is_object( $value[0] ) && is_string( $value[1] ) ) {
 98:             return sprintf( '%s#%s', get_class( $value[0] ), $value[1] );
 99:         }
100: 
101:         if ( is_string( $value ) && is_callable( $value ) ) {
102:             return $value;
103:         }
104: 
105:         // No support for closure.
106:         if ( is_object( $value ) && $value instanceof Closure ) {
107:             return '';
108:         }
109: 
110:         return $value;
111:     }
112: 
113:     /**
114:      * Setup the rule and assign properties with values.
115:      *
116:      * @param array  $rule
117:      */
118:     private function setup( array $rule ) {
119:         foreach ( $rule as $key => $value ) {
120:             if ( $key === 'operator' ) {
121:                 $value = strtoupper( $value );
122:                 $value = html_entity_decode( $value );
123:             } else if ( $key === 'slug' ) {
124:                 $value = papify( $value );
125:             } else if ( $key === 'source' ) {
126:                 $value = $this->setup_source( $value );
127:             }
128: 
129:             $this->$key = $value;
130:         }
131:     }
132: }
133: 
API documentation generated by ApiGen