FreePBX API: Module System API
These functions are used to manage modules in freePBX. They are called by the module administration page and module_admin script. These are the only functions that should be used to control which modules are installed.
/** Get the latest module.xml file for this freePBX version.
* Caches in the database for 5 mintues.
* If $module is specified, only returns the data for that module.
* If the module is not found (or none are available for whatever reason),
* then null is returned.
*
* Sets the global variable $module_getonlinexml_error to true if an error
* occured getting the module from the repository, false if no error occured,
* or null if the repository wasn't checked. Note that this may change in the
* future if we decide we need to return more error codes, but as long as it's
* a php zero-value (false, null, 0, etc) then no error happened.
*/
function module_getonlinexml($module = false) { // was getModuleXml()
/** Looks through the modules directory and modules database and returns all available
* information about one or all modules
* @param string (optional) The module name to query, or false for all module
* @param mixed (optional) The status(es) to show, using MODULE_STATUS_* constants. Can
* either be one value, or an array of values.
*/
function module_getinfo($module = false, $status = false) {
/** Check if a module meets dependencies.
* @param mixed The name of the module, or the modulexml Array
* @return mixed Returns true if dependencies are met, or an array
* containing a list of human-readable errors if not.
* NOTE: you must use strict type checking (===) to test
* for true, because array() == true !
*/
function module_checkdepends($modulename) {
/** Finds all the enabled modules that depend on a given module
* @param mixed The name of the module, or the modulexml Array
* @return array Array containing the list of modules, or false if no dependencies
*/
function module_reversedepends($modulename) {
/** Enables a module
* @param string The name of the module to enable
* @param bool If true, skips status and dependency checks
* @return mixed True if succesful, array of error messages if not succesful
*/
function module_enable($modulename, $force = false) { // was enableModule
/** Downloads the latest version of a module
* and extracts it to the directory
* @param string The name of the module to install
* @param bool If true, skips status and dependency checks
* @param string The name of a callback function to call with progress updates.
function($action, $params). Possible actions:
getinfo: while downloading modules.xml
downloading: while downloading file; params include 'read' and 'total'
untar: before untarring
done: when complete
* @return mixed True if succesful, array of error messages if not succesful
*/
function module_download($modulename, $force = false, $progress_callback = null) { // was fetchModule
/** Installs or upgrades a module from it's directory
* Checks dependencies, and enables
* @param string The name of the module to install
* @param bool If true, skips status and dependency checks
* @return mixed True if succesful, array of error messages if not succesful
*/
function module_install($modulename, $force = false) {
/** Disable a module, but reqmains installed
* @param string The name of the module to disable
* @param bool If true, skips status and dependency checks
* @return mixed True if succesful, array of error messages if not succesful
*/
function module_disable($modulename, $force = false) { // was disableModule
/** Uninstall a module, but files remain
* @param string The name of the module to install
* @param bool If true, skips status and dependency checks
* @return mixed True if succesful, array of error messages if not succesful
*/
function module_uninstall($modulename, $force = false) {
/** Totally deletes a module
* @param string The name of the module to install
* @param bool If true, skips status and dependency checks
* @return mixed True if succesful, array of error messages if not succesful
*/
function module_delete($modulename, $force = false) {
