PHPFusion\QuantumFields::quantum_dynamics_form PHP Method

quantum_dynamics_form() private method

The master form for Adding or Editing Dynamic Fields
private quantum_dynamics_form ( )
    private function quantum_dynamics_form()
    {
        global $aidlink, $defender;
        $config = array();
        $config_1 = array();
        $config_2 = array('field_thumbnail' => 0, 'field_thumbnail_2' => 0);
        $form_action = FUSION_SELF . $aidlink;
        if (isset($_GET['action']) && $_GET['action'] == 'field_edit' && isset($_GET['field_id']) && self::validate_field($_GET['field_id'])) {
            $form_action .= "&action=" . $_GET['action'] . "&field_id=" . $_GET['field_id'];
            $result = dbquery("SELECT * FROM " . $this->field_db . " WHERE field_id='" . intval($_GET['field_id']) . "'");
            if (dbrows($result) > 0) {
                $this->field_data = dbarray($result);
                if ($this->field_data['field_type'] == 'upload') {
                    $this->field_data += unserialize($this->field_data['config']);
                    // uncompress serialized extended information.
                    if ($this->debug) {
                        print_p($this->field_data);
                    }
                }
            } else {
                if (!$this->debug) {
                    redirect(FUSION_SELF . $aidlink);
                }
            }
        }
        $this->field_data['field_type'] = isset($_POST['add_field']) ? form_sanitizer($_POST['add_field'], '') : $this->field_data['field_type'];
        if (isset($_POST['save_field'])) {
            $this->field_data = array('field_type' => isset($_POST['add_field']) ? form_sanitizer($_POST['add_field'], '') : $this->field_data['field_type'], 'field_id' => form_sanitizer($_POST['field_id'], '0', 'field_id'), 'field_title' => form_sanitizer($_POST['field_title'], '', 'field_title', 1), 'field_name' => form_sanitizer($_POST['field_name'], '', 'field_name'), 'field_cat' => form_sanitizer($_POST['field_cat'], '0', 'field_cat'), 'field_options' => isset($_POST['field_options']) ? form_sanitizer($_POST['field_options'], '', 'field_options') : $this->field_data['field_options'], 'field_default' => isset($_POST['field_default']) ? form_sanitizer($_POST['field_default'], '', 'field_default') : $this->field_data['field_default'], 'field_error' => form_sanitizer($_POST['field_error'], '', 'field_error'), 'field_required' => isset($_POST['field_required']) ? 1 : 0, 'field_log' => isset($_POST['field_log']) ? 1 : 0, 'field_registration' => isset($_POST['field_registration']) ? 1 : 0, 'field_order' => form_sanitizer($_POST['field_order'], '0', 'field_order'));
            $this->field_data['field_name'] = str_replace(' ', '_', $this->field_data['field_name']);
            // make sure no space.
            if ($this->field_data['field_type'] == 'upload') {
                $max_b = isset($_POST['field_max_b']) ? form_sanitizer($_POST['field_max_b'], '', 'field_max_b') : 150000;
                $calc = isset($_POST['field_calc']) ? form_sanitizer($_POST['field_calc'], '', 'field_calc') : 1;
                $config = array('field_max_b' => isset($_POST['field_max_b']) && isset($_POST['field_calc']) ? $max_b * $calc : $this->field_data['field_max_b'], 'field_upload_type' => isset($_POST['field_upload_type']) ? form_sanitizer($_POST['field_upload_type'], '', 'field_upload_type') : $this->field_data['field_upload_type'], 'field_upload_path' => isset($_POST['field_upload_path']) ? form_sanitizer($_POST['field_upload_path'], '', 'field_upload_path') : $this->field_data['field_upload_path']);
                $config_1['field_valid_file_ext'] = isset($_POST['field_valid_file_ext']) && $config['field_upload_type'] == 'file' ? form_sanitizer($_POST['field_valid_file_ext'], '', 'field_valid_file_ext') : $this->field_data['field_valid_file_ext'];
                $config_2 = array('field_valid_image_ext' => isset($_POST['field_valid_image_ext']) && $config['field_upload_type'] == 'image' ? form_sanitizer($_POST['field_valid_image_ext'], '', 'field_valid_image_ext') : $this->field_data['field_valid_image_ext'], 'field_image_max_w' => isset($_POST['field_image_max_w']) && $config['field_upload_type'] == 'image' ? form_sanitizer($_POST['field_image_max_w'], '', 'field_image_max_w') : $this->field_data['field_image_max_w'], 'field_image_max_h' => isset($_POST['field_image_max_h']) && $config['field_upload_type'] == 'image' ? form_sanitizer($_POST['field_image_max_h'], '', 'field_image_max_h') : $this->field_data['field_image_max_h'], 'field_thumbnail' => isset($_POST['field_thumbnail']) ? form_sanitizer($_POST['field_thumbnail'], 0, 'field_thumbnail') : $this->field_data['field_thumbnail'], 'field_thumb_upload_path' => isset($_POST['field_thumb_upload_path']) && $config['field_upload_type'] == 'image' && $config_2['field_thumbnail'] ? form_sanitizer($_POST['field_thumb_upload_path'], '', 'field_thumb_upload_path') : $this->field_data['field_thumb_upload_path'], 'field_thumb_w' => isset($_POST['field_thumb_w']) && $config['field_upload_type'] == 'image' && $config_2['field_thumbnail'] ? form_sanitizer($_POST['field_thumb_w'], '', 'field_thumb_w') : $this->field_data['field_thumb_w'], 'field_thumb_h' => isset($_POST['field_thumb_h']) && $config['field_upload_type'] == 'image' && $config_2['field_thumbnail'] ? form_sanitizer($_POST['field_thumb_h'], '', 'field_thumb_h') : $this->field_data['field_thumb_h'], 'field_thumbnail_2' => isset($_POST['field_thumbnail_2']) ? 1 : isset($_POST['field_id']) ? 0 : $this->field_data['field_thumbnail_2'], 'field_thumb2_upload_path' => isset($_POST['field_thumb2_upload_path']) && $config['field_upload_type'] == 'image' && $config_2['field_thumbnail_2'] ? form_sanitizer($_POST['field_thumb2_upload_path'], '', 'field_thumb2_upload_path') : $this->field_data['field_thumb2_upload_path'], 'field_thumb2_w' => isset($_POST['field_thumb2_w']) && $config['field_upload_type'] == 'image' && $config_2['field_thumbnail_2'] ? form_sanitizer($_POST['field_thumb2_w'], '', 'field_thumb2_w') : $this->field_data['field_thumb2_w'], 'field_thumb2_h' => isset($_POST['field_thumb2_h']) && $config['field_upload_type'] == 'image' && $config_2['field_thumbnail_2'] ? form_sanitizer($_POST['field_thumb2_h'], '', 'field_thumb2_h') : $this->field_data['field_thumb2_h'], 'field_delete_original' => isset($_POST['field_delete_original']) && $config['field_upload_type'] == 'image' ? 1 : isset($_POST['field_id']) ? 0 : $this->field_data['field_delete_original']);
                if ($config['field_upload_type'] == 'file') {
                    $config = array_merge($config, $config_1);
                } elseif ($config['field_upload_type'] == 'image') {
                    // upload path must be required.
                    $config = array_merge($config, $config_2);
                } else {
                    \defender::stop();
                    addNotice('danger', $this->locale['fields_0108']);
                }
                if (\defender::safe()) {
                    $this->field_data['config'] = serialize($config);
                }
            }
            $this->create_fields($this->field_data, 'dynamics');
        }
        echo "<div class='m-t-20'>\n";
        echo openform('fieldform', 'post', $form_action, array('max_tokens' => 1));
        echo form_button('save_field', $this->locale['fields_0488'], 'save', array('input_id' => "save_field2", 'class' => 'btn-primary m-b-20'));
        $disable_opts = array();
        foreach ($this->page_list as $index => $v) {
            $disable_opts[] = $index;
        }
        // ok the value generated needs to be parsed by quantum
        echo form_select_tree('field_cat', $this->locale['fields_0450'], $this->field_data['field_cat'], array('no_root' => 1, 'width' => '100%', 'disable_opts' => $disable_opts), $this->category_db, 'field_cat_name', 'field_cat_id', 'field_parent');
        echo self::quantum_multilocale_fields('field_title', $this->locale['fields_0451'], $this->field_data['field_title'], array('required' => 1));
        echo form_text('field_name', $this->locale['fields_0453'], $this->field_data['field_name'], array('placeholder' => $this->locale['fields_0454'], 'required' => 1));
        if ($this->field_data['field_type'] == 'select') {
            echo form_select('field_options', $this->locale['fields_0455'], $this->field_data['field_options'], array('required' => 1, 'tags' => 1, 'multiple' => 1));
        }
        if ($this->field_data['field_type'] == 'upload') {
            require_once INCLUDES . 'mimetypes_include.php';
            $file_type_list = array();
            $file_image_list = array();
            foreach (mimeTypes() as $file_ext => $occ) {
                if (!in_array($file_ext, array_flip(img_mimeTypes()))) {
                    $file_type_list[] = '.' . $file_ext;
                }
            }
            foreach (img_mimeTypes() as $file_ext => $occ) {
                $file_image_list[] = '.' . $file_ext;
            }
            function calculate_byte($download_max_b)
            {
                $calc_opts = array(1 => $this->locale['fields_0490'], 1000 => $this->locale['fields_0491'], 1000000 => $this->locale['fields_0492']);
                foreach ($calc_opts as $byte => $val) {
                    if ($download_max_b / $byte <= 999) {
                        return $byte;
                    }
                }
                return 1000000;
            }
            $calc_opts = array(1 => $this->locale['fields_0490'], 1000 => $this->locale['fields_0491'], 1000000 => $this->locale['fields_0492']);
            $calc_c = calculate_byte($config['field_max_b']);
            $calc_b = $config['field_max_b'] / $calc_c;
            $file_upload_type = array('file' => $this->locale['fields_0456'], 'image' => 'Image Only');
            echo form_select('field_upload_type', $this->locale['fields_0457'], $config['field_upload_type'], array("options" => $file_upload_type));
            echo form_text('field_upload_path', $this->locale['fields_0458'], $config['field_upload_path'], array('placeholder' => $this->locale['fields_0459'], 'required' => 1));
            echo "<label for='field_max_b'>" . $this->locale['fields_0460'] . "</label>\n<br/>";
            echo "<div class='row'>\n";
            echo "<div class='col-xs-6 col-sm-6 col-md-6 col-lg-6'>\n";
            echo form_text('field_max_b', '', $calc_b, array('class' => 'm-b-0', 'number' => 1, 'required' => 1));
            echo "</div><div class='col-xs-6 col-sm-6 col-md-6 col-lg-6 p-l-0'>\n";
            echo form_select('field_calc', '', $calc_c, array('options' => $calc_opts, 'width' => '100%'));
            echo "</div>\n</div>\n";
            // File Type
            echo "<div id='file_type'>\n";
            echo form_select('field_valid_file_ext', $this->locale['fields_0461'], $config_1['field_valid_file_ext'], array('options' => $file_type_list, 'multiple' => TRUE, 'tags' => TRUE, 'required' => TRUE));
            echo "</div>\n";
            // Image Type
            echo "<div id='image_type'>\n";
            echo form_select('field_valid_image_ext', $this->locale['fields_0462'], $config_2['field_valid_image_ext'], array('options' => $file_image_list, 'multiple' => TRUE, 'tags' => TRUE, 'required' => TRUE));
            echo "<label>" . $this->locale['fields_0463'] . "</label>\n<br/>";
            echo "<div class='row'>\n";
            echo "<div class='col-xs-6 col-sm-6 col-md-6 col-lg-6'>\n";
            echo form_text('field_image_max_w', $this->locale['fields_0464'], $config_2['field_image_max_w'], array('number' => 1, 'placeholder' => $this->locale['fields_0466'], 'required' => 1));
            echo "</div><div class='col-xs-6 col-sm-6 col-md-6 col-lg-6 p-l-0'>\n";
            echo form_text('field_image_max_h', $this->locale['fields_0465'], $config_2['field_image_max_h'], array('number' => 1, 'placeholder' => $this->locale['fields_0466'], 'required' => 1));
            echo "</div>\n</div>\n";
            echo form_checkbox('field_thumbnail', $this->locale['fields_0467'], $config_2['field_thumbnail']);
            echo "<div id='field_t1'>\n";
            echo form_text('field_thumb_upload_path', $this->locale['fields_0468'], $config_2['field_thumb_upload_path'], array('placeholder' => $this->locale['fields_0469'], 'required' => 1));
            echo "<label>" . $this->locale['fields_0470'] . "</label>\n<br/>";
            echo "<div class='row'>\n";
            echo "<div class='col-xs-6 col-sm-6 col-md-6 col-lg-6'>\n";
            echo form_text('field_thumb_w', $this->locale['fields_0471'], $config_2['field_thumb_w'], array('number' => 1, 'placeholder' => $this->locale['fields_0466'], 'required' => 1));
            echo "</div><div class='col-xs-6 col-sm-6 col-md-6 col-lg-6 p-l-0'>\n";
            echo form_text('field_thumb_h', $this->locale['fields_0472'], $config_2['field_thumb_h'], array('number' => 1, 'placeholder' => $this->locale['fields_0466'], 'required' => 1));
            echo "</div>\n</div>\n";
            echo "</div>\n";
            echo form_checkbox('field_thumbnail_2', $this->locale['fields_0473'], $config_2['field_thumbnail_2']);
            echo "<div id='field_t2'>\n";
            echo form_text('field_thumb2_upload_path', $this->locale['fields_0474'], $config_2['field_thumb2_upload_path'], array('placeholder' => $this->locale['fields_0469'], 'required' => 1));
            echo "<label>" . $this->locale['fields_0475'] . "</label>\n<br/>";
            echo "<div class='row'>\n";
            echo "<div class='col-xs-6 col-sm-6 col-md-6 col-lg-6'>\n";
            echo form_text('field_thumb2_w', $this->locale['fields_0476'], $config_2['field_thumb2_h'], array('number' => 1, 'placeholder' => $this->locale['fields_0466'], 'required' => 1));
            echo "</div><div class='col-xs-6 col-sm-6 col-md-6 col-lg-6 p-l-0'>\n";
            echo form_text('field_thumb2_h', $this->locale['fields_0477'], $config_2['field_thumb2_h'], array('number' => 1, 'placeholder' => $this->locale['fields_0466'], 'required' => 1));
            echo "</div>\n</div>\n";
            echo "</div>\n";
            echo form_checkbox('field_delete_original', $this->locale['fields_0478'], $config_2['field_delete_original']);
            echo "</div>\n";
            add_to_jquery("\n\t\t\tif (\$('#field_upload_type').select2().val() == 'image') {\n\t\t\t\t\$('#image_type').show();\n\t\t\t\t\$('#file_type').hide();\n\t\t\t} else {\n\t\t\t\t\$('#image_type').hide();\n\t\t\t\t\$('#file_type').show();\n\t\t\t}\n\t\t\t\$('#field_upload_type').bind('change', function() {\n\t\t\t\tif (\$(this).select2().val() == 'image') {\n\t\t\t\t\$('#image_type').show();\n\t\t\t\t\$('#file_type').hide();\n\t\t\t\t} else {\n\t\t\t\t\$('#image_type').hide();\n\t\t\t\t\$('#file_type').show();\n\t\t\t\t}\n\t\t\t});\n\t\t\t// thumbnail\n\t\t\t\$('#field_thumbnail').is(':checked') ? \$('#field_t1').show() : \$('#field_t1').hide();\n\t\t\t\$('#field_thumbnail').bind('click', function() {\n\t\t\t\t\$(this).is(':checked') ? \$('#field_t1').show() : \$('#field_t1').hide();\n\t\t\t});\n\t\t\t// thumbnail 2\n\t\t\t\$('#field_thumbnail_2').is(':checked') ? \$('#field_t2').show() : \$('#field_t2').hide();\n\t\t\t\$('#field_thumbnail_2').bind('click', function() {\n\t\t\t\t\$(this).is(':checked') ? \$('#field_t2').show() : \$('#field_t2').hide();\n\t\t\t});\n\t\t\t");
        } else {
            // @todo add config for textarea
            if ($this->field_data['field_type'] !== 'textarea') {
                echo form_text('field_default', $this->locale['fields_0480'], $this->field_data['field_default']);
            }
            echo form_text('field_error', $this->locale['fields_0481'], $this->field_data['field_error']);
        }
        echo form_checkbox('field_required', $this->locale['fields_0482'], $this->field_data['field_required']);
        echo form_checkbox('field_log', $this->locale['fields_0483'], $this->field_data['field_log']);
        echo form_text('field_order', $this->locale['fields_0484'], $this->field_data['field_order'], array('number' => 1));
        echo form_checkbox('field_registration', $this->locale['fields_0485'], $this->field_data['field_registration']);
        echo form_hidden('add_field', '', $this->field_data['field_type']);
        echo form_hidden('field_id', '', $this->field_data['field_id']);
        echo form_button('save_field', $this->locale['fields_0488'], 'save', array('class' => 'btn-sm btn-primary'));
        echo closeform();
        echo "</div>\n";
    }