                                                            
<?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 = '', $bLeafMode = true)
{
  $aaTemp = '';
  $sResult = '';
  
  $sRootDirectory = trim($sRootDirectory);

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

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

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

  $sResult = 
    $sResult.fnRecursivePathToHtmlLink(
     $sRootDirectory, $sTargetUrl, $bLeafMode);
  $sResult = $sResult."
     </ul>";

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

function fnRecursivePathToHtmlLink(
   $sDirectoryPath, $sTargetUrl = '', $bLeafMode = true)
{
    //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);
        $sFileNameEncoded = htmlspecialchars($sFileName);

        if (is_dir($sFilePath))
        {
          if (bLeafMode == false)
          {
            $sReturn = $sReturn."
              <li><a href = '$sTargetUrl$sFilePathEncoded'>
              $sFilePathEncoded</a>";
          }
          else
          {
            $sReturn = $sReturn."
              <li><a href = '$sTargetUrl$sFilePathEncoded'>
              $sFileNameEncoded</a>";
          } //-- 

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

} //-- function fnRecursivePathToHtmlLink


?>
                                                                    