                                                        
<?php

//-- Description: 
//--   The idea of this function is to create a list of
//--   HTML hyperlinks each of whose items 
//--   is a link to a directory on a web-server. Only those directories
//--   which are accessible from outside requests to the web-server should
//--   be displayed.
//--   
//--   
//-- Notes:
//--   
//-- See Also:
//--   fnDirectoryTreeHtmlSelect
//--

function fnDirectoryTreeHtmlLinkList
  ($sRootDirectory, $sTargetUrl = '')
{
  $aaTemp = '';
  $sResult = '';
  
  $sRootDirectory = trim($sRootDirectory);

  if (substr($sRootDirectory, -1) == '/')
  {
    $sRootDirectory = preg_replace('#/$#', '', $sRootDirectory);
  }

  $sRootDirectoryEncoded =
    htmlspecialchars($sRootDirectory);
  $sResult = "
    <ol>";

  $sResult = $sResult."
    <li><a href = '$sTargetUrl$sRootDirectoryEncoded'>
    $sRootDirectoryEncoded</a>";

  $sResult = $sResult.fnRecursivePathToHtmlLink($sRootDirectory);
  $sResult = $sResult."
     </ol>";

  return $sResult;
} //-- function: fnDirectoryTreeHtmlLinkList

function fnRecursivePathToHtmlLink($sDirectoryPath)
{
    //echo "trying to open $sDirectoryPath<br>";

    if ($dir = opendir($sDirectoryPath))
    {
      //$sDirectoryPathEncoded =
      //   htmlspecialchars($sDirectoryPath);

      while (false !== ($sFileName = readdir($dir)))
      {
        if ($sFileName == ".") continue;
        if ($sFileName == "..") continue;

        $sFilePath = $sDirectoryPath."/".$sFileName;
        $sFilePathEncoded = htmlspecialchars($sFilePath);

        if (is_dir($sFilePath))
        {
          $sReturn = $sReturn."
            <li><a href = '$sTargetUrl$sFilePathEncoded'>
            $sFilePathEncoded</a>";

          $sReturn = 
            $sReturn.fnRecursivePathToHtmlLink($sFilePath);
        } //-- if 
      } //-- while more files in directory
      closedir($dir);
    }
    return $sReturn;

} //-- function fnRecursivePathToHtmlLink


?>
                                                                