protected function fetchSiteListContent( $target, $depth, $properties )
    {
        // At the end: we'll return an array of entry-arrays.
        $entries = array();

        // An entry consists of several attributes (name, size, etc).
        $contentEntry = array();
        $entries = array();

        // add a slash at the end of the path, if it is missing
        $scriptURL = $target;
        if ( $scriptURL{strlen( $scriptURL ) - 1} !== '/' )
        {
            $scriptURL .= "/";
        }

        $thisNodeInfo["href"] = $scriptURL;

        // Set up attributes for the virtual site-list folder:
        $contentEntry["name"]     = '/';
        $contentEntry["href"]     = $scriptURL;
        $contentEntry["size"]     = 0;
        $contentEntry["mimetype"] = self::DIRECTORY_MIMETYPE;
        $contentEntry["ctime"]    = filectime( 'var' );
        $contentEntry["mtime"]    = filemtime( 'var' );

        $entries[] = $contentEntry;

        if ( $depth > 0 )
        {
            // For all available sites:
            foreach ( $this->availableSites as $site )
            {
                // Set up attributes for the virtual site-list folder:
                $contentEntry["name"]     = $scriptURL . $site . '/'; // @as added '/'
                $contentEntry["size"]     = 0;
                $contentEntry["mimetype"] = self::DIRECTORY_MIMETYPE;
                $contentEntry["ctime"]    = filectime( 'settings/siteaccess/' . $site );
                $contentEntry["mtime"]    = filemtime( 'settings/siteaccess/' . $site );

                if ( $target === '/' )
                {
                    $contentEntry["href"] = $contentEntry["name"];
                }
                else
                {
                    $contentEntry["href"] = $scriptURL . $contentEntry["name"];
                }

                $entries[] = $contentEntry;
            }
        }

        return $entries;
    }