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 Papi type.
  5:  */
  6: class Papi_Core_Type {
  7: 
  8:     /**
  9:      * The core meta method that can be used
 10:      * instead of `$_meta_method`. If `$_meta_method` is
 11:      * used the `$_core_meta_method` will not be used.
 12:      *
 13:      * @var string
 14:      */
 15:     private $_core_meta_method = 'meta';
 16: 
 17:     /**
 18:      * The meta method to call.
 19:      *
 20:      * @deprecated This will be removed in feature version
 21:      * and should not be used with new types.
 22:      *
 23:      * @var string
 24:      */
 25:     public $_meta_method = 'meta';
 26: 
 27:     /**
 28:      * The page type class name.
 29:      *
 30:      * @var string
 31:      */
 32:     private $_class_name = '';
 33: 
 34:     /**
 35:      * The file name of the page type file.
 36:      *
 37:      * @var string
 38:      */
 39:     private $_file_name = '';
 40: 
 41:     /**
 42:      * The file path of the page type file.
 43:      *
 44:      * @var string
 45:      */
 46:     private $_file_path = '';
 47: 
 48:     /**
 49:      * The page type identifier.
 50:      *
 51:      * @var string
 52:      */
 53:     public $id = '';
 54: 
 55:     /**
 56:      * The constructor.
 57:      *
 58:      * Load a page type by the file.
 59:      *
 60:      * @param string $file_path
 61:      */
 62:     public function __construct( $file_path ) {
 63:         // Try to load the file if the file path is empty.
 64:         if ( empty( $file_path ) ) {
 65:             $page_type = papi_get_page_type_id();
 66:             $file_path = papi_get_file_path( $page_type );
 67:         }
 68: 
 69:         if ( is_file( $file_path ) ) {
 70:             $this->setup_file( $file_path );
 71:             $this->setup_meta_data();
 72:         }
 73:     }
 74: 
 75:     /**
 76:      * Boot page type.
 77:      *
 78:      * @codeCoverageIgnore
 79:      */
 80:     public function boot() {
 81:         $this->setup_actions();
 82:         $this->setup_filters();
 83:     }
 84: 
 85:     /**
 86:      * Get the page type class name with namespace if exists.
 87:      *
 88:      * @return string
 89:      */
 90:     public function get_class_name() {
 91:         return $this->_class_name;
 92:     }
 93: 
 94:     /**
 95:      * Get the page type file pat.h
 96:      *
 97:      * @return string
 98:      */
 99:     public function get_file_path() {
100:         return $this->_file_path;
101:     }
102: 
103:     /**
104:      * Get the page type identifier.
105:      *
106:      * @return string
107:      */
108:     public function get_id() {
109:         if ( ! empty( $this->id ) ) {
110:             return $this->id;
111:         }
112: 
113:         return $this->_file_name;
114:     }
115: 
116:     /**
117:      * Check if the the given identifier match the page type identifier.
118:      *
119:      * @param  string $id
120:      *
121:      * @return bool
122:      */
123:     public function match_id( $id ) {
124:         if ( strpos( $id, 'papi/' ) === 0 ) {
125:             $id = preg_replace( '/^papi\//', '', $id );
126:         }
127: 
128:         return $this->get_id() === $id;
129:     }
130: 
131:     /**
132:      * Create a new instance of the page type file.
133:      *
134:      * @return object
135:      */
136:     public function new_class() {
137:         if ( empty( $this->_file_path ) ) {
138:             return;
139:         }
140: 
141:         return new $this->_class_name;
142:     }
143: 
144:     /**
145:      * Setup actions.
146:      *
147:      * @codeCoverageIgnore
148:      */
149:     protected function setup_actions() {
150:     }
151: 
152:     /**
153:      * Load the file and setup file path, file name and class name properties.
154:      *
155:      * @param string $file_path
156:      */
157:     private function setup_file( $file_path ) {
158:         $this->_file_path  = $file_path;
159:         $this->_file_name  = papi_get_page_type_base_path( $this->_file_path );
160:         $this->_class_name = papi_get_class_name( $this->_file_path );
161:     }
162: 
163:     /**
164:      * Setup filters.
165:      *
166:      * @codeCoverageIgnore
167:      */
168:     protected function setup_filters() {
169:     }
170: 
171:     /**
172:      * Setup page type meta data.
173:      */
174:     private function setup_meta_data() {
175:         $meta_method = method_exists( $this->_class_name, $this->_meta_method ) ?
176:             $this->_meta_method : $this->_core_meta_method;
177: 
178:         if ( ! method_exists( $this->_class_name, $meta_method ) ) {
179:             return;
180:         }
181: 
182:         foreach ( call_user_func( [$this, $meta_method] ) as $key => $value ) {
183:             if ( substr( $key, 0, 1 ) === '_' ) {
184:                 continue;
185:             }
186: 
187:             $this->$key = papi_esc_html( $value );
188:         }
189:     }
190: }
191: 
API documentation generated by ApiGen