# wpdirectorykit/1.1.0/application/controllers/Wdk_fields.php

WP Directory Kit, version 1.1.0. 227 lines.

- Page: https://pluginprobe.com/plugins/wpdirectorykit/1.1.0/code/application/controllers/Wdk_fields.php
- Raw: https://pluginprobe.com/plugins/wpdirectorykit/1.1.0/raw/application/controllers/Wdk_fields.php
- Modified: 2022-11-24T13:50:28+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/wpdirectorykit/1.1.0/code/application/controllers/Wdk_fields.php#L10-L20`.

```php
<?php
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly;

class Wdk_fields extends Winter_MVC_Controller {

	public function __construct(){
		parent::__construct();
	}
    
	public function index()
	{
        $this->load->model('field_m');

        $this->data['fields'] = $this->field_m->get();

        //wmvc_dump($this->data['fields']);


        $this->load->view('wdk_fields/index', $this->data);
    }

	public function field_edit()
	{
        $this->load->model('field_m');
        $this->load->model('listingfield_m');

        $field_id = (int) $this->input->post_get('id');
        wdk_access_check('category_m', $field_id);
        $this->data['field_types'] = array(
            'INPUTBOX' =>   __('INPUTBOX', 'wpdirectorykit'),
            'SECTION' =>    __('SECTION', 'wpdirectorykit'),
            'TEXTAREA' =>   __('TEXTAREA', 'wpdirectorykit'),
            'TEXTAREA_WYSIWYG' =>   __('TEXTAREA WYSIWYG', 'wpdirectorykit'),
            'NUMBER' =>     __('NUMBER', 'wpdirectorykit'),
            'DATE' =>       __('DATE', 'wpdirectorykit'),
            'DROPDOWN' =>   __('DROPDOWN', 'wpdirectorykit'),
            'CHECKBOX' =>   __('CHECKBOX', 'wpdirectorykit'),
        );
        $this->data['section_list'] = array(
            '' =>   __('Not Selected', 'wpdirectorykit'),
        );
        
        $fields_list = $this->field_m->get();
        $this->data['fields_tree'] = array();
        $this->data['fields_categories'] = array();
        $section = '';
        foreach ($fields_list as $key => $field) {
            if($field->field_type == "SECTION") {
                $section = $field->idfield;
                $this->data['fields_tree'][$section] = array();
            } else {
                $this->data['fields_tree'][$section][$field->idfield] =$field->field_label;
                $this->data['fields_categories'][$field->idfield] = $section;
            }
        }

        $this->db->where(array('field_type'=> 'SECTION'));
        $section_list = $this->field_m->get();
        foreach($section_list as $section) {
            $this->data['section_list'][$section->idfield] = $section->field_label;
        }

        $this->data['db_data'] = NULL;

        $this->data['form'] = &$this->form;

        $rules = array(
            array(
                'field' => 'field_type',
                'label' => __('Field Type', 'wpdirectorykit'),
                'rules' => 'required'
            ),
            array(
                'field' => 'field_label',
                'label' => __('Field Label', 'wpdirectorykit'),
                'rules' => 'required'
            ),
            array(
                'field' => 'hint',
                'label' => __('Hint', 'wpdirectorykit'),
                'rules' => ''
            ),
            array(
                'field' => 'columns_number',
                'label' => __('Columns number/Width', 'wpdirectorykit'),
                'rules' => ''
            ),
            array(
                'field' => 'is_visible_frontend',
                'label' => __('Visible on Frontend', 'wpdirectorykit'),
                'rules' => ''
            ),
            array(
                'field' => 'is_required',
                'label' => __('Field is Required', 'wpdirectorykit'),
                'rules' => ''
            ),
            array(
                'field' => 'is_price_format',
                'label' => __('Field is Price Format', 'wpdirectorykit'),
                'rules' => ''
            ),
            array(
                'field' => 'is_visible_dashboard',
                'label' => __('Visible in Dashboard', 'wpdirectorykit'),
                'rules' => ''
            ),
            array(
                'field' => 'prefix',
                'label' => __('Prefix', 'wpdirectorykit'),
                'rules' => ''
            ),
            array(
                'field' => 'suffix',
                'label' => __('Suffix', 'wpdirectorykit'),
                'rules' => ''
            ),
            array(
                'field' => 'values_list',
                'label' => __('Values', 'wpdirectorykit'),
                'rules' => ''
            ),
            array(
                'field' => 'icon_id',
                'label' => __('Parent', 'wpdirectorykit'),
                'rules' => ''
            ),
        );

        if($this->form->run($rules))
        {
            // Save procedure for basic data
 
            $data = $this->field_m->prepare_data($this->input->post(), $rules);


            $insert_id = $this->field_m->insert($data, $field_id);

            // check if column exists, add if nto exists

            if(!empty($insert_id))
                $this->listingfield_m->create_table_column($data, $insert_id);

            //exit($this->db->last_error());

            /* Change section */
            if($this->input->post('section'))
            if(empty($field_id) || ($field_id && $this->data['fields_categories'][$field_id] != $this->input->post('section'))) {
                /* add section in new category */
                $this->data['fields_tree'][$this->input->post('section')][$insert_id] = true;
                
                /* remove section from old category */
                if(isset($this->data['fields_categories'][$field_id]))
                    unset($this->data['fields_tree'][$this->data['fields_categories'][$field_id]][$field_id]);

                /* indexes by new order and reorder */
                $values = array();
                $order_index = 1;
                foreach( $this->data['fields_tree'] as $key_section => $section)
                {
                    $values[] = array('order_index' => $order_index, 'idfield' => $key_section);
                    $order_index++;
                    if(is_array($section))
                        foreach($section as $key_field => $field)
                        {
                            $values[] = array('order_index' => $order_index, 'idfield' => $key_field);
                            $order_index++;
                        }
                }
                $this->db->updateBatch( $this->field_m->_table_name, $values, 'idfield');
            }


            // redirect

            if(!empty($insert_id) && empty($field_id))
            {
                wp_redirect(admin_url("admin.php?page=wdk_fields&function=field_edit&id=$insert_id&is_updated=true"));
                exit;
            }
        }

        if(!empty($field_id))
            $this->data['db_data'] = $this->field_m->get($field_id, TRUE);

        $this->load->view('wdk_fields/field_edit', $this->data);
    }

    public function ajax_save_order()
    {
        $this->load->model('field_m');

        $data_fields_list = $this->input->post_get('data_fields_list');
        

        $splitted = explode(';', $data_fields_list);

        $values = array();
        $order_index = 1;
        
        foreach($splitted as $field_id)
        {
            if(!empty($field_id))
                $values[] = array('order_index' => $order_index, 'idfield' => $field_id);
                
            $order_index++;
        }

        echo esc_html($this->db->updateBatch( $this->field_m->_table_name, $values, 'idfield'));

        //wmvc_dump($_POST);
        exit();
    }

    public function delete()
    {
        $field_id = (int) $this->input->post_get('id');

        $this->load->model('field_m');

        $this->field_m->delete($field_id);

        wp_redirect(admin_url("admin.php?page=wdk_fields"));
    }
    
}

```
