function upgrade_v2_item_to_v3()

in web/wp-content/plugins/acf-extended/includes/modules/form/module-form-upgrades.php [579:1045]


    function upgrade_v2_item_to_v3($item, $args = array()){
    
        // form attributes
        $form_attributes = acf_maybe_get($args, 'acfe_form_attributes');
        $fields_attributes = acf_maybe_get($args, 'acfe_form_fields_attributes');
    
        // new item
        $item = array(
            'ID'            => $item['ID'],
            'name'          => $item['name'],
            'label'         => $item['label'],
            'title'         => $item['title'],
            'active'        => acf_maybe_get($args, 'acfe_form_active', true),
            'field_groups'  => acf_maybe_get($args, 'acfe_form_field_groups'),
            'settings'      => array(
                'location'              => acf_maybe_get($args, 'acfe_form_field_groups_rules'),
                'honeypot'              => acf_maybe_get($args, 'acfe_form_honeypot'),
                'kses'                  => acf_maybe_get($args, 'acfe_form_kses'),
                'uploader'              => acf_maybe_get($args, 'acfe_form_uploader'),
            ),
            'attributes'    => array(
                'form' => array(
                    'element' => acf_maybe_get($args, 'acfe_form_form_element') ? 'form' : 'div',
                    'class'   => acf_maybe_get($form_attributes, 'field_acfe_form_attributes_class'),
                    'id'      => acf_maybe_get($form_attributes, 'field_acfe_form_attributes_id'),
                ),
                'fields' => array(
                    'element'       => acf_maybe_get($args, 'acfe_form_form_field_el'),
                    'wrapper_class' => acf_maybe_get($fields_attributes, 'field_acfe_form_fields_wrapper_class'),
                    'class'         => acf_maybe_get($fields_attributes, 'field_acfe_form_fields_class'),
                    'label'         => acf_maybe_get($args, 'acfe_form_label_placement'),
                    'instruction'   => acf_maybe_get($args, 'acfe_form_instruction_placement'),
                ),
                'submit' => array(
                    'value'   => acf_maybe_get($args, 'acfe_form_submit_value'),
                    'button'  => acf_maybe_get($args, 'acfe_form_html_submit_button'),
                    'spinner' => acf_maybe_get($args, 'acfe_form_html_submit_spinner'),
                )
            ),
            'validation'    => array(
                'hide_error'        => acf_maybe_get($args, 'acfe_form_hide_error'),
                'hide_revalidation' => acf_maybe_get($args, 'acfe_form_hide_revalidation'),
                'hide_unload'       => acf_maybe_get($args, 'acfe_form_hide_unload'),
                'errors_position'   => acf_maybe_get($args, 'acfe_form_errors_position'),
                'errors_class'      => acf_maybe_get($args, 'acfe_form_errors_class'),
            ),
            'success'       => array(
                'hide_form' => acf_maybe_get($args, 'acfe_form_updated_hide_form'),
                'message'   => acf_maybe_get($args, 'acfe_form_updated_message'),
                'wrapper'   => acf_maybe_get($args, 'acfe_form_html_updated_message'),
            ),
            'actions'       => array(),
            'render'        => '',
        );
        
        // submit disabled
        if(!acf_maybe_get($args, 'acfe_form_form_submit')){
            $item['attributes']['submit'] = false;
        }
    
        // render
        $render               = '';
        $old_render           = acf_maybe_get($args, 'acfe_form_custom_html');
        $old_render_enabled   = acf_maybe_get($args, 'acfe_form_custom_html_enable');
        $before_render        = acf_maybe_get($args, 'acfe_form_html_before_fields');
        $after_render         = acf_maybe_get($args, 'acfe_form_html_after_fields');
        
        // old render
        if($old_render_enabled && $old_render){
            $render = $old_render;
        }
    
        // generate render
        if(!empty($before_render) || !empty($after_render)){
        
            // empty render
            // use {render:fields}
            if(empty($render)){
                $render = '{render:fields}';
            }
        
            // prepend before render
            if(!empty($before_render)){
                $render = $before_render . "\n\n" . $render;
            }
        
            // append before render
            if(!empty($after_render)){
                $render = $render . "\n\n" . $after_render;
            }
        
        }
    
        // deprecated {field:field_625e53aa1a791}
        // deprecated {field_group:group_61642cb824d8a}
        $render = str_replace('{field:', '{render:', $render);
        $render = str_replace('{field_group:', '{render:', $render);
    
        // assign form render
        $item['render'] = $render;
    
        // loop actions
        foreach(acf_get_array($args['acfe_form_actions']) as $row){
        
            switch($row['acf_fc_layout']){
            
                /**
                 * custom
                 */
                case 'custom':{
                
                    $action = array(
                        'action' => 'custom',
                        'name'   => acf_maybe_get($row, 'field_acfe_form_custom_action'),
                    );
                
                    // append action
                    $item['actions'][] = $action;
                
                    break;
                }
            
                /**
                 * email
                 */
                case 'email':{
                
                    $action = array(
                        'action'      => 'email',
                        'name'        => acf_maybe_get($row, 'field_acfe_form_email_custom_alias'),
                        'email'       => array(
                            'from'        => $this->handle_field_tags(acf_maybe_get($row, 'field_acfe_form_email_from')),
                            'to'          => $this->handle_field_tags(acf_maybe_get($row, 'field_acfe_form_email_to')),
                            'reply_to'    => $this->handle_field_tags(acf_maybe_get($row, 'field_acfe_form_email_reply_to')),
                            'cc'          => $this->handle_field_tags(acf_maybe_get($row, 'field_acfe_form_email_cc')),
                            'bcc'         => $this->handle_field_tags(acf_maybe_get($row, 'field_acfe_form_email_bcc')),
                            'subject'     => $this->handle_field_tags(acf_maybe_get($row, 'field_acfe_form_email_subject')),
                            'content'     => $this->handle_field_tags(acf_maybe_get($row, 'field_acfe_form_email_content')),
                        ),
                        'attachments' => array(),
                    );
                
                    // files dynamic
                    foreach(acf_get_array($row['field_acfe_form_email_files']) as $file){
                        $action['attachments'][] = array(
                            'file'   => $this->handle_field_tags(acf_maybe_get($file, 'field_acfe_form_email_file')),
                            'delete' => acf_maybe_get($file, 'field_acfe_form_email_file_delete'),
                        );
                    }
                
                    // files static
                    foreach(acf_get_array($row['field_acfe_form_email_files_static']) as $file){
                        $action['attachments'][] = acf_maybe_get($file, 'field_acfe_form_email_file_static');
                    }
                
                    // append action
                    $item['actions'][] = $action;
                
                    break;
                }
            
                /**
                 * option
                 */
                case 'option':{
                
                    $action = array(
                        'action' => 'option',
                        'name'   => acf_maybe_get($row, 'field_acfe_form_option_custom_alias'),
                        'save'   => array(
                            'target'     => $this->handle_field_tags(acf_maybe_get($row, 'field_acfe_form_option_save_target')),
                            'acf_fields' => $this->handle_acf_fields(acf_maybe_get($row, 'field_acfe_form_option_save_meta')),
                        ),
                        'load'   => array(
                            'source'     => $this->handle_field_tags(acf_maybe_get($row, 'field_acfe_form_option_load_source')),
                            'acf_fields' => $this->handle_acf_fields(acf_maybe_get($row, 'field_acfe_form_option_load_meta')),
                        ),
                    );
                
                    // load
                    $load_values = acf_maybe_get($row, 'field_acfe_form_option_load_values');
                
                    // reset load if disabled
                    if(!$load_values){
                        unset($action['load']);
                    }
                
                    // append action
                    $item['actions'][] = $action;
                
                    break;
                }
            
                /**
                 * post
                 */
                case 'post':{
                
                    $action = array(
                        'action' => 'post',
                        'type'   => acf_maybe_get($row, 'field_acfe_form_post_action'), // insert_post | update_post
                        'name'   => acf_maybe_get($row, 'field_acfe_form_post_custom_alias'),
                        'save'   => array(
                            'target'         => $this->handle_field_tags(acf_maybe_get($row, 'field_acfe_form_post_save_target')),
                            'post_type'      => $this->handle_field_tags(acf_maybe_get($row, 'field_acfe_form_post_save_post_type')),
                            'post_status'    => $this->handle_field_tags(acf_maybe_get($row, 'field_acfe_form_post_save_post_status')),
                            'post_title'     => $this->handle_field_tags(acf_maybe_get($row, 'field_acfe_form_post_save_post_title')),
                            'post_name'      => $this->handle_field_tags(acf_maybe_get($row, 'field_acfe_form_post_save_post_name')),
                            'post_content'   => '',
                            'post_excerpt'   => '',
                            'post_author'    => $this->handle_field_tags(acf_maybe_get($row, 'field_acfe_form_post_save_post_author')),
                            'post_parent'    => $this->handle_field_tags(acf_maybe_get($row, 'field_acfe_form_post_save_post_parent')),
                            'post_date'      => '',
                            'post_thumbnail' => '',
                            'post_terms'     => $this->handle_field_tags(acf_maybe_get($row, 'field_acfe_form_post_save_post_terms')),
                            'append_terms'   => '',
                            'acf_fields'     => $this->handle_acf_fields(acf_maybe_get($row, 'field_acfe_form_post_save_meta')),
                        ),
                        'load'   => array(
                            'source'         => $this->handle_field_tags(acf_maybe_get($row, 'field_acfe_form_post_load_source')),
                            'post_type'      => acf_maybe_get($row, 'field_acfe_form_post_map_post_type'),
                            'post_status'    => acf_maybe_get($row, 'field_acfe_form_post_map_post_status'),
                            'post_title'     => acf_maybe_get($row, 'field_acfe_form_post_map_post_title'),
                            'post_name'      => acf_maybe_get($row, 'field_acfe_form_post_map_post_name'),
                            'post_content'   => acf_maybe_get($row, 'field_acfe_form_post_map_post_content'),
                            'post_excerpt'   => acf_maybe_get($row, 'field_acfe_form_post_map_post_excerpt'),
                            'post_author'    => acf_maybe_get($row, 'field_acfe_form_post_map_post_author'),
                            'post_parent'    => acf_maybe_get($row, 'field_acfe_form_post_map_post_parent'),
                            'post_date'      => '',
                            'post_thumbnail' => '',
                            'post_terms'     => acf_maybe_get($row, 'field_acfe_form_post_map_post_terms'),
                            'acf_fields'     => $this->handle_acf_fields(acf_maybe_get($row, 'field_acfe_form_post_load_meta')),
                        ),
                    );
                
                    // post content
                    $group = acf_maybe_get($row, 'field_acfe_form_post_save_post_content_group');
                    $post_content = $group['field_acfe_form_post_save_post_content'];
                    $post_content_custom = $group['field_acfe_form_post_save_post_content_custom'];
                
                    if($post_content === 'custom'){
                        $post_content = $post_content_custom;
                    }
                
                    // post excerpt
                    $group = acf_maybe_get($row, 'field_acfe_form_post_save_post_excerpt_group');
                    $post_excerpt = $group['field_acfe_form_post_save_post_excerpt'];
                    $post_excerpt_custom = $group['field_acfe_form_post_save_post_excerpt_custom'];
                
                    if($post_excerpt === 'custom'){
                        $post_excerpt = $post_excerpt_custom;
                    }
                
                    // assign
                    $action['save']['post_content'] = $this->handle_field_tags($post_content);
                    $action['save']['post_excerpt'] = $this->handle_field_tags($post_excerpt);
                    
                    // load
                    $load_values = acf_maybe_get($row, 'field_acfe_form_post_load_values');
                    
                    // reset load if disabled
                    if(!$load_values){
                        unset($action['load']);
                        
                    }else{
                        
                        // load loop
                        foreach(array_keys($action['load']) as $key){
                            
                            $value = $action['load'][ $key ];
                            
                            // assign save key with {field:field_abcdef123456}
                            if(isset($action['save'][ $key ]) && !empty($value) && is_string($value) && acf_is_field_key($value)){
                                $action['save'][ $key ] = "{field:$value}";
                            }
                            
                        }
                        
                    }
                
                    // append action
                    $item['actions'][] = $action;
                
                    break;
                }
            
                /**
                 * redirect
                 */
                case 'redirect':{
                
                    $action = array(
                        'action' => 'redirect',
                        'name'   => acf_maybe_get($row, 'field_acfe_form_redirect_custom_alias'),
                        'url'    => acf_maybe_get($row, 'field_acfe_form_redirect_url'),
                    );
                
                    // append action
                    $item['actions'][] = $action;
                
                    break;
                }
            
                /**
                 * term
                 */
                case 'term':{
                
                    $action = array(
                        'action' => 'term',
                        'type'   => acf_maybe_get($row, 'field_acfe_form_term_action'), // insert_term | update_term
                        'name'   => acf_maybe_get($row, 'field_acfe_form_term_custom_alias'),
                        'save'   => array(
                            'target'      => $this->handle_field_tags(acf_maybe_get($row, 'field_acfe_form_term_save_target')),
                            'name'        => $this->handle_field_tags(acf_maybe_get($row, 'field_acfe_form_term_save_name')),
                            'slug'        => $this->handle_field_tags(acf_maybe_get($row, 'field_acfe_form_term_save_slug')),
                            'taxonomy'    => $this->handle_field_tags(acf_maybe_get($row, 'field_acfe_form_term_save_taxonomy')),
                            'parent'      => $this->handle_field_tags(acf_maybe_get($row, 'field_acfe_form_term_save_parent')),
                            'description' => '',
                            'acf_fields'  => $this->handle_acf_fields(acf_maybe_get($row, 'field_acfe_form_term_save_meta')),
                        ),
                        'load'   => array(
                            'source'      => $this->handle_field_tags(acf_maybe_get($row, 'field_acfe_form_term_load_source')),
                            'name'        => acf_maybe_get($row, 'field_acfe_form_term_map_name'),
                            'slug'        => acf_maybe_get($row, 'field_acfe_form_term_map_slug'),
                            'taxonomy'    => acf_maybe_get($row, 'field_acfe_form_term_map_taxonomy'),
                            'parent'      => acf_maybe_get($row, 'field_acfe_form_term_map_parent'),
                            'description' => acf_maybe_get($row, 'field_acfe_form_term_map_description'),
                            'acf_fields'  => $this->handle_acf_fields(acf_maybe_get($row, 'field_acfe_form_term_load_meta')),
                        ),
                    );
                
                    // description
                    $group = acf_maybe_get($row, 'field_acfe_form_term_save_description_group');
                    $description = $group['field_acfe_form_term_save_description'];
                    $description_custom = $group['field_acfe_form_term_save_description_custom'];
                
                    if($description === 'custom'){
                        $description = $description_custom;
                    }
                
                    // assign
                    $action['save']['description'] = $this->handle_field_tags($description);
                    
                    // load
                    $load_values = acf_maybe_get($row, 'field_acfe_form_term_load_values');
                    
                    // reset load if disabled
                    if(!$load_values){
                        unset($action['load']);
                        
                    }else{
                        
                        // load loop
                        foreach(array_keys($action['load']) as $key){
                            
                            $value = $action['load'][ $key ];
                            
                            // assign save key with {field:field_abcdef123456}
                            if(isset($action['save'][ $key ]) && !empty($value) && is_string($value) && acf_is_field_key($value)){
                                $action['save'][ $key ] = "{field:$value}";
                            }
                            
                        }
                        
                    }
                
                    // append action
                    $item['actions'][] = $action;
                
                    break;
                }
            
                /**
                 * user
                 */
                case 'user':{
                
                    $action = array(
                        'action' => 'user',
                        'type'   => acf_maybe_get($row, 'field_acfe_form_user_action'), // insert_user | update_user | log_user
                        'name'   => acf_maybe_get($row, 'field_acfe_form_user_custom_alias'),
                        'login'   => array(
                            'type'         => acf_maybe_get($row, 'field_acfe_form_user_log_type'),
                            'user'         => $this->handle_field_tags(acf_maybe_get($row, 'field_acfe_form_user_save_login_user')),
                            'pass'         => $this->handle_field_tags(acf_maybe_get($row, 'field_acfe_form_user_save_login_pass')),
                            'remember'     => $this->handle_field_tags(acf_maybe_get($row, 'field_acfe_form_user_save_login_remember')),
                        ),
                        'save'   => array(
                            'target'       => $this->handle_field_tags(acf_maybe_get($row, 'field_acfe_form_user_save_target')),
                            'user_email'   => $this->handle_field_tags(acf_maybe_get($row, 'field_acfe_form_user_save_email')),
                            'user_login'   => $this->handle_field_tags(acf_maybe_get($row, 'field_acfe_form_user_save_username')),
                            'user_pass'    => $this->handle_field_tags(acf_maybe_get($row, 'field_acfe_form_user_save_password')),
                            'first_name'   => $this->handle_field_tags(acf_maybe_get($row, 'field_acfe_form_user_save_first_name')),
                            'last_name'    => $this->handle_field_tags(acf_maybe_get($row, 'field_acfe_form_user_save_last_name')),
                            'nickname'     => $this->handle_field_tags(acf_maybe_get($row, 'field_acfe_form_user_save_nickname')),
                            'display_name' => $this->handle_field_tags(acf_maybe_get($row, 'field_acfe_form_user_save_display_name')),
                            'user_url'     => $this->handle_field_tags(acf_maybe_get($row, 'field_acfe_form_user_save_website')),
                            'description'  => '',
                            'role'         => $this->handle_field_tags(acf_maybe_get($row, 'field_acfe_form_user_save_role')),
                            'log_user'     => false,
                            'acf_fields'   => $this->handle_acf_fields(acf_maybe_get($row, 'field_acfe_form_user_save_meta')),
                        ),
                        'load'   => array(
                            'source'       => $this->handle_field_tags(acf_maybe_get($row, 'field_acfe_form_user_load_source')),
                            'user_email'   => acf_maybe_get($row, 'field_acfe_form_user_map_email'),
                            'user_login'   => acf_maybe_get($row, 'field_acfe_form_user_map_username'),
                            'user_pass'    => acf_maybe_get($row, 'field_acfe_form_user_map_password'),
                            'first_name'   => acf_maybe_get($row, 'field_acfe_form_user_map_first_name'),
                            'last_name'    => acf_maybe_get($row, 'field_acfe_form_user_map_last_name'),
                            'nickname'     => acf_maybe_get($row, 'field_acfe_form_user_map_nickname'),
                            'display_name' => acf_maybe_get($row, 'field_acfe_form_user_map_display_name'),
                            'user_url'     => acf_maybe_get($row, 'field_acfe_form_user_map_website'),
                            'description'  => acf_maybe_get($row, 'field_acfe_form_user_map_description'),
                            'role'         => acf_maybe_get($row, 'field_acfe_form_user_map_role'),
                            'acf_fields'   => $this->handle_acf_fields(acf_maybe_get($row, 'field_acfe_form_user_load_meta')),
                        ),
                    );
                
                    // description
                    $group = acf_maybe_get($row, 'field_acfe_form_user_save_description_group');
                    $description = $group['field_acfe_form_user_save_description'];
                    $description_custom = $group['field_acfe_form_user_save_description_custom'];
                
                    if($description === 'custom'){
                        $description = $description_custom;
                    }
                
                    // assign
                    $action['save']['description'] = $this->handle_field_tags($description);
                    
                    // load
                    $load_values = acf_maybe_get($row, 'field_acfe_form_user_load_values');
                    
                    // reset load if disabled
                    if(!$load_values){
                        unset($action['load']);
                        
                    }else{
                        
                        // load loop
                        foreach(array_keys($action['load']) as $key){
                            
                            $value = $action['load'][ $key ];
                            
                            // assign save key with {field:field_abcdef123456}
                            if(isset($action['save'][ $key ]) && !empty($value) && is_string($value) && acf_is_field_key($value)){
                                $action['save'][ $key ] = "{field:$value}";
                            }
                            
                        }
                        
                    }
                
                    // append action
                    $item['actions'][] = $action;
                
                    break;
                }
            
            }
        
        }
    
        return $item;
        
    }