kernel/private/classes/webdav/ezwebdavcontentbackend.php
protected function copyVirtualFolder( $sourceSite, $destinationSite,
                                          $source, $destination )
    {
        $source = $this->splitFirstPathElement( $source, $sourceVFolder );
        $destination = $this->splitFirstPathElement( $destination, $destinationVFolder );

        if ( !in_array( $sourceVFolder, array( self::virtualContentFolderName(), self::virtualMediaFolderName() ) ) )
        {
            return false; // @as self::FAILED_NOT_FOUND;
        }

        if ( !in_array( $destinationVFolder, array( self::virtualContentFolderName(), self::virtualMediaFolderName() ) ) )
        {
            return false; // @as self::FAILED_NOT_FOUND;
        }

        if ( !$source or
             !$destination )
        {
            // We have reached the end of the path for source or destination
            // We do not allow 'copy' operations for the virtual folder (from or to)
            return false; // @as self::FAILED_FORBIDDEN;
        }

        if ( ( $sourceVFolder === self::virtualContentFolderName() or
               $sourceVFolder === self::virtualMediaFolderName() ) and
             ( $destinationVFolder === self::virtualContentFolderName() or
               $destinationVFolder === self::virtualMediaFolderName() ) )
        {
            return $this->copyContent( $sourceSite, $destinationSite,
                                       $sourceVFolder, $destinationVFolder,
                                       $source, $destination );
        }

        return false; // @as self::FAILED_FORBIDDEN;
    }
protected function copyVirtualFolder( $sourceSite, $destinationSite,
                                          $source, $destination )
    {
        $source = $this->splitFirstPathElement( $source, $sourceVFolder );
        $destination = $this->splitFirstPathElement( $destination, $destinationVFolder );

        if ( !in_array( $sourceVFolder, array( self::virtualContentFolderName(), self::virtualMediaFolderName() ) ) )
        {
            return false; // @as self::FAILED_NOT_FOUND;
        }

        if ( !in_array( $destinationVFolder, array( self::virtualContentFolderName(), self::virtualMediaFolderName() ) ) )
        {
            return false; // @as self::FAILED_NOT_FOUND;
        }

        if ( !$source or
             !$destination )
        {
            // We have reached the end of the path for source or destination
            // We do not allow 'copy' operations for the virtual folder (from or to)
            return false; // @as self::FAILED_FORBIDDEN;
        }

        if ( ( $sourceVFolder === self::virtualContentFolderName() or
               $sourceVFolder === self::virtualMediaFolderName() ) and
             ( $destinationVFolder === self::virtualContentFolderName() or
               $destinationVFolder === self::virtualMediaFolderName() ) )
        {
            return $this->copyContent( $sourceSite, $destinationSite,
                                       $sourceVFolder, $destinationVFolder,
                                       $source, $destination );
        }

        return false; // @as self::FAILED_FORBIDDEN;
    }
protected function copyVirtualFolder ( $ sourceSite , $ destinationSite , $ source , $ destination ) { $ source = $ this -> splitFirstPathElement ( $ source , $ sourceVFolder ) ; $ destination = $ this -> splitFirstPathElement ( $ destination , $ destinationVFolder ) ; if ( ! in_array ( $ sourceVFolder , array ( self :: virtualContentFolderName ( ) , self :: virtualMediaFolderName ( ) ) ) ) { return false ; // @as self::FAILED_NOT_FOUND; } if ( ! in_array ( $ destinationVFolder , array ( self :: virtualContentFolderName ( ) , self :: virtualMediaFolderName ( ) ) ) ) { return false ; // @as self::FAILED_NOT_FOUND; } if ( ! $ source or ! $ destination ) { // We have reached the end of the path for source or destination // We do not allow 'copy' operations for the virtual folder (from or to) return false ; // @as self::FAILED_FORBIDDEN; } if ( ( $ sourceVFolder === self :: virtualContentFolderName ( ) or $ sourceVFolder === self :: virtualMediaFolderName ( ) ) and ( $ destinationVFolder === self :: virtualContentFolderName ( ) or $ destinationVFolder === self :: virtualMediaFolderName ( ) ) ) { return $ this -> copyContent ( $ sourceSite , $ destinationSite , $ sourceVFolder , $ destinationVFolder , $ source , $ destination ) ; } return false ; // @as self::FAILED_FORBIDDEN; }
Handles copying on the virtual folder level.

It will check if the target is below a content folder in which it
calls copyContent().

@param string $sourceSite Eg. 'plain_site_user'
@param string $destinationSite Eg. 'plain_site_user'
@param string $source Eg. 'Content/Folder1/file1.txt'
@param string $destination Eg. 'Content/Folder2/file1.txt'
@return bool
Handles copying on the virtual folder level .