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
/
types
/
vendor
/
toolset
/
types
/
embedded
/
includes
/
classes
:
class.types.data.installer.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php if ( !class_exists('Types_Data_Installer') ) { class Types_Data_Installer { private $data = array(); private $args = array(); private $fields = array(); private $user_fields = array(); private $reset_toolset_edit_last_list = array(); public function __construct($data, $args) { $this->data = $data; $this->args = $args; } /** * Create data for import. * * Populate and check data for import from Importer * * @since 1.6.6 * * @return object data for import */ public function wpvdemo() { $data = new stdClass; foreach(array('groups', 'user_groups', 'fields', 'user_fields', 'taxonomies', 'types') as $key) { $data->$key = new stdClass; } $data->groups->group = $this->get_data_by_group_name(TYPES_CUSTOM_FIELD_GROUP_CPT_NAME); $data->user_groups->group = $this->get_data_by_group_name(TYPES_USER_META_FIELD_GROUP_CPT_NAME); $data->fields->field = $this->get_data_by_field_type('fields'); $data->user_fields->field = $this->get_data_by_field_type('user_fields'); $data->types->type = $this->get_data_by_type(WPCF_OPTION_NAME_CUSTOM_TYPES); $data->taxonomies->taxonomy = $this->get_data_by_type(WPCF_OPTION_NAME_CUSTOM_TAXONOMIES); return $data; } /** * Helper for group. * * Helper for importing group. * * @since 1.6.6 * @access private * * @param string $group_name Group name * * @return object data for import */ private function get_data_by_group_name($group_name) { $group = 'groups'; $element = 'group'; if ( TYPES_USER_META_FIELD_GROUP_CPT_NAME == $group_name ) { $group = 'user_groups'; } if ( isset($this->data->{$group}) && isset($this->data->{$group}->{$element}) ) { $array = get_object_vars( clone $this->data->{$group}->{$element} ); return $this->get_data($group_name, $array); } return; } /** * Build data for group. * * Build data to importing group. * * @since 1.6.6 * @access private * * @param string $group_name Group name * @param object $group Group data * * @return object data for import */ private function get_data($group_name, $groups) { $this->reset_toolset_edit_last_list[$group_name] = array(); $date = date('Y-m-d H:i'); $new = array(); foreach($groups as $group ) { if ( isset($this->args['force_skip_post_name'][$group_name]) && in_array($group->__types_id, $this->args['force_skip_post_name'][$group_name]) ) { continue; } if ( isset($this->args['force_import_post_name'][$group_name]) && in_array($group->__types_id, $this->args['force_import_post_name'][$group_name]) ) { $new[] = $group; switch($group_name) { case TYPES_CUSTOM_FIELD_GROUP_CPT_NAME: $this->fields += explode(',', $group->meta->_wp_types_group_fields); break; case TYPES_USER_META_FIELD_GROUP_CPT_NAME: $this->user_fields += explode(',', $group->meta->_wp_types_group_fields); break; } $this->reset_toolset_edit_last_list[$group_name][] = $group->__types_id; continue; } if ( isset($this->args['force_duplicate_post_name'][$group_name]) && in_array($group->__types_id, $this->args['force_duplicate_post_name'][$group_name]) ) { $one = $group; $one->__types_id = wp_unique_post_slug( sanitize_title_with_dashes($group->post_title, null, 'save'), null, 'publish', TYPES_CUSTOM_FIELD_GROUP_CPT_NAME, null); $one->__types_title = $one->post_title = sprintf('%s %s', $group->post_title, $date); $new[$one->__types_id] = $one; continue; } } return $new; } /** * Helper for CPT & CT. * * Helper for importing post types and custom taxonomies. * * @since 1.6.6 * @access private * * @param string $group_name Group name * * @return object data for import */ private function get_data_by_field_type($type) { if ( isset($this->data->fields) && isset($this->data->fields->field) ) { $fields = $this->data->fields->field; } else { return; } $new = array(); foreach($fields as $field ) { if ( in_array($field->id, $this->$type) ) { $new[] = $field; } } return $new; } /** * Build data for CPT & CT * * Build data to importing post types and custom taxonomies. * * @since 1.6.6 * @access private * * @param string $group_name Group name * @param object $group Group data * * @return object data for import */ private function get_data_by_type($group_name) { $group = 'types'; $element = 'type'; if ( WPCF_OPTION_NAME_CUSTOM_TAXONOMIES == $group_name ) { $group = 'taxonomies'; $element = 'taxonomy'; } if ( isset($this->data->$group) && isset($this->data->$group->$element) ) { $groups = $this->data->$group->$element; } else { return; } $this->reset_toolset_edit_last_list[$group_name] = array(); $new = array(); if( WPCF_OPTION_NAME_CUSTOM_TYPES === $group_name ) { $post_type_option = new Types_Utils_Post_Type_Option(); $data = $post_type_option->get_post_types(); } else { $data = get_option( $group_name, array() ); } foreach ( $groups as $group) { $slug = $group->slug->__toString(); if ( isset($data[$slug]) && !isset($data[$slug][TOOLSET_EDIT_LAST]) ) { continue; } $this->reset_toolset_edit_last_list[$group_name][] = $slug; if ( isset($this->args['force_skip_post_name'][$group_name]) && in_array($group->__types_id, $this->args['force_skip_post_name'][$group_name]) ) { continue; } if ( isset($this->args['force_import_post_name'][$group_name]) && in_array($group->__types_id, $this->args['force_import_post_name'][$group_name]) ) { $this->reset_toolset_edit_last_list[$group_name][] = (int)$group->ID; $group->addChild('add', false); $group->addChild('update', true); $new[] = $group; continue; } } return $new; } /** * Reset TOOLSET_EDIT_LAST. * * Function to reset TOOLSET_EDIT_LAST - last edit timestamp in Types * definitions. * * @since 1.6.6 * */ public function reset_toolset_edit_last() { if (!empty($this->reset_toolset_edit_last_list)) { foreach( $this->reset_toolset_edit_last_list as $group => $data) { switch( $group ) { case TYPES_CUSTOM_FIELD_GROUP_CPT_NAME: case TYPES_USER_META_FIELD_GROUP_CPT_NAME: foreach( $data as $slug) { $post = get_page_by_path($slug, OBJECT, $group); if ( $post ) { delete_post_meta( $post->ID, TOOLSET_EDIT_LAST); } } break; case WPCF_OPTION_NAME_CUSTOM_TYPES: $post_type_option = new Types_Utils_Post_Type_Option(); $options = $post_type_option->get_post_types(); $new = array(); foreach ( $options as $one ) { if ( in_array($one['slug'], $data ) ) { if ( isset( $one[TOOLSET_EDIT_LAST]) ) { unset($one[TOOLSET_EDIT_LAST]); } } $new[$one['slug']] = $one; } update_option($group, $new); break; case WPCF_OPTION_NAME_CUSTOM_TAXONOMIES: $options = get_option( WPCF_OPTION_NAME_CUSTOM_TAXONOMIES, array() ); $new = array(); foreach ( $options as $one ) { if ( in_array($one['slug'], $data ) ) { if ( isset( $one[TOOLSET_EDIT_LAST]) ) { unset($one[TOOLSET_EDIT_LAST]); } } $new[$one['slug']] = $one; } update_option($group, $new); break; } } } } } }