/** * installs additional modules (located in ./optional subfolder) **/ function install_optional_modules() { global $admin, $bundled, $config, $lang, $dirh; write2log('> [install_optional_modules()]'); if (!isset($_REQUEST['installer_optional_addon']) || !is_array($_REQUEST['installer_optional_addon']) || !count($_REQUEST['installer_optional_addon'])) { fwrite($logh, 'no additional addons to install'); fclose($logh); return array(true, array()); } else { $config['optional_addon'] == $_REQUEST['installer_optional_addon']; } write2log('------------------------------------'); write2log('-----installing optional addons-----'); write2log('------------------------------------'); write2log(print_r($config['optional_addon'], 1)); $cat_path = $dirh->sanitizePath(dirname(__FILE__) . '/..'); $errors = array(); // try to set max_execution_time ini_set('max_execution_time', CAT_INST_EXEC_TIME); // set installed CMS version for precheck.php CAT_Registry::set('CAT_VERSION', $config['installed_version'], true); // set other constants init_constants($cat_path); include $cat_path . '/framework/class.database.php'; $database = new database(); foreach ($config['optional_addon'] as $file) { if (!file_exists($dirh->sanitizePath(dirname(__FILE__) . '/optional/' . $file))) { write2log('file not found: ' . $dirh->sanitizePath(dirname(__FILE__) . '/optional/' . $file)); $errors[] = $lang->translate('No such file: [{{file}}]', array('file' => $file)); } else { write2log('installing optional addon [' . $file . ']'); if (!CAT_Helper_Addons::installModule($dirh->sanitizePath(dirname(__FILE__) . '/optional/' . $file), true)) { write2log('-> installation failed! ' . CAT_Helper_Addons::getError()); if (CAT_Helper_Addons::getError() != 'already installed') { $errors[] = $lang->translate('-> Unable to install {{module}}! {{error}}', array('module' => $file, 'error' => CAT_Helper_Addons::getError())); } } else { write2log('-> installation succeeded'); } } } write2log('< [install_optional_modules()]'); return array(count($errors) ? false : true, $errors); }