<?php /** * LocalFileImpl.php * * @package MCFileManager.filesystems * @author Moxiecode * @copyright Copyright © 2005, Moxiecode Systems AB, All rights reserved. */ require_once getAbsPath("../classes/FileSystems/BaseFile.php"); require_once getAbsPath("../classes/FileSystems/FileFilter.php"); require_once getAbsPath("../classes/FileSystems/FileTreeHandler.php"); require_once getAbsPath("../classes/FileSystems/FileEventListener.php"); /** * This is the local file system implementation of BaseFile. * * @package MCFileManager.filesystems */ class LocalFileImpl extends BaseFile { // Private fields var $_absPath = ""; var $_fileFactory; var $_config; var $_type; var $_events = true; /** * Creates a new absolute file. * * @param FileFactory $file_factory File factory reference. * @param String $absolute_path Absolute path to local file.
/** * Copy a file, or recursively copy a folder and its contents * @author Aidan Lister <*****@*****.**> * @author Paul Scott * @version 1.0.1 * @param string $source Source path * @param string $dest Destination path * @return bool Returns TRUE on success, FALSE on failure */ function copyTo($source, $dest) { $source = removeTrailingSlash(backslashToSlash($source)); $dest = removeTrailingSlash(backslashToSlash($dest)); if (!file_exists($dest) || !is_dir($dest)) { if (!$this->mkdir($dest)) { $this->_debug('Unable to create folder (' . $dest . ")"); return false; } } // Copy in to your self? if (getAbsPath($source) == getAbsPath($dest)) { $this->_debug('Unable to copy itself. source: ' . getAbsPath($source) . "; dest: " . getAbsPath($dest)); return false; } // Simple copy for a file if (is_file($source)) { $dest = addTrailingSlash($dest) . basename($source); if (file_exists($dest)) { return false; } else { return copy($source, $dest); } } elseif (is_dir($source)) { // Loop through the folder if (file_exists(addTrailingSlash($dest) . basename($source))) { return false; } else { if (!file_exists(addTrailingSlash($dest) . basename($source)) || !is_dir(addTrailingSlash($dest) . basename($source))) { if (!$this->mkdir(addTrailingSlash($dest) . basename($source))) { $this->_debug('Unable to create folder (' . addTrailingSlash($dest) . basename($source) . ")"); return false; } } $handle = opendir($source); while (false !== ($readdir = readdir($handle))) { if ($readdir != '.' && $readdir != '..') { $path = addTrailingSlash($source) . '/' . $readdir; $this->copyTo($path, addTrailingSlash($dest) . basename($source)); } } closedir($handle); return true; } } return false; }
} // Switch error reporting level on debug if ($mcImageManagerConfig['general.debug']) { error_reporting(E_ALL); } else { error_reporting(E_ALL ^ E_NOTICE); } $mcImageManagerErrorHandler = new mcError($mcImageManagerConfig['general.error_log'] != "", addTrailingSlash(realpath(".")) . $mcImageManagerConfig['general.error_log']); set_error_handler("mcErrorHandler"); // Include LocalFileSystem if (isset($mcImageManagerConfig['filesystem']) && $mcImageManagerConfig['filesystem'] == "LocalFileImpl") { require_once getAbsPath("../classes/FileSystems/LocalFileImpl.php"); } // Include authenticator if (isset($mcImageManagerConfig['authenticator']) && $mcImageManagerConfig['authenticator'] == "SessionAuthenticatorImpl") { require_once getAbsPath("../classes/Authenticators/SessionAuthenticatorImpl.php"); } /** * Redirects to the login page if the user isn't logged in. * This will also setup the path and rootpath config variables based on session and input parameters. * * @param Array $config Name/Value array of config items. */ function verifyAccess(&$config) { // Store away rootpaths $rootPaths =& getRootPaths($config["filesystem.rootpath"], false); $hasVariables = strpos($config["filesystem.rootpath"], '${') !== false; $auth = null; // Setup custom data $customData = getRequestParam("custom_data");