Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- $minute = 5;
- ini_set('memory_limit', '-1');
- ini_set('max_execution_time', (60 * $minute)); // 60 (seconds) = 1 Minutes
- /**
- * Recursive listing files
- *
- * @param string $directory
- * @param array $entries_array optional
- * @return array of files
- */
- function recursiveScan($directory, &$entries_array = array())
- {
- if (is_dir($directory) && is_readable($directory) && !is_link($directory)) { // link can cause endless loop
- $handle = @opendir($directory);
- if ($handle) {
- while (($entry = readdir($handle)) !== false) {
- if ($entry == '.' || $entry == '..') {
- continue;
- }
- $entry = $directory . DIRECTORY_SEPARATOR . $entry;
- if (is_dir($entry)) {
- $entries_array = recursiveScan($entry, $entries_array);
- } elseif (is_writable($entry)) {
- $entries_array['file_writable'][] = $entry;
- } else {
- $entries_array['file_not_writable'][] = $entry;
- }
- }
- closedir($handle);
- }
- }
- return $entries_array;
- }
- /**
- *
- * Sort array of list file by lastest modified time
- *
- * @param array $files Array of files
- *
- * @return array
- *
- */
- function sortByLastModified($files)
- {
- @array_multisort(array_map('filemtime', $files), SORT_DESC, $files);
- return $files;
- }
- /**
- *
- * Recurisively list a file by descending modified time
- *
- * @param string $path
- *
- * @return array
- *
- */
- function getSortedByTime($path)
- {
- $result = recursiveScan($path);
- $fileWritable = $result['file_writable'];
- $fileNotWritable = $result['file_not_writable'];
- $fileWritable = sortByLastModified($fileWritable);
- return [
- 'file_writable' => $fileWritable,
- 'file_not_writable' => $fileNotWritable
- ];
- }
- /**
- * Recurisively list a file by array of extension
- *
- * @param string $path
- * @param array $ext
- * @return array of files
- */
- function getSortedByExtension($path, $ext)
- {
- $result = getSortedByTime($path);
- $fileWritable = $result['file_writable'];
- $fileNotWritable = $result['file_not_writable'];
- foreach($fileWritable as $entry) {
- $pathinfo = pathinfo($entry, PATHINFO_EXTENSION);
- $pathinfo = strtolower($pathinfo);
- if(in_array($pathinfo, $ext)) {
- $sortedWritableFile[] = $entry;
- }
- }
- foreach($fileNotWritable as $entry) {
- $pathinfo = pathinfo($entry, PATHINFO_EXTENSION);
- $pathinfo = strtolower($pathinfo);
- if(in_array($pathinfo, $ext)) {
- $sortedNotWritableFile[] = $entry;
- }
- }
- return [
- 'file_writable' => $sortedWritableFile,
- 'file_not_writable' => $sortedNotWritableFile
- ];
- }
- // test
- $result = getSortedByExtension(getcwd(), ['php','phtml']);
- $fileWritable = $result['file_writable'];
- $fileNotWritable = $result['file_not_writable'];
- $fileWritable = sortByLastModified($fileWritable);
- foreach ($fileWritable as $file) {
- echo $file, '<br/>';
- }
- echo 'take a look', '<br/>';
- foreach ($fileNotWritable as $file) {
- echo $file, '<br/>';
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement