PATH:
home
/
letacommog
/
rdvenunclick.fr1
/
wp-content
/
plugins
/
acf-extended
/
includes
/
core
<?php if(!class_exists('acfe_upgrades')): class acfe_upgrades{ function __construct(){ $upgrades = acfe_settings('upgrades'); if(empty($upgrades)) return; // ACF Extended: 0.8.5 add_action('acf/init', array($this, 'upgrade_0_8_5'), 999); // ACF Extended: 0.8.6 add_action('acf/init', array($this, 'upgrade_0_8_6'), 999); } function upgrade_0_8_6(){ $todo = acfe_settings('upgrades.0_8_6'); if(!$todo) return; acf_log('[ACF Extended] 0.8.6 Upgrade: Dynamic Options Pages'); $get_options = get_posts(array( 'post_type' => 'acfe-dop', 'posts_per_page' => -1, 'fields' => 'ids' )); if(!empty($get_options)){ foreach($get_options as $post_id){ $menu_slug = get_field('menu_slug', $post_id); $acfe_dop_name = get_field('acfe_dop_name', $post_id); $post_name = get_post_field('post_name', $post_id); // Update empty 'menu_slug' fields in options pages if(empty($menu_slug)){ // Page Title $page_title = get_post_field('post_title', $post_id); // Menu Title $menu_title = get_field('menu_title', $post_id); if(empty($menu_title)){ $menu_title = $page_title; } // Menu Slug $menu_slug = sanitize_title($menu_title); // Update field update_field('menu_slug', $menu_slug, $post_id); } // Upgrade old name to menu_slug if($acfe_dop_name === $post_name){ // Get ACFE option $option = acfe_settings('modules.dynamic_option.data'); // Check ACFE option if(isset($option[$acfe_dop_name])){ $register_args = $option[$acfe_dop_name]; // Delete old option page slug unset($option[$acfe_dop_name]); // Re-assign to menu_slug $option[$menu_slug] = $register_args; // Sort keys ASC ksort($option); // Update ACFE option acfe_settings('modules.dynamic_option.data', $option, true); // Update post: force menu slug as name wp_update_post(array( 'ID' => $post_id, 'post_name' => $menu_slug, )); } } } } // Done acfe_settings()->delete('upgrades.0_8_6'); acf_log('[ACF Extended] 0.8.6 Upgrade: Done'); } function upgrade_0_8_5(){ $todo = acfe_settings('upgrades.0_8_5'); if(!$todo) return; $tasks = array( 'dynamic_form', 'dynamic_post_type', 'dynamic_taxonomy', 'dynamic_block_type', 'dynamic_option', ); foreach($tasks as $task){ /* * Forms */ if($task === 'dynamic_form'){ acf_log('[ACF Extended] 0.8.5 Upgrade: Dynamic Forms'); // Retrieve all forms posts $get_forms = get_posts(array( 'post_type' => 'acfe-form', 'posts_per_page' => -1, 'fields' => 'ids', 'post_status' => 'any' )); // Bail early if no form found if(empty($get_forms)){ // Upgrade done continue; } $flexible = acf_get_field_type('flexible_content'); $field = acf_get_field('acfe_form_actions'); global $wpdb; foreach($get_forms as $post_id){ // init $wp_meta = array(); $acf_meta = array(); // Retrieve meta $get_meta = $wpdb->get_results($wpdb->prepare("SELECT * FROM $wpdb->postmeta WHERE post_id = %d ", $post_id)); // Sort usort($get_meta, function($a, $b){ return strcmp($a->meta_key, $b->meta_key); }); // Store foreach($get_meta as $meta){ $wp_meta[$meta->meta_key] = $meta->meta_value; } // Check if is acf meta foreach($wp_meta as $key => $value){ // ACF Meta if(isset($wp_meta["_$key"])){ $acf_meta[] = array( 'key' => $key, 'value' => $wp_meta[$key], ); } } /* * Step 1: Upgrade old group fields */ $prefix = 'acfe_form_actions'; // Define script rules $rules = array( // Post: title array( 'group' => 'acfe_form_post_save_post_title_group', 'sub_field' => 'acfe_form_post_save_post_title_group_acfe_form_post_save_post_title', 'sub_field_custom' => 'acfe_form_post_save_post_title_group_acfe_form_post_save_post_title_custom', 'new_field' => 'acfe_form_post_save_post_title', ), // Post: name array( 'group' => 'acfe_form_post_save_post_name_group', 'sub_field' => 'acfe_form_post_save_post_name_group_acfe_form_post_save_post_name', 'sub_field_custom' => 'acfe_form_post_save_post_name_group_acfe_form_post_save_post_name_custom', 'new_field' => 'acfe_form_post_save_post_name', ), // Term: name array( 'group' => 'acfe_form_term_save_name_group', 'sub_field' => 'acfe_form_term_save_name_group_acfe_form_term_save_name', 'sub_field_custom' => 'acfe_form_term_save_name_group_acfe_form_term_save_name_custom', 'new_field' => 'acfe_form_term_save_name', ), // Term: slug array( 'group' => 'acfe_form_term_save_slug_group', 'sub_field' => 'acfe_form_term_save_slug_group_acfe_form_term_save_slug', 'sub_field_custom' => 'acfe_form_term_save_slug_group_acfe_form_term_save_slug_custom', 'new_field' => 'acfe_form_term_save_slug', ), // User: e-mail array( 'group' => 'acfe_form_user_save_email_group', 'sub_field' => 'acfe_form_user_save_email_group_acfe_form_user_save_email', 'sub_field_custom' => 'acfe_form_user_save_email_group_acfe_form_user_save_email_custom', 'new_field' => 'acfe_form_user_save_email', ), // User: username array( 'group' => 'acfe_form_user_save_username_group', 'sub_field' => 'acfe_form_user_save_username_group_acfe_form_user_save_username', 'sub_field_custom' => 'acfe_form_user_save_username_group_acfe_form_user_save_username_custom', 'new_field' => 'acfe_form_user_save_username', ), // User: password array( 'group' => 'acfe_form_user_save_password_group', 'sub_field' => 'acfe_form_user_save_password_group_acfe_form_user_save_password', 'sub_field_custom' => 'acfe_form_user_save_password_group_acfe_form_user_save_password_custom', 'new_field' => 'acfe_form_user_save_password', ), // User: first name array( 'group' => 'acfe_form_user_save_first_name_group', 'sub_field' => 'acfe_form_user_save_first_name_group_acfe_form_user_save_first_name', 'sub_field_custom' => 'acfe_form_user_save_first_name_group_acfe_form_user_save_first_name_custom', 'new_field' => 'acfe_form_user_save_first_name', ), // User: last name array( 'group' => 'acfe_form_user_save_last_name_group', 'sub_field' => 'acfe_form_user_save_last_name_group_acfe_form_user_save_last_name', 'sub_field_custom' => 'acfe_form_user_save_last_name_group_acfe_form_user_save_last_name_custom', 'new_field' => 'acfe_form_user_save_last_name', ), // User: nickname array( 'group' => 'acfe_form_user_save_nickname_group', 'sub_field' => 'acfe_form_user_save_nickname_group_acfe_form_user_save_nickname', 'sub_field_custom' => 'acfe_form_user_save_nickname_group_acfe_form_user_save_nickname_custom', 'new_field' => 'acfe_form_user_save_nickname', ), // User: display name array( 'group' => 'acfe_form_user_save_display_name_group', 'sub_field' => 'acfe_form_user_save_display_name_group_acfe_form_user_save_display_name', 'sub_field_custom' => 'acfe_form_user_save_display_name_group_acfe_form_user_save_display_name_custom', 'new_field' => 'acfe_form_user_save_display_name', ), // User: website array( 'group' => 'acfe_form_user_save_website_group', 'sub_field' => 'acfe_form_user_save_website_group_acfe_form_user_save_website', 'sub_field_custom' => 'acfe_form_user_save_website_group_acfe_form_user_save_website_custom', 'new_field' => 'acfe_form_user_save_website', ), ); // Process rules foreach($rules as $rule){ $updates = array(); foreach($acf_meta as $acf){ // Bail early if doesn't starts with 'acfe_form_actions' if(strpos($acf['key'], $prefix) !== 0) continue; // Regex: 'acfe_form_actions_2_acfe_form_post_save_post_title_group' // Match: '2' if(preg_match('/^' . $prefix . '_([0-9]+)_' . $rule['group'] . '$/', $acf['key'], $match)){ $updates[$rule['new_field']][$match[1]]['group'] = array( 'key' => $acf['key'], 'value' => $acf['value'], ); // Regex: 'acfe_form_post_2_save_post_title_group_acfe_form_post_save_post_title' // Match: '2' }elseif(preg_match('/^' . $prefix . '_([0-9]+)_' . $rule['sub_field'] . '$/', $acf['key'], $match)){ $updates[$rule['new_field']][$match[1]]['sub_field'] = array( 'key' => $acf['key'], 'value' => $acf['value'], ); // Regex: 'acfe_form_post_2_save_post_title_group_acfe_form_post_save_post_title_custom' // Match: '2' }elseif(preg_match('/^' . $prefix . '_([0-9]+)_' . $rule['sub_field_custom'] . '$/', $acf['key'], $match)){ // Generate: array[acfe_form_post_save_post_title][2]['sub_field_custom'] $updates[$rule['new_field']][$match[1]]['sub_field_custom'] = array( 'key' => $acf['key'], 'value' => $acf['value'], ); } } if(!empty($updates)){ // Update meta foreach($updates as $new_field => $data){ foreach($data as $i => $row){ $group = acf_maybe_get($row, 'group'); $sub_field = acf_maybe_get($row, 'sub_field'); $sub_field_custom = acf_maybe_get($row, 'sub_field_custom'); if($sub_field){ $new_field_name = "{$prefix}_{$i}_{$new_field}"; // update field if($sub_field['value'] === 'custom'){ update_post_meta($post_id, $new_field_name, $sub_field_custom['value']); }else{ update_post_meta($post_id, $new_field_name, $sub_field['value']); } // update reference update_post_meta($post_id, '_' . $new_field_name, 'field_' . $new_field); } // Delete old group delete_post_meta($post_id, $group['key']); delete_post_meta($post_id, $sub_field['key']); delete_post_meta($post_id, $sub_field_custom['key']); } } } } /* * Step 2: Upgrade map fields which now require "Load values" to be enabled */ if(have_rows('acfe_form_actions', $post_id)): while(have_rows('acfe_form_actions', $post_id)): the_row(); $layout = get_row_layout(); $row = get_row_index(); $i = $row-1; // Post Action if($layout === 'post'){ $load_values = get_sub_field('acfe_form_post_load_values'); $fields = array( 'field_acfe_form_post_save_post_type' => get_sub_field('acfe_form_post_map_post_type', false), 'field_acfe_form_post_save_post_status' => get_sub_field('acfe_form_post_map_post_status', false), 'field_acfe_form_post_save_post_title' => get_sub_field('acfe_form_post_map_post_title', false), 'field_acfe_form_post_save_post_name' => get_sub_field('acfe_form_post_map_post_name', false), 'field_acfe_form_post_save_post_content' => get_sub_field('acfe_form_post_map_post_content', false), 'field_acfe_form_post_save_post_author' => get_sub_field('acfe_form_post_map_post_author', false), 'field_acfe_form_post_save_post_parent' => get_sub_field('acfe_form_post_map_post_parent', false), 'field_acfe_form_post_save_post_terms' => get_sub_field('acfe_form_post_map_post_terms', false), ); if(!$load_values){ foreach($fields as $field_key => $field_value){ // Bail early if map field has no value if(empty($field_value)) continue; // args $update = array(); $update['acf_fc_layout'] = $layout; // Post content inside group if($field_key === 'field_acfe_form_post_save_post_content'){ $update['field_acfe_form_post_save_post_content_group'] = array( 'field_acfe_form_post_save_post_content' => $field_value ); }else{ $update[$field_key] = $field_value; } // update $flexible->update_row($update, $i, $field, $post_id); } } } // Term Action elseif($layout === 'term'){ $load_values = get_sub_field('acfe_form_term_load_values'); $fields = array( 'field_acfe_form_term_save_name' => get_sub_field('acfe_form_term_map_name', false), 'field_acfe_form_term_save_slug' => get_sub_field('acfe_form_term_map_slug', false), 'field_acfe_form_term_save_taxonomy' => get_sub_field('acfe_form_term_map_taxonomy', false), 'field_acfe_form_term_save_parent' => get_sub_field('acfe_form_term_map_parent', false), 'field_acfe_form_term_save_description' => get_sub_field('acfe_form_term_map_description', false), ); if(!$load_values){ foreach($fields as $field_key => $field_value){ // Bail early if map field has no value if(empty($field_value)) continue; // args $update = array(); $update['acf_fc_layout'] = $layout; // Post content inside group if($field_key === 'field_acfe_form_term_save_description'){ $update['field_acfe_form_term_save_description_group'] = array( 'field_acfe_form_term_save_description' => $field_value ); }else{ $update[$field_key] = $field_value; } // update $flexible->update_row($update, $i, $field, $post_id); } } } // User Action elseif($layout === 'user'){ $load_values = get_sub_field('acfe_form_user_load_values'); $fields = array( 'field_acfe_form_user_save_email' => get_sub_field('acfe_form_user_map_email', false), 'field_acfe_form_user_save_username' => get_sub_field('acfe_form_user_map_username', false), 'field_acfe_form_user_save_password' => get_sub_field('acfe_form_user_map_password', false), 'field_acfe_form_user_save_first_name' => get_sub_field('acfe_form_user_map_first_name', false), 'field_acfe_form_user_save_last_name' => get_sub_field('acfe_form_user_map_last_name', false), 'field_acfe_form_user_save_nickname' => get_sub_field('acfe_form_user_map_nickname', false), 'field_acfe_form_user_save_display_name' => get_sub_field('acfe_form_user_map_display_name', false), 'field_acfe_form_user_save_website' => get_sub_field('acfe_form_user_map_website', false), 'field_acfe_form_user_save_description' => get_sub_field('acfe_form_user_map_description', false), 'field_acfe_form_user_save_role' => get_sub_field('acfe_form_user_map_role', false), ); if(!$load_values){ foreach($fields as $field_key => $field_value){ // Bail early if map field has no value if(empty($field_value)) continue; // args $update = array(); $update['acf_fc_layout'] = $layout; // Post content inside group if($field_key === 'field_acfe_form_user_save_description'){ $update['field_acfe_form_user_save_description_group'] = array( 'field_acfe_form_user_save_description' => $field_value ); }else{ $update[$field_key] = $field_value; } // update $flexible->update_row($update, $i, $field, $post_id); } } } endwhile; endif; } } /* * Post Types */ elseif($task === 'dynamic_post_type'){ acf_log('[ACF Extended] 0.8.5 Upgrade: Dynamic Post Types'); // Old Post Types $old_post_types = get_option('acfe_dynamic_post_types', array()); // New Post Types $new_post_types = acfe_settings('modules.dynamic_post_type.data'); $merged_post_types = array_merge($old_post_types, $new_post_types); // Update Post Types acfe_settings('modules.dynamic_post_type.data', $merged_post_types, true); // Delete Old Post Types delete_option('acfe_dynamic_post_types'); } /* * Taxonomies */ elseif($task === 'dynamic_taxonomy'){ acf_log('[ACF Extended] 0.8.5 Upgrade: Dynamic Taxonomies'); // Old Taxonomies $old_taxonomies = get_option('acfe_dynamic_taxonomies', array()); // New Taxonomies $new_taxonomies = acfe_settings('modules.dynamic_taxonomy.data'); $merged_taxonomies = array_merge($old_taxonomies, $new_taxonomies); // Update Taxonomies acfe_settings('modules.dynamic_taxonomy.data', $merged_taxonomies, true); // Delete Old Taxonomies delete_option('acfe_dynamic_taxonomies'); } /* * Block Types */ elseif($task === 'dynamic_block_type'){ acf_log('[ACF Extended] 0.8.5 Upgrade: Dynamic Block Types'); // Old Block Types $old_block_types = get_option('acfe_dynamic_block_types', array()); // New Block Types $new_block_types = acfe_settings('modules.dynamic_block_type.data'); $merged_block_types = array_merge($old_block_types, $new_block_types); // Update Block Types acfe_settings('modules.dynamic_block_type.data', $merged_block_types, true); // Delete Old Block Types delete_option('acfe_dynamic_block_types'); } /* * Option Pages */ elseif($task === 'dynamic_option'){ acf_log('[ACF Extended] 0.8.5 Upgrade: Dynamic Options Pages'); // Old Options $old_options = get_option('acfe_dynamic_options_pages', array()); // New Options $new_options = acfe_settings('modules.dynamic_option.data'); $merged_options = array_merge($old_options, $new_options); // Update Options acfe_settings('modules.dynamic_option.data', $merged_options, true); // Delete Old Options delete_option('acfe_dynamic_options_pages'); } } // Done acfe_settings()->delete('upgrades.0_8_5'); acf_log('[ACF Extended] 0.8.5 Upgrade: Done'); } } endif;
[+]
..
[-] multilang.php
[edit]
[-] settings.php
[edit]
[-] enqueue.php
[edit]
[-] helpers.php
[edit]
[-] compatibility.php
[edit]
[-] menu.php
[edit]
[-] upgrades.php
[edit]