/**
* Load published modules.
*
* @return array
*
* @since 3.2
*/
protected static function &load()
{
static $modules;
if (isset($modules)) {
return $modules;
}
$app = Factory::getApplication();
$modules = null;
$app->triggerEvent('onPrepareModuleList', array(&$modules));
// If the onPrepareModuleList event returns an array of modules, then ignore the default module list creation
if (!\is_array($modules)) {
$modules = static::getModuleList();
}
$app->triggerEvent('onAfterModuleList', array(&$modules));
$modules = static::cleanModuleList($modules);
$app->triggerEvent('onAfterCleanModuleList', array(&$modules));
return $modules;
}