すでにご承知かもしれませんが、以下の様にbaserCMSのGitHubにissueが上がっており、既知のバグとなっています。
4系は既にメンテナンスフェーズですので、改修されるかどうかも含めて、fixの時期は現時点では?のようです。
さて、既にツリー構造が壊れた場合の復旧に関してですが、残念ながら、SQLiteのcontentsテーブル内の不整合の起きているlftおよびrghtフィールドの値を直接editして修正するか、あるいは、管理画面上でコンテンツツリー構造のリセットボタンを押して、正しいツリー構造(リセット)にし、あらためて正しく並び替えるか、といった対応しかないと思います。
issueの内容から、現時点での予防策として、確認されているツリー構造が壊れる操作は概ね以下の様なケースのようです。
- ゴミ箱に1つでもコンテンツが存在する状態で、新たにコンテンツ一覧でコンテンツを追加すると、(コンテンツ)ツリー構造に問題が生じます(重複番号が発生する)。
- ゴミ箱に1つでもコンテンツが存在する状態で、新たにコンテンツ一覧でコンテンツを削除すると、(コンテンツ)ツリー構造に問題が生じます(重複番号が発生する)。
- 複数のコンテンツをまとめて(コンテンツを含むフォルダをフォルダごとゴミ箱に入れるなど)ゴミ箱に入れると、その時点で(コンテンツ)ツリー構造に問題が生じます(重複番号が発生する)。