kernel/private/classes/webdav/ezwebdavcontentbackend.php
protected function getVirtualFolderCollection( $currentSite, $collection, $fullPath, $depth, $properties )
    {
        if ( !$collection )
        {
            // We are inside a site so we display the virtual folder for the site
            $entries = $this->fetchVirtualSiteContent( $fullPath, $currentSite, $depth, $properties );
            return $entries;
        }

        $collection = $this->splitFirstPathElement( $collection, $virtualFolder );

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

        // added by @ds 2008-12-07 to fix problems with IE6 SP2
        $ini = eZINI::instance();
        $prefixAdded = false;
        $prefix = $ini->hasVariable( 'SiteAccessSettings', 'PathPrefix' ) &&
                      $ini->variable( 'SiteAccessSettings', 'PathPrefix' ) != '' ? eZURLAliasML::cleanURL( $ini->variable( 'SiteAccessSettings', 'PathPrefix' ) ) : false;

        if ( $prefix )
        {
            $escapedPrefix = preg_quote( $prefix, '#' );
            // Only prepend the path prefix if it's not already the first element of the url.
            if ( !preg_match( "#^$escapedPrefix(/.*)?$#i", $collection )  )
            {
                $exclude = $ini->hasVariable( 'SiteAccessSettings', 'PathPrefixExclude' )
                           ? $ini->variable( 'SiteAccessSettings', 'PathPrefixExclude' )
                           : false;
                $breakInternalURI = false;
                foreach ( $exclude as $item )
                {
                    $escapedItem = preg_quote( $item, '#' );
                    if ( preg_match( "#^$escapedItem(/.*)?$#i", $collection )  )
                    {
                        $breakInternalURI = true;
                        break;
                    }
                }

                if ( !$breakInternalURI )
                {
                    $collection = $prefix . '/' . $collection;
                    $prefixAdded = true;
                }
            }
        }

        return $this->getContentTreeCollection( $currentSite, $virtualFolder, $collection, $fullPath, $depth, $properties );
    }
protected function getVirtualFolderCollection( $currentSite, $collection, $fullPath, $depth, $properties )
    {
        if ( !$collection )
        {
            // We are inside a site so we display the virtual folder for the site
            $entries = $this->fetchVirtualSiteContent( $fullPath, $currentSite, $depth, $properties );
            return $entries;
        }

        $collection = $this->splitFirstPathElement( $collection, $virtualFolder );

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

        // added by @ds 2008-12-07 to fix problems with IE6 SP2
        $ini = eZINI::instance();
        $prefixAdded = false;
        $prefix = $ini->hasVariable( 'SiteAccessSettings', 'PathPrefix' ) &&
                      $ini->variable( 'SiteAccessSettings', 'PathPrefix' ) != '' ? eZURLAliasML::cleanURL( $ini->variable( 'SiteAccessSettings', 'PathPrefix' ) ) : false;

        if ( $prefix )
        {
            $escapedPrefix = preg_quote( $prefix, '#' );
            // Only prepend the path prefix if it's not already the first element of the url.
            if ( !preg_match( "#^$escapedPrefix(/.*)?$#i", $collection )  )
            {
                $exclude = $ini->hasVariable( 'SiteAccessSettings', 'PathPrefixExclude' )
                           ? $ini->variable( 'SiteAccessSettings', 'PathPrefixExclude' )
                           : false;
                $breakInternalURI = false;
                foreach ( $exclude as $item )
                {
                    $escapedItem = preg_quote( $item, '#' );
                    if ( preg_match( "#^$escapedItem(/.*)?$#i", $collection )  )
                    {
                        $breakInternalURI = true;
                        break;
                    }
                }

                if ( !$breakInternalURI )
                {
                    $collection = $prefix . '/' . $collection;
                    $prefixAdded = true;
                }
            }
        }

        return $this->getContentTreeCollection( $currentSite, $virtualFolder, $collection, $fullPath, $depth, $properties );
    }
protected function getVirtualFolderCollection ( $ currentSite , $ collection , $ fullPath , $ depth , $ properties ) { if ( ! $ collection ) { // We are inside a site so we display the virtual folder for the site $ entries = $ this -> fetchVirtualSiteContent ( $ fullPath , $ currentSite , $ depth , $ properties ) ; return $ entries ; } $ collection = $ this -> splitFirstPathElement ( $ collection , $ virtualFolder ) ; if ( ! in_array ( $ virtualFolder , array ( self :: virtualContentFolderName ( ) , self :: virtualMediaFolderName ( ) ) ) ) { return false ; // self::FAILED_NOT_FOUND; } // added by @ds 2008-12-07 to fix problems with IE6 SP2 $ ini = eZINI :: instance ( ) ; $ prefixAdded = false ; $ prefix = $ ini -> hasVariable ( 'SiteAccessSettings' , 'PathPrefix' ) && $ ini -> variable ( 'SiteAccessSettings' , 'PathPrefix' ) != '' ? eZURLAliasML :: cleanURL ( $ ini -> variable ( 'SiteAccessSettings' , 'PathPrefix' ) ) : false ; if ( $ prefix ) { $ escapedPrefix = preg_quote ( $ prefix , '#' ) ; // Only prepend the path prefix if it's not already the first element of the url. if ( ! preg_match ( "#^$escapedPrefix(/.*)?$#i" , $ collection ) ) { $ exclude = $ ini -> hasVariable ( 'SiteAccessSettings' , 'PathPrefixExclude' ) ? $ ini -> variable ( 'SiteAccessSettings' , 'PathPrefixExclude' ) : false ; $ breakInternalURI = false ; foreach ( $ exclude as $ item ) { $ escapedItem = preg_quote ( $ item , '#' ) ; if ( preg_match ( "#^$escapedItem(/.*)?$#i" , $ collection ) ) { $ breakInternalURI = true ; break ; } } if ( ! $ breakInternalURI ) { $ collection = $ prefix . '/' . $ collection ; $ prefixAdded = true ; } } } return $ this -> getContentTreeCollection ( $ currentSite , $ virtualFolder , $ collection , $ fullPath , $ depth , $ properties ) ; }
Handles collections on the virtual folder level, if no virtual folder
elements are accessed it lists the virtual folders.

An entry in the the returned array is of this form:
<code>
array( 'name' => node name (eg. 'Group picture'),
'size' => storage size of the_node in bytes (eg. 57123),
'mimetype' => mime type of the node (eg. 'image/jpeg'),
'ctime' => creation time as timestamp,
'mtime' => latest modification time as timestamp,
'href' => the path to the node (eg. '/plain_site_user/Content/Folder1/file1.jpg')
</code>

@param string $site Eg. 'plain_site_user
@param string $collection Eg. 'Folder1'
@param string $fullPath Eg. '/plain_site_user/Content/Folder1'
@param string $depth One of -1 (infinite), 0, 1
@param array(string) $properties Currently not used
@return array(array(string=>mixed))
Handles collections on the virtual folder level if no virtual folder elements are accessed it lists the virtual folders .