[code=php]
<?php
/**
* Function viewDir()
* Create the array which will contain the list of all the directories/files in the specified directory.
*
* @author Koen <koen@sitemasters.be>
* @version 1.1
*
* @param string $sDir Name of the directory, eg: images
* @param array $aExclude array containing the elements to be excluded eg: array('.', '..')
*
* Return values:
* false on failure
* array containing the list of the directories/files.
*
* Function makeTree()
* Generates the treeview with the array created by "viewDir()" 
*
* @author Koen <koen@sitemasters.be>
* @version 1.0
*
* @param array $aDir output of "viewDir()" function
* @param int $iCurrent current margin-left [optional, default: 0]
*
* Return values:
* false on failure
* ready-to-use treeview!
*
*/
function viewDir($sDir, & $aExclude) 
{
	if(!is_dir($sDir)) 
	{
		return false;
	}
	$aList = scandir($sDir);
	$aReturn = array();
	foreach($aList as $iKey => $sValue) 
	{
		if(!in_array($sValue, $aExclude)) 
		{				
			if(is_dir($sDir.'/'.$sValue)) 
			{
				$aReturn[$sValue] = viewDir($sDir.'/'.$sValue, $aExclude);			
			} else 
			{
				$aReturn[] = $sValue;
			}
		}
	}
	return $aReturn;
}
function makeTree($aDir, $iCurrent = 0) 
{
	$iExpandBy = 20;
	$sReturn = '';
	if(!is_array($aDir)) 
	{
		return false;
	}
	foreach($aDir as $iKey => $sValue) 
	{	
		$sCurrentPX = $iCurrent .'px';	
		if(is_array($sValue)) 
		{
			$iNewCurrent = $iCurrent + $iExpandBy;			
			$sReturn  .= '<span style="margin-left: '.$sCurrentPX.';">'.$iKey.'</span><br />'."\n";
			$sReturn .= makeTree($sValue, $iNewCurrent);			
		} else 
		{			
			$sReturn  .= '<span style="margin-left: '.$sCurrentPX.';">'.$sValue.'</span><br />'."\n";
		}
	}
	return $sReturn;
}

// example of usage:
$aExclude = array('.', '..');
$aDir = viewDir('dir', $aExclude);
echo makeTree($aDir);
?>

