Пример #1
0
function install_from_profile($options)
{
    $pro = new profile();
    $pro->setProfileInfo($options['profile']);
    $final = true;
    foreach ($pro->profileModules as $val) {
        $val['module'] = $val['module_name'];
        $val['version'] = $val['module_version'];
        if ($val['module'] == 'siteclone') {
            continue;
        }
        $module = new moduleinstaller($val);
        if ($module->isInstalled($val['module_name'])) {
            upgrade_module($val);
        } else {
            $ret = install_module_silent($val);
            if (!$ret) {
                $final = false;
            }
        }
    }
    // set template
    $pro->setProfileTemplate();
    return $final;
}
if (!$list) {
    $admin->print_error($MESSAGE['GENERIC_CANNOT_UNZIP']);
}
// Delete the temp zip file
if (file_exists($temp_file)) {
    unlink($temp_file);
}
// Chmod all the uploaded files
$dir = dir($module_dir);
while (false !== ($entry = $dir->read())) {
    // Skip pointers
    if (substr($entry, 0, 1) != '.' and $entry != '.svn' and !is_dir($module_dir . '/' . $entry)) {
        // Chmod file
        change_mode($module_dir . '/' . $entry, 'file');
    }
}
// Run the modules install // upgrade script if there is one
if (file_exists($module_dir . '/' . $action . '.php')) {
    require $module_dir . '/' . $action . '.php';
}
// Print success message
if ($action == "install") {
    // Load module info into DB
    load_module(WB_PATH . '/modules/' . $module_directory, false);
    $admin->print_success($MESSAGE['GENERIC_INSTALLED']);
} elseif ($action == "upgrade") {
    upgrade_module($module_directory, false);
    $admin->print_success($MESSAGE['GENERIC_UPGRADED']);
}
// Print admin footer
$admin->print_footer();
Пример #3
0
/**
 * function for upgrading a module, template or profile according to latest tag
 * or master
 *
 * @param array     with module options
 * @param string    tag with wersion or 'master'
 * @param string    module, templatee or profile. 
 */
function cos_git_upgrade($val, $tag = 'master', $type = 'module')
{
    if (!isset($val['module_name'])) {
        $val['module_name'] = git::getModulenameFromRepo($val['repo']);
    }
    $repo_path = cos_get_repo_path($val['module_name'], $type);
    if (!cos_git_is_repo($repo_path)) {
        common::echoMessage("{$repo_path} is not a git repo - will not upgrade");
        return;
    }
    $git_command = "cd {$repo_path} && ";
    $git_command .= "git checkout master && ";
    $git_command .= "git pull && git fetch --tags && ";
    $git_command .= "git checkout {$tag}";
    common::execCommand($git_command);
    if ($type == 'module') {
        // It is called with a different name in the upgrade_module
        // function ...
        $val['module'] = $val['module_name'];
        // upgrade to latest set in $_INSTALL['VERSION']
        $val['version'] = null;
        upgrade_module($val);
    }
    // templates have no registry - they are tag based only in version
}
Пример #4
0
/**
 * Upgrade all modules.
 *
 * @return string		List of upgraded/installed modules/blocks
 */
function upgrade_modules()
{
    $out = '';
    require_code('zones2');
    if (file_exists(get_file_base() . '/sources/zones3.php')) {
        require_code('zones3');
    }
    $ret = upgrade_module('adminzone', 'admin_version');
    if ($ret == 1) {
        $out .= '<li>' . do_lang('FU_UPGRADED_MODULE', '<kbd>admin_version</kbd>') . '</li>';
    }
    $zones = find_all_zones();
    if (!in_array('adminzone', $zones)) {
        $zones[] = 'adminzone';
    }
    if (!in_array('cms', $zones)) {
        $zones[] = 'cms';
    }
    if (!in_array('site', $zones)) {
        $zones[] = 'site';
    }
    foreach ($zones as $zone) {
        $modules = find_all_modules($zone);
        foreach ($modules as $module => $type) {
            $ret = upgrade_module($zone, $module);
            if ($ret == 1) {
                $out .= '<li>' . do_lang('FU_UPGRADED_MODULE', '<kbd>' . escape_html($module) . '</kbd>') . '</li>';
            } elseif ($ret == -2) {
                if ($type == 'modules_custom') {
                    continue;
                }
                if (reinstall_module($zone, $module)) {
                    $out .= '<li>' . do_lang('FU_INSTALLED_MODULE', '<kbd>' . escape_html($module) . '</kbd>') . '</li>';
                }
            }
        }
    }
    require_code('zones2');
    if (file_exists(get_file_base() . '/sources/zones3.php')) {
        require_code('zones3');
    }
    $blocks = find_all_blocks();
    foreach ($blocks as $block => $type) {
        $ret = upgrade_block($block);
        if ($ret == 1) {
            $out .= '<li>' . do_lang('FU_UPGRADED_BLOCK', '<kbd>' . escape_html($block) . '</kbd>') . '</li>';
        } elseif ($ret == -2) {
            if ($type == 'sources_custom') {
                continue;
            }
            if (reinstall_block($block)) {
                $out .= '<li>' . do_lang('FU_INSTALLED_BLOCK', '<kbd>' . escape_html($block) . '</kbd>') . '</li>';
            }
        }
    }
    return $out;
}
/**
 * Manually execute the specified module file (install.php, upgrade.php or uninstall.php)
 */
// check if specified module folder exists
$mod_path = WB_PATH . '/modules/' . basename(WB_PATH . '/' . $_POST['file']);
// let the old variablename if module use it
$module_dir = $mod_path;
if (!file_exists($mod_path . '/' . $_POST['action'] . '.php')) {
    $admin->print_header();
    $admin->print_error($TEXT['NOT_FOUND'] . ': <tt>"' . htmlentities(basename($mod_path)) . '/' . $_POST['action'] . '.php"</tt> ', $js_back);
}
// include modules install.php script
require $mod_path . '/' . $_POST['action'] . '.php';
// load module info into database and output status message
load_module($mod_path, false);
$msg = $TEXT['EXECUTE'] . ': <tt>"' . htmlentities(basename($mod_path)) . '/' . $_POST['action'] . '.php"</tt>';
switch ($_POST['action']) {
    case 'install':
        // $admin->print_header();
        $admin->print_success($msg, $js_back);
        break;
    case 'upgrade':
        upgrade_module(basename($mod_path), false);
        // $admin->print_header();
        $admin->print_success($msg, $js_back);
        break;
    case 'uninstall':
        // $admin->print_header();
        $admin->print_success($msg, $js_back);
        break;
}
Пример #6
0
 /**
  * The actualiser to upgrade a module.
  *
  * @return tempcode		The UI
  */
 function upgrade_module()
 {
     $module = post_param('module');
     $zone = post_param('zone');
     require_code('zones2');
     if ($zone != '_block') {
         upgrade_module($zone, $module);
     } else {
         upgrade_block($module);
     }
     $title = get_page_title('UPGRADE_MODULE');
     // Show it worked / Refresh
     $url = build_url(array('page' => '_SELF', 'type' => 'view', 'id' => $zone), '_SELF');
     return redirect_screen($title, $url, do_lang_tempcode('SUCCESS'));
 }
if ($sAction == 'uninstall' && preg_match('/' . $sAddonsFile . '/si', implode('|', $aPreventFromUninstall))) {
    $temp = array('name' => $file);
    $msg = replace_all($MESSAGE['MEDIA_CANNOT_DELETE_DIR'], $temp);
    $admin->print_error($msg);
}
// check if specified module folder exists
$sAddonRelPath = '/modules/' . $sAddonName;
// let the old variablename if module use it
if (!file_exists(WB_PATH . $sAddonRelPath . '/' . $sAction . '.php')) {
    $admin->print_header();
    $admin->print_error($TEXT['NOT_FOUND'] . ': <tt>"' . $sAddonName . '/' . $sAction . '.php"</tt> ', $js_back);
}
// include modules install.php script
if (in_array($sAction, $aValideActions)) {
    require WB_PATH . $sAddonRelPath . '/' . $sAction . '.php';
}
// load module info into database and output status message
load_module(WB_PATH . $sAddonRelPath, false);
$msg = $TEXT['EXECUTE'] . ': <tt>"' . $sAddonName . '/' . $sAction . '.php"</tt>';
switch ($sAction) {
    case 'install':
        $admin->print_success($msg, $js_back);
        break;
    case 'upgrade':
        upgrade_module($sAddonName, false);
        $admin->print_success($msg, $js_back);
        break;
    case 'uninstall':
        $admin->print_success($msg, $js_back);
        break;
}