function exponent_sharedcore_linkExtension($type, $name, $source, $destination)
{
    $typedir = '';
    $manifest = '';
    $auto_manidfest = '';
    switch ($type) {
        case CORE_EXT_MODULE:
            $typedir = 'modules';
            $manifest = 'modules/' . $name . '/manifest.php';
            $auto_manifest = 'modules/' . $name . '/auto.manifest.php';
            break;
        case CORE_EXT_SUBSYSTEM:
            $typedir = 'subsystems';
            $manifest = 'subsystems/' . $name . '.manifest.php';
            $auto_manifest = 'subsystems/' . $name . '.auto.manifest.php';
            break;
        case CORE_EXT_THEME:
            $typedir = 'themes';
            $manifest = 'themes/' . $name . '/manifest.php';
            $auto_manifest = 'themes/' . $name . '/auto.manifest.php';
            break;
    }
    if (substr($source, -1, 1) == "/") {
        $source = substr($source, 0, -1);
    }
    if (substr($destination, -1, 1) == "/") {
        $destination = substr($destination, 0, -1);
    }
    $linksrc = "{$source}/{$typedir}/{$name}";
    $linkdest = "{$destination}/{$typedir}/{$name}";
    if (is_dir($linksrc)) {
        exponent_files_copyDirectoryStructure($linksrc, $linkdest);
    }
    if (!defined('SYS_FILES')) {
        include_once BASE . 'subsystems/files.php';
    }
    if (!defined('SYS_INFO')) {
        include_once BASE . 'subsystems/info.php';
    }
    $files = $manifest == '' ? null : array();
    if ($files !== null) {
        if (is_readable($source . '/' . $auto_manifest)) {
            $files = (include $source . '/' . $auto_manifest);
        } else {
            if (is_readable($source . '/' . $manifest)) {
                $files = (include $source . '/' . $manifest);
            } else {
                $files = null;
            }
        }
    }
    if ($files !== null) {
        exponent_sharedcore_linkFiles($source . '/', $destination . '/', $files);
    }
    return SHAREDCORE_ERR_OK;
}
function exponent_files_copyDirectoryStructure($src, $dest, $exclude_dirs = array())
{
    $__oldumask = umask(0);
    if (!file_exists($dest)) {
        mkdir($dest, fileperms($src));
    }
    $dh = opendir($src);
    while (($file = readdir($dh)) !== false) {
        if (is_dir("{$src}/{$file}") && !in_array($file, $exclude_dirs) && substr($file, 0, 1) != "." && $file != "CVS") {
            if (!file_exists("{$dest}/{$file}")) {
                mkdir("{$dest}/{$file}", fileperms("{$src}/{$file}"));
            }
            if (is_dir("{$dest}/{$file}")) {
                exponent_files_copyDirectoryStructure("{$src}/{$file}", "{$dest}/{$file}");
            }
        }
    }
    umask($__oldumask);
}
# Exponent is free software; you can redistribute
# it and/or modify it under the terms of the GNU
# General Public License as published by the Free
# Software Foundation; either version 2 of the
# License, or (at your option) any later version.
#
# GPL: http://www.gnu.org/licenses/gpl.txt
#
##################################################
if (!defined('EXPONENT')) {
    exit('');
}
$dest_dir = exponent_sessions_get('dest_dir');
$files = exponent_sessions_get('files_data');
if (!defined('SYS_FILES')) {
    require_once BASE . 'subsystems/files.php';
}
if (!file_exists(BASE . 'files')) {
    mkdir(BASE . 'files', 0777);
}
foreach (array_keys($files) as $mod) {
    exponent_files_copyDirectoryStructure($dest_dir . '/files/' . $mod, BASE . 'files/' . $mod);
    foreach (array_keys($files[$mod][1]) as $file) {
        copy($dest_dir . '/files/' . $mod . '/' . $file, BASE . 'files/' . $mod . '/' . $file);
    }
}
exponent_sessions_unset('dest_dir');
exponent_sessions_unset('files_data');
exponent_files_removeDirectory($dest_dir);
$template = new template('importer', '_files_final');
$template->output();