                                                                                                    
<?php
//-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->
//-- Description:
//-- This function lists the files and directories in a directory
//-- and provided hyperlinks to management functions such as 
//-- edit, copy, view. 
//-- This function may be dependent on a file called RETRO-GLOBALS.php
//-- which contain the server web document root path among other things
//--    
//-- Notes:
//--   This function was derived from the function fnRetrovoxDirectoryListing
//--   and was supposed to be a generalisation of that function
//--
//--<--<--<--<--<--<--<--<--<--<--<--<--<--<--<--<--<--<--<--<



  function fnDirectoryListing
    ($sCurrentDirectory, 
     $bDisplayFullPath = false,
     $sDirectoryBrowseUrl = 'NULL',
     $sEditUrl = 'NULL',
     $sCopyUrl = 'NULL',
     $sViewUrl = 'NULL',
     $sWebPathPrefix = 'NULL')
  {
    
    //-- code below uses a global variable 
    if ($sDirectoryBrowseUrl == 'NULL')
    {
      $sDirectoryBrowseUrl = "$NOTEPADWEBFOLDER/retrovox-notepad.php?file";
    } //--

    if ($sEditUrl == 'NULL')
    {
      $sEditUrl = "$NOTEPADWEBFOLDER/retrovox-notepad.php?file";
    } //--

    if ($sCopyUrl == 'NULL')
    {
      $sCopyUrl = "$MANAGEMENTWEBFOLDER/move-file-form.php?file";
    } //--

    if ($sViewUrl == 'NULL')
    {
      $sViewUrl = "$NOTEPADWEBFOLDER/retrovox-notepad.php?file";
    } //--

    if ($sWebPathPrefix == 'NULL')
    {
      $sWebPathPrefix = "$WEBDOCUMENTROOT";
    } //--

    $debug = "";
    if ($debug == "true")
    {
      echo "
      <pre>
      FUNCTION: fnRetrovoxDirectoryListing()
      sCurrentDirectory=$sCurrentDirectory
      </pre>";
      //exit;
    } //--if

      $sReturn ='';
      $sReturn = $sReturn.
	  "<ol type = '1'>";

      $aaFiles = '';
      //-- Get a list of the directories within the current directory, so that
      //-- they can be sorted and displayed before normal files.
      //--
      $dh  = opendir($sCurrentDirectory);
      while (false !== ($sMemberFileName = readdir($dh)))
      {
        $sCurrentFilePath = $sCurrentDirectory.$sMemberFileName;
        if (is_dir($sCurrentFilePath))
        {
           if ($sMemberFileName != '.')
           {
              $aaDirectories[] = $sMemberFileName;
           }
        }
        else
        {
           $aaFiles[] = $sMemberFileName;
        }

      } //--while
       
      //-- sort gives errors if called on an empty array
      //--
      if (count($aaFiles) > 1)
      {
        sort($aaFiles);
        reset($aaFiles);
      }

      if (count($aaDirectories) > 1)
      {
        sort($aaDirectories);
        reset($aaDirectories);
      }
      

      foreach ($aaDirectories as $sMemberFileName)
      {

        if ($sMemberFileName == '..')
        {
          $sParentDirectory = preg_replace('#[^/]+/$#', '', $sCurrentDirectory);

          $sReturn = $sReturn.
            "<li><font color = 'red'>[Parent Directory]</font>
            <a href ='$sDirectoryBrowseUrl=".
            htmlspecialchars(urlencode($sParentDirectory))
	    ."'> (view files)</a></li> \n";
        }
        else
        {
           if ($bDisplayFullPath)
           {
             $sDisplayFileName = 
               htmlspecialchars($sCurrentDirectory.$sMemberFileName);
           }
           else
           {
             $sDisplayFileName = 
               htmlspecialchars($sMemberFileName);
           }

           $sReturn = $sReturn.
              "<li><font color = 'red'>$sDisplayFileName/</font>
              <a href ='$sDirectoryBrowseUrl=".
              htmlspecialchars(urlencode($sCurrentDirectory.$sMemberFileName))
	      ."'> (view files)</a></li> \n";
        } //-- if parent dir reference
      } //-- foreach member file


      foreach ($aaFiles as $sMemberFileName)
      {
         if ($bDisplayFullPath)
         {
           $sDisplayFileName = 
             htmlspecialchars($sCurrentDirectory.$sMemberFileName);
         }
         else
         {
           $sDisplayFileName = 
             htmlspecialchars($sMemberFileName);
         }

        $sMemberFilePath = $sCurrentDirectory.$sMemberFileName;
        $sMemberFilePathUrlEncoded = 
           htmlspecialchars(urlencode($sMemberFilePath));
        $sMemberFileWebPathEncoded =
           htmlspecialchars(
             str_replace($sWebPathPrefix, '', $sMemberFilePath));

        $sReturn = $sReturn."
           <li>$sDisplayFileName 
            (<a href ='$sEditUrl=$sMemberFilePathUrlEncoded'>edit</a> | 
             <a href = '$sMemberFileWebPathEncoded'>view</a> | 
             <a href = '$sCopyUrl=$sMemberFilePathUrlEncoded'>copy</a> |
             <a href = '$sCopyUrl=$sMemberFilePathUrlEncoded'>rename</a>)
           </li> \n";
      } //-- foreach member file

     echo "  
        </ol>";

     return $sReturn;

   } //-- function: fnDirectoryListing


//--<--<--<--<--<--<--<--<
?>

                                                                                    