Exemple #1
0
/**
 * 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);
}