Back to Folder class

Method move

public static mixed
move
(mixed $src, mixed $dest, mixed $path = '', mixed $useStreams = false)
Moves a folder.
Parameters
  • string $src The path to the source folder.
  • string $dest The path to the destination folder.
  • string $path An optional base path to prefix to the file names.
  • bool $useStreams Optionally use streams.
Returns
  • mixed Error message on false or boolean true on success.
Since
  • 1.7.0
Class: Folder
Project: Joomla

Method move - Source code

/**
 * Moves a folder.
 *
 * @param   string   $src         The path to the source folder.
 * @param   string   $dest        The path to the destination folder.
 * @param   string   $path        An optional base path to prefix to the file names.
 * @param   boolean  $useStreams  Optionally use streams.
 *
 * @return  mixed  Error message on false or boolean true on success.
 *
 * @since   1.7.0
 */
public static function move($src, $dest, $path = '', $useStreams = false)
{
    $FTPOptions = ClientHelper::getCredentials('ftp');
    if ($path) {
        $src = Path::clean($path . '/' . $src);
        $dest = Path::clean($path . '/' . $dest);
    }
    if (!self::exists($src)) {
        return Text::_('JLIB_FILESYSTEM_ERROR_FIND_SOURCE_FOLDER');
    }
    if (self::exists($dest)) {
        return Text::_('JLIB_FILESYSTEM_ERROR_FOLDER_EXISTS');
    }
    if ($useStreams) {
        $stream = Factory::getStream();
        if (!$stream->move($src, $dest)) {
            return Text::sprintf('JLIB_FILESYSTEM_ERROR_FOLDER_RENAME', $stream->getError());
        }
        $ret = true;
    } else {
        if ($FTPOptions['enabled'] == 1) {
            // Connect the FTP client
            $ftp = FtpClient::getInstance($FTPOptions['host'], $FTPOptions['port'], array(), $FTPOptions['user'], $FTPOptions['pass']);
            // Translate path for the FTP account
            $src = Path::clean(str_replace(JPATH_ROOT, $FTPOptions['root'], $src), '/');
            $dest = Path::clean(str_replace(JPATH_ROOT, $FTPOptions['root'], $dest), '/');
            // Use FTP rename to simulate move
            if (!$ftp->rename($src, $dest)) {
                return Text::_('JLIB_FILESYSTEM_ERROR_RENAME_FILE');
            }
            $ret = true;
        } else {
            if (!@rename($src, $dest)) {
                return Text::_('JLIB_FILESYSTEM_ERROR_RENAME_FILE');
            }
            $ret = true;
        }
    }
    return $ret;
}