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:  * Abstract implementation of Papi Porter driver.
  5:  */
  6: abstract class Papi_Porter_Driver {
  7: 
  8:     /**
  9:      * The driver name.
 10:      *
 11:      * @var string
 12:      */
 13:     protected $name = '';
 14: 
 15:     /**
 16:      * Alias for driver name.
 17:      *
 18:      * @var array|string
 19:      */
 20:     protected $alias = [];
 21: 
 22:     /**
 23:      * Options per property.
 24:      *
 25:      * @var array
 26:      */
 27:     protected $options = [
 28:         'custom'   => [],
 29:         'post_id'  => 0,
 30:         'property' => null,
 31:         'slug'     => '',
 32:         'value'    => null
 33:     ];
 34: 
 35:     /**
 36:      * Papi Porter instance.
 37:      *
 38:      * @var Papi_Porter
 39:      */
 40:     protected $porter;
 41: 
 42:     /**
 43:      * The post id.
 44:      *
 45:      * @var int
 46:      */
 47:     protected $post_id;
 48: 
 49:     /**
 50:      * The constructor.
 51:      *
 52:      * @codeCoverageIgnore
 53:      */
 54:     public function __construct() {
 55:     }
 56: 
 57:     /**
 58:      * Call closure value if any.
 59:      *
 60:      * @param  mixed $value
 61:      *
 62:      * @return mixed
 63:      */
 64:     protected function call_value( $value ) {
 65:         if ( $value instanceof Closure ) {
 66:             return $value();
 67:         }
 68: 
 69:         return $value;
 70:     }
 71: 
 72:     /**
 73:      * Bootstrap the driver.
 74:      */
 75:     public function bootstrap() {
 76:     }
 77: 
 78:     /**
 79:      * Get filter key.
 80:      *
 81:      * @param  string $type
 82:      * @param  string $filter
 83:      *
 84:      * @return string
 85:      */
 86:     public function filter( $type, $filter ) {
 87:         if ( ! is_string( $filter ) ) {
 88:             $filter = '';
 89:         }
 90: 
 91:         return sprintf(
 92:             'papi/porter/driver/%s/%s/%s',
 93:             $this->name,
 94:             $type,
 95:             $filter
 96:         );
 97:     }
 98: 
 99:     /**
100:      * Get the driver name.
101:      *
102:      * @return string
103:      */
104:     public function get_driver_name() {
105:         return $this->name;
106:     }
107: 
108:     /**
109:      * Get options.
110:      *
111:      * @return array
112:      */
113:     public function get_options() {
114:         return $this->options;
115:     }
116: 
117:     /**
118:      * Get the import value for a property.
119:      *
120:      * @param  array  $options
121:      *
122:      * @return mixed
123:      */
124:     abstract public function get_value( array $options );
125: 
126:     /**
127:      * Set driver alias.
128:      */
129:     protected function set_driver_alias() {
130:         foreach ( papi_to_array( $this->alias ) as $alias ) {
131:             if ( is_string( $alias ) && ! $this->porter->exists( 'driver.' . $alias ) ) {
132:                 $this->set_driver_name( $alias );
133:             }
134:         }
135:     }
136: 
137:     /**
138:      * Set driver name.
139:      *
140:      * @param  string $name
141:      *
142:      * @throws InvalidArgumentException if driver name is empty or not a string.
143:      * @throws Exception if driver name exists.
144:      */
145:     protected function set_driver_name( $name ) {
146:         if ( empty( $name ) || ! is_string( $name ) ) {
147:             throw new InvalidArgumentException(
148:                 'Driver name is empty or not a string.'
149:             );
150:         }
151: 
152:         $name = strtolower( $name );
153: 
154:         if ( $this->porter->exists( 'driver.' . $name ) ) {
155:             throw new Exception( sprintf( '`%s` driver exists.', $name ) );
156:         }
157: 
158:         $this->porter->singleton( 'driver.' . $name, get_class( $this ) );
159:     }
160: 
161:     /**
162:      * Set Porter instance.
163:      *
164:      * @param Papi_Porter $porter
165:      */
166:     public function set_porter( Papi_Porter $porter ) {
167:         $this->porter = $porter;
168:         $this->set_driver_name( $this->name );
169:         $this->set_driver_alias();
170:     }
171: 
172:     /**
173:      * Set options for properties.
174:      *
175:      * @param array $options
176:      */
177:     public function set_options( array $options = [] ) {
178:         $this->options = array_merge( $this->options, $options );
179:     }
180: 
181:     /**
182:      * Determine if a property should update existing array or not.
183:      *
184:      * @param  string $slug
185:      *
186:      * @return bool
187:      */
188:     protected function should_update_array( $slug ) {
189:         return is_string( $slug ) &&
190:             isset( $this->options['custom'] ) &&
191:             isset( $this->options['custom'][$slug] ) &&
192:             $this->options['custom'][$slug]['update_array'];
193:     }
194: 
195:     /**
196:      * Return the given object. Useful for chaining.
197:      *
198:      * @codeCoverageIgnore
199:      *
200:      * @param  mixed $obj
201:      *
202:      * @return mixed
203:      */
204:     protected function with( $obj ) {
205:         return $obj;
206:     }
207: }
208: 
API documentation generated by ApiGen