Browse Source

Do not delete child categories

Vova Tkach 6 years ago
parent
commit
845f21a54b
1 changed files with 32 additions and 4 deletions
  1. 32 4
      modules/module_blog_categories.go

+ 32 - 4
modules/module_blog_categories.go

@@ -239,22 +239,50 @@ func (this *Modules) RegisterAction_BlogCategoriesDelete() *Action {
 		}
 
 		// Update and insert new category
-		if _, err = tx.Exec("SELECT @ml := lft, @mr := rgt, @mw := rgt - lft + 1 FROM blog_cats WHERE id = ?;", pf_id); err != nil {
+		/*
+			if _, err = tx.Exec("SELECT @ml := lft, @mr := rgt, @mw := rgt - lft + 1 FROM blog_cats WHERE id = ?;", pf_id); err != nil {
+				tx.Rollback()
+				wrap.MsgError(err.Error())
+				return
+			}
+			if _, err = tx.Exec("DELETE FROM blog_cats WHERE lft BETWEEN @ml AND @mr AND id > 1;"); err != nil {
+				tx.Rollback()
+				wrap.MsgError(err.Error())
+				return
+			}
+			if _, err = tx.Exec("UPDATE blog_cats SET rgt = rgt - @mw WHERE rgt > @mr;"); err != nil {
+				tx.Rollback()
+				wrap.MsgError(err.Error())
+				return
+			}
+			if _, err = tx.Exec("UPDATE blog_cats SET lft = lft - @mw WHERE lft > @mr;"); err != nil {
+				tx.Rollback()
+				wrap.MsgError(err.Error())
+				return
+			}
+		*/
+
+		if _, err = tx.Exec("SELECT @ml := lft, @mr := rgt FROM blog_cats WHERE id = ?;", pf_id); err != nil {
+			tx.Rollback()
+			wrap.MsgError(err.Error())
+			return
+		}
+		if _, err = tx.Exec("DELETE FROM blog_cats WHERE id = ?;", pf_id); err != nil {
 			tx.Rollback()
 			wrap.MsgError(err.Error())
 			return
 		}
-		if _, err = tx.Exec("DELETE FROM blog_cats WHERE lft BETWEEN @ml AND @mr AND id > 1;"); err != nil {
+		if _, err = tx.Exec("UPDATE blog_cats SET lft = lft - 1, rgt = rgt - 1 WHERE lft > @ml AND rgt < @mr;"); err != nil {
 			tx.Rollback()
 			wrap.MsgError(err.Error())
 			return
 		}
-		if _, err = tx.Exec("UPDATE blog_cats SET rgt = rgt - @mw WHERE rgt > @mr;"); err != nil {
+		if _, err = tx.Exec("UPDATE blog_cats SET lft = lft - 2 WHERE lft > @mr;"); err != nil {
 			tx.Rollback()
 			wrap.MsgError(err.Error())
 			return
 		}
-		if _, err = tx.Exec("UPDATE blog_cats SET lft = lft - @mw WHERE lft > @mr;"); err != nil {
+		if _, err = tx.Exec("UPDATE blog_cats SET rgt = rgt - 2 WHERE rgt > @mr;"); err != nil {
 			tx.Rollback()
 			wrap.MsgError(err.Error())
 			return