[eluser]m4rw3r[/eluser]
I could try to implement a hybrid of Modified Preorder Tree Traversal (lft and rgt) and Adjacency List (parent_id and level) (I will probably add it as an option to MPTtree).
About the getDescendantsCounts() and getChildrenCount(), should they really return an int? I believe you can use count_descendants() / count_children() otherwise, if you only need an int in return.
And the is_descendant_of() and is_child_of() I'll probably implement in the ORM, it seems more fitting there.
Haven't checked this with matchbox, haven't really used matchbox before, but I'll look into it (got some work with school, so it may take some time before I have time to do anything of those above).