PHPFusion\QuantumFields::_delete_category PHP Method

_delete_category() private method

private _delete_category ( )
    private function _delete_category()
    {
        global $aidlink;
        $this->locale = fusion_get_locale();
        $this->debug = FALSE;
        $data = array();
        if (isset($_POST['cancel'])) {
            redirect(FUSION_SELF . $aidlink);
        }
        if (isset($_GET['action']) && $_GET['action'] == 'cat_delete' && isset($_GET['cat_id']) && self::validate_fieldCat($_GET['cat_id'])) {
            // do action of the interior form
            if (isset($_POST['delete_cat'])) {
                // get root node
                $target_database = '';
                $field_list = array();
                if (isset($_POST['delete_subcat']) or isset($_POST['delete_field'])) {
                    if (in_array($_GET['cat_id'], $this->page_list)) {
                        // this is root.
                        $result = dbquery("\n                                  SELECT field_cat_id, field_parent, field_cat_db FROM " . $this->category_db . "\n                                  WHERE field_cat_id='" . intval($_GET['cat_id']) . "'\n                                  ");
                    } else {
                        // is is not a root.
                        $result = dbquery("\n                        SELECT uf.field_cat_id, root.field_cat_db FROM " . $this->category_db . " uf\n\t\t\t\t\t\tLEFT JOIN " . $this->category_db . " root ON uf.field_parent = root.field_cat_id\n\t\t\t\t\t\tWHERE uf.field_cat_id='" . intval($_GET['cat_id']) . "'\n\t\t\t\t\t\t");
                    }
                    if ($result == NULL) {
                        die("no result");
                    }
                    if (dbrows($result) > 0) {
                        $data += dbarray($result);
                        $target_database = $data['field_cat_db'] ? DB_PREFIX . $data['field_cat_db'] : DB_USERS;
                        $field_list = fieldgenerator($target_database);
                    }
                    if ($this->debug) {
                        print_p($field_list);
                        print_p($target_database);
                    }
                }
                if (isset($_POST['delete_subcat'])) {
                    // When deletion of a master page and involving all subcategories
                    if ($this->debug) {
                        print_p($this->page[$_GET['cat_id']]);
                    }
                    // execute removal on child fields and cats
                    foreach ($this->page[$_GET['cat_id']] as $arr => $field_category) {
                        $result = dbquery("\n                                  SELECT field_id, field_name FROM " . $this->field_db . "\n                                  WHERE field_cat='" . $field_category['field_cat_id'] . "'\n                                  ");
                        // find all child > 1
                        if (dbrows($result) > 0) {
                            while ($data = dbarray($result)) {
                                // remove column from db , and fields
                                if (in_array($data['field_name'], $field_list)) {
                                    // verify table integrity
                                    if ($this->debug) {
                                        print_p("DROP " . $data['field_name'] . " FROM " . $target_database);
                                        print_p("DELETE " . $data['field_id'] . " FROM " . $this->field_db);
                                    } else {
                                        dbquery("DELETE FROM " . $this->field_db . " WHERE field_id='" . $data['field_id'] . "'");
                                        if (!empty($target_database) && !empty($data['field_name'])) {
                                            self::drop_column($target_database, $data['field_name']);
                                        }
                                    }
                                }
                                // remove category.
                                if ($this->debug) {
                                    print_p("DELETE " . $field_category['field_cat_id'] . " FROM " . $this->category_db);
                                } else {
                                    dbquery("DELETE FROM " . $this->category_db . " WHERE field_cat_id='" . $field_category['field_cat_id'] . "'");
                                }
                            }
                            // end while
                        }
                    }
                } elseif (isset($_POST['move_subcat']) && $_POST['move_subcat'] > 0) {
                    // When deletion to move subcategory
                    foreach ($this->page[$_GET['cat_id']] as $arr => $field_category) {
                        $new_parent = form_sanitizer($_POST['move_subcat'], 0, 'move_subcat');
                        if ($this->debug) {
                            print_p("MOVED " . $field_category['field_cat_id'] . " TO category " . $new_parent);
                            print_p("DELETE " . $_GET['cat_id'] . " FROM " . $this->category_db);
                        } else {
                            dbquery("UPDATE " . $this->category_db . " SET field_parent='" . $new_parent . "' WHERE field_cat_id='" . $field_category['field_cat_id'] . "'");
                        }
                    }
                } elseif (isset($_POST['delete_field']) && isset($_GET['cat_id']) && isnum($_GET['cat_id'])) {
                    // Delete fields
                    $this->debug = FALSE;
                    if ($this->debug) {
                        print_p('Delete Fields');
                    }
                    // Delete Fields - Bug with Isset errors
                    $result = dbquery("SELECT field_id, field_name FROM " . $this->field_db . " WHERE field_cat='" . intval($_GET['cat_id']) . "'");
                    if (dbrows($result) > 0) {
                        while ($data = dbarray($result)) {
                            if (in_array($data['field_name'], $field_list)) {
                                // verify table integrity
                                if ($this->debug) {
                                    print_p("DROP " . $data['field_name'] . " FROM " . $target_database);
                                    print_p("DELETE " . $data['field_id'] . " FROM " . $this->field_db);
                                } else {
                                    $field_del_sql = "DELETE FROM " . $this->field_db . " WHERE field_id='" . $data['field_id'] . "'";
                                    $field_count = $this->validate_field($data['field_id']);
                                    if ($field_count) {
                                        dbquery($field_del_sql);
                                    }
                                    // drop a column
                                    if (!empty($target_database)) {
                                        self::drop_column($target_database, $data['field_name']);
                                    }
                                }
                            }
                        }
                        addNotice('success', $this->locale['field_0200']);
                        redirect(FUSION_SELF . $aidlink);
                    }
                } elseif (!isset($_POST['delete_field']) && isset($_POST['move_field']) && $_POST['move_field'] > 0) {
                    $rows = dbcount("(field_id)", $this->field_db, "field_cat='" . intval($_GET['cat_id']) . "'");
                    if ($rows) {
                        $new_parent = form_sanitizer($_POST['move_field'], 0, 'move_field');
                        dbquery("UPDATE " . $this->field_db . " SET field_cat='" . intval($new_parent) . "' WHERE field_cat='" . intval($_GET['cat_id']) . "'");
                    }
                }
                // Delete the current category
                $delete_cat_sql = "DELETE FROM " . $this->category_db . " WHERE field_cat_id='" . intval($_GET['cat_id']) . "'";
                if ($this->debug) {
                    print_p($delete_cat_sql);
                } else {
                    dbquery($delete_cat_sql);
                    addNotice('success', $this->locale['field_0200']);
                    redirect(FUSION_SELF . $aidlink);
                }
            } else {
                // show interior form
                $field_list = array();
                $form_action = FUSION_SELF . $aidlink . "&action=cat_delete&cat_id=" . $_GET['cat_id'];
                $result = dbquery("SELECT * FROM " . $this->category_db . " WHERE field_cat_id='" . $_GET['cat_id'] . "' OR field_cat_id='" . get_hkey($this->category_db, "field_cat_id", "field_parent", $_GET['cat_id']) . "'");
                if (dbrows($result) > 0) {
                    $data += dbarray($result);
                    // get field list - populate child fields of a category.
                    $result = dbquery("SELECT field_id, field_name, field_cat FROM " . $this->field_db . " WHERE field_cat='" . intval($_GET['cat_id']) . "'");
                    if (dbrows($result) > 0) {
                        // get field list.
                        while ($data = dbarray($result)) {
                            $field_list[$data['field_cat']][$data['field_id']] = $data['field_name'];
                        }
                    }
                    if (isset($this->page[$data['field_parent']]) or !empty($field_list) && $field_list[$_GET['cat_id']] > 0) {
                        ob_start();
                        echo openmodal("delete", $this->locale['fields_0313'], array('class' => 'modal-lg modal-center', 'static' => TRUE));
                        echo openform('delete_cat_form', 'post', $form_action);
                        if (isset($this->page[$_GET['cat_id']])) {
                            echo "<div class='row'>\n";
                            echo "<div class='col-xs-12 col-sm-6'>\n<span class='strong'>" . sprintf($this->locale['fields_0600'], count($this->page[$_GET['cat_id']])) . "</span><br/>\n";
                            echo "<div class='alert alert-info m-t-10'>\n";
                            echo "<ol style='list-style:inherit !important; margin-bottom:0;'>\n";
                            foreach ($this->page[$_GET['cat_id']] as $arr => $field_category) {
                                echo "<li style='list-style-type:decimal;'>" . self::parse_label($field_category['field_cat_name']) . "</li>\n";
                            }
                            echo "</ol>\n";
                            echo "</div>\n";
                            echo "</div>\n<div class='col-xs-12 col-sm-6 col-md-6 col-lg-6'>\n";
                            $page_list = $this->page_list;
                            unset($page_list[$_GET['cat_id']]);
                            if (count($page_list) > 0) {
                                echo form_select('move_subcat', $this->locale['fields_0314'], '', array("options" => $page_list));
                            }
                            echo form_checkbox('delete_subcat', $this->locale['fields_0315'], count($page_list) < 1 ? TRUE : FALSE);
                            echo "</div></div>";
                        }
                        if (isset($field_list[$_GET['cat_id']])) {
                            echo "<div class='row'>\n";
                            echo "<div class='col-xs-12 col-sm-6 col-md-6 col-lg-6'>\n<span class='strong'>" . sprintf($this->locale['fields_0601'], count($field_list[$_GET['cat_id']])) . "</span><br/>\n";
                            echo "<div class='well strong m-t-10'>\n";
                            foreach ($field_list[$_GET['cat_id']] as $arr => $field) {
                                echo "- " . $field . "<br/>\n";
                            }
                            echo "</div>\n";
                            echo "</div>\n<div class='col-xs-12 col-sm-6 col-md-6 col-lg-6'>\n";
                            $exclude_list[] = $_GET['cat_id'];
                            foreach ($this->page_list as $page_id => $page_name) {
                                $exclude_list[] = $page_id;
                            }
                            echo form_select_tree('move_field', $this->locale['fields_0316'], '', array('no_root' => 1, 'disable_opts' => $exclude_list), $this->category_db, 'field_cat_name', 'field_cat_id', 'field_parent');
                            echo form_checkbox('delete_field', $this->locale['fields_0317'], '');
                            echo "</div></div>";
                        }
                        echo form_button('delete_cat', $this->locale['fields_0313'], $this->locale['fields_0313'], array('class' => 'btn-danger btn-sm'));
                        echo form_button('cancel', $this->locale['cancel'], $this->locale['cancel'], array('class' => 'btn-default m-l-10 btn-sm'));
                        echo closeform();
                        echo closemodal();
                        add_to_footer(ob_get_contents());
                        ob_end_clean();
                    }
                } else {
                    if ($this->debug) {
                        notify('Cat ID was not found. Please check again.', 'Category ID was not found. Please check again.');
                    } else {
                        redirect(FUSION_SELF . $aidlink);
                    }
                }
            }
        }
    }