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();