getPathname(), $b->getPathname()); } // Class to put forward the values for sorting class SortingIterator implements IteratorAggregate { private $iterator = null; public function __construct(Traversable $iterator, $callback) { $array = iterator_to_array($iterator); usort($array, $callback); $this->iterator = new ArrayIterator($array); } public function getIterator() { return $this->iterator; } } // Get a full list of dirs & files and begin sorting using above class & function $repoPath = explode("@",strClean($_POST['repo'])); $repo = $repoPath[0]; $path = $repoPath[1]; $objectList = new SortingIterator(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::SELF_FIRST), 'alphasort'); // Finally, we have our ordered list, so display $i=0; $dirListArray = array(); $dirSHAArray = array(); $dirTypeArray = array(); $finfo = finfo_open(FILEINFO_MIME_TYPE); foreach ($objectList as $objectRef) { $fileFolderName = rtrim(substr($objectRef->getPathname(), strlen($path)),".."); if ($objectRef->getFilename()!="." && $fileFolderName[strlen($fileFolderName)-1]!="/") { $contents = file_get_contents($path.$fileFolderName); if (strpos(finfo_file($finfo, $path.$fileFolderName),"text")===0) { $contents = str_replace("\r","",$contents); }; $store = "blob ".strlen($contents)."\000".$contents; $i++; array_push($dirListArray,ltrim($fileFolderName,"/")); array_push($dirSHAArray,sha1($store)); $type = is_dir($path.$fileFolderName) ? "dir" : "file"; array_push($dirTypeArray,$type); } } finfo_close($finfo); ?>
COMMIT CHANGES: