/** * Register all autoloaders for all modules. * * @internal * * @return void */ public static function registerAutoloaders() { $modules = self::getModsTable(); unset($modules[0]); foreach ($modules as $module) { $base = $module['type'] == self::TYPE_MODULE ? 'modules' : 'system'; ZLoader::addModule($module['directory'], ZIKULA_ROOT . "/{$base}"); } }
function installmodules($lang = 'en') { // This is a temporary hack for release 1.3.x to be able to install modules // load DoctrineExtensions plugin include_once __DIR__ . '/../plugins/DoctrineExtensions/Plugin.php'; PluginUtil::loadPlugin('SystemPlugin_DoctrineExtensions_Plugin'); // Lang validation $lang = DataUtil::formatForOS($lang); // create a result set $results = array(); $sm = ServiceUtil::getManager(); $coremodules = array('Extensions', 'Settings', 'Theme', 'Admin', 'Permissions', 'Groups', 'Blocks', 'Users'); // manually install the modules module foreach ($coremodules as $coremodule) { $modpath = 'system'; ZLoader::addModule($coremodule, $modpath); $bootstrap = __DIR__ . "/../{$modpath}/{$coremodule}/bootstrap.php"; if (file_exists($bootstrap)) { include_once $bootstrap; } ModUtil::dbInfoLoad($coremodule, $coremodule); $className = "{$coremodule}_Installer"; $instance = new $className($sm); if ($instance->install()) { $results[$coremodule] = true; } } // regenerate modules list $filemodules = ModUtil::apiFunc('ExtensionsModule', 'admin', 'getfilemodules'); ModUtil::apiFunc('ExtensionsModule', 'admin', 'regenerate', array('filemodules' => $filemodules)); // set each of the core modules to active reset($coremodules); foreach ($coremodules as $coremodule) { $mid = ModUtil::getIdFromName($coremodule, true); ModUtil::apiFunc('ExtensionsModule', 'admin', 'setstate', array('id' => $mid, 'state' => ModUtil::STATE_INACTIVE)); ModUtil::apiFunc('ExtensionsModule', 'admin', 'setstate', array('id' => $mid, 'state' => ModUtil::STATE_ACTIVE)); } // Add them to the appropriate category reset($coremodules); $coremodscat = array('Extensions' => __('System'), 'Permissions' => __('Users'), 'Groups' => __('Users'), 'Blocks' => __('Layout'), 'Users' => __('Users'), 'Theme' => __('Layout'), 'Admin' => __('System'), 'Settings' => __('System')); $categories = ModUtil::apiFunc('AdminModule', 'admin', 'getall'); $modscat = array(); foreach ($categories as $category) { $modscat[$category['name']] = $category['cid']; } foreach ($coremodules as $coremodule) { $category = $coremodscat[$coremodule]; ModUtil::apiFunc('AdminModule', 'admin', 'addmodtocategory', array('module' => $coremodule, 'category' => $modscat[$category])); } // create the default blocks. $blockInstance = new Blocks_Installer($sm); $blockInstance->defaultdata(); // install all the basic modules $modules = array(array('module' => 'SecurityCenter', 'category' => __('Security')), array('module' => 'Tour', 'category' => __('Content')), array('module' => 'Categories', 'category' => __('Content')), array('module' => 'Legal', 'category' => __('Content')), array('module' => 'Mailer', 'category' => __('System')), array('module' => 'Errors', 'category' => __('System')), array('module' => 'Theme', 'category' => __('Layout')), array('module' => 'Search', 'category' => __('Content'))); foreach ($modules as $module) { // sanity check - check if module is already installed if (ModUtil::available($module['module'])) { continue; } $modpath = 'modules'; // ZLoader::addModule($module, $modpath); ZLoader::addAutoloader($module, "{$modpath}"); $bootstrap = __DIR__ . "/../{$modpath}/{$module}/bootstrap.php"; if (file_exists($bootstrap)) { include_once $bootstrap; } ZLanguage::bindModuleDomain($module); $results[$module['module']] = false; // #6048 - prevent trying to install modules which are contained in an install type, but are not available physically if (!file_exists('system/' . $module['module'] . '/') && !file_exists('modules/' . $module['module'] . '/')) { continue; } $mid = ModUtil::getIdFromName($module['module']); // init it if (ModUtil::apiFunc('ExtensionsModule', 'admin', 'initialise', array('id' => $mid)) == true) { // activate it if (ModUtil::apiFunc('ExtensionsModule', 'admin', 'setstate', array('id' => $mid, 'state' => ModUtil::STATE_ACTIVE))) { $results[$module['module']] = true; } // Set category ModUtil::apiFunc('AdminModule', 'admin', 'addmodtocategory', array('module' => $module['module'], 'category' => $modscat[$module['category']])); } } System::setVar('language_i18n', $lang); return $results; }