/**
 * function for installing coscms from a profile
 */
function cos_install($options = false)
{
    // we need a profile specified
    if (!isset($options['profile'])) {
        common::abort('You need to specifiy a profile');
    }
    // create files - logs/ - files/
    cos_create_files();
    // drop database
    drop_db_default($ary = array('silence' => 1));
    // create database
    create_db();
    // load default base sql.
    load_db_default();
    // Set up profile to install
    $pro = new profile();
    $pro->setProfileInfo($options['profile']);
    // install all the profile modules
    foreach ($pro->profileModules as $key => $val) {
        // check if master is specified. Else use profile version
        if (conf::getMainIni('git_use_master')) {
            $tag = 'master';
        } else {
            $tag = $val['module_version'];
        }
        $options['repo'] = $val['public_clone_url'];
        $options['version'] = $tag;
        //$val['module_version'];
        $options['module'] = $val['module_name'];
        // check out and install
        cos_git_install($options, 'module');
    }
    // install templates
    foreach ($pro->profileTemplates as $key => $val) {
        if (conf::getMainIni('git_use_master')) {
            $tag = 'master';
        } else {
            $tag = $val['module_version'];
        }
        $options['repo'] = $val['public_clone_url'];
        $options['version'] = $tag;
        //$val['module_version'];
        $options['template'] = $val['module_name'];
        // check out and install
        cos_git_install($options, 'template');
    }
    // load all profile ini files
    $pro->loadProfileFiles($options['profile']);
    // set template
    $pro->setProfileTemplate();
}
/**
 * 
 * @param type $options array ('profile' => 'default', 'clone_only' => false) 
 */
function upgrade_from_profile($options)
{
    $pro = new profile();
    $pro->setProfileInfo($options['profile']);
    // Upgrade modules
    foreach ($pro->profileModules as $key => $val) {
        $val['repo'] = $val['public_clone_url'];
        $val['version'] = $val['module_version'];
        if (isset(conf::$vars['profile_use_master'])) {
            $val['version'] = 'master';
        }
        $val['module'] = $val['module_name'];
        $module = new moduleinstaller();
        $module->setInstallInfo($val);
        if ($module->isInstalled($val['module_name'])) {
            cos_git_upgrade($val, $val['version'], 'module');
        } else {
            if (isset($options['clone_only'])) {
                cos_git_clone($val, 'module');
            } else {
                cos_git_install($val, 'module');
            }
        }
    }
    // install templates
    foreach ($pro->profileTemplates as $key => $val) {
        $val['repo'] = $val['public_clone_url'];
        $val['version'] = $val['module_version'];
        if (isset(conf::$vars['profile_use_master'])) {
            $val['version'] = 'master';
        }
        // No DB operations. Only clone to specific version.
        if (isset($options['clone_only'])) {
            cos_git_clone($val, 'template');
        } else {
            cos_git_install($val, 'template');
        }
    }
}