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);
}
}
}
}
}