Family Tree API
Genosis
The most control you will get is by building a module. Jamroom is VERY module centric, even the core is a module of itself.
Once you have a module created it will serve as the base for all the adjustments you want to make and will allow you to tap into the system on various levels.
Probably what you're seeing with relation to the database being confusing is that each module gets its own 'datastore' which is a special KEY => VALUE type database structure. This is access from php via the jrCore_db_get_item() function and the jrCore_db_search_items() function. and in the templates via the {jrCore_list ..... } template function.
The value of a datastore comes from its ability to add extra "columns" without having to change the database structure.
For example, the jrAudio modules purpose is to allow the user to upload audio files, it uses a datastore. Then the jrTags module comes along and adds the ability for the user to tag audio files. The jrAudio module does not need to know or care whether the jrTags module exists or not. The jrTags module can write its tags to the jrAudio modules datastore so when anyone requests an item from the audio datastore the tags come back with it.
This allows modules to stay independent of each other. You can have regular SQL tables too.
With your own module you could setup its own view to create the output you need on a url that suits you, so maybe call your module xxFullTree and have a view of view_xxFullTree_everything() which would then be viewable at:
Then it would just be a matter of figuring out what it is you want and in what order inside the view_xxFullTree_everything() function.
If you like I can get that module setup with the file system structure enough to turn it on and have a play with it?
--edit--
Here is the beginning of a module. Upload it to your server then activate it by going to ACP -> MODULES -> CUSTOM -> FULL TREE -> INFO
If you dont see it run an integrity check first.
updated by @michael: 07/18/21 07:31:16PM