Some of the tools and integration work I've done have relied on some database tables that are only here for this integration purpose. The school I'm working for might be purchasing some more schools and I'm considering how to automate some things as we build new online schools wouldn't it be great to have all that support stuff in one module that can be imported as a plugin, and have that module have a small interface that allows us to say check for support tables and if they are not there create them. In addition, there are some other things I would like to throw in that are not database related and thinking it would be a good way to encapsulate all these custom features we need.
But there is not much in the way of documentation of the /admin/tools/* modules. Not a big problem I can examine them and glean what I need from other examples but very quickly on I recognize these are not modules like activity modules leading me to a whole host of questions. like what is the bare bones minimum amount of skeleton I need to make an Admin module and expect it not to break Moodle? It appears in a general sense that there is no standardized file/folder structure to define where to put certain things so that Moodle knows how to use the module. Is that true? Am I right in this assumption.
Can I basically do almost anything I want in the /admin/tools/* modules? And is that the reason why there is no standardization I can detect with respect to how you get Moodle to recognize the module name and other specifics that are used during installation?
Ideally, the basic barebones of this module I want to create would allow us to create additional XMLDB entries to create support tables and also I need some view, stored procedures, functions and events to exist in any of our databases for the purpose of integration to our Student Management system. I know I can create KEYED tables in the Moodle XMLDB entries but this is a step beyond, asking to create views/procedure/functions. So I am thinking this module would have a folder in it that has *.sql scripts that the module would then read in and execute using mysqli if needs be. Then over time, if we have other needs that exist, all we need to do is copy a new *.sql script in that folder and the system would then be able to execute it when we use this admin module.
Last question, is there a better way to accomplish this task than to build a module? I discovered the need for this module as I brought in a new developer and had to get him all hooked up with the various things so he could get a working copy of our Moodle on his workstation. That is when I said "there has got to be a better way".