36 lines
		
	
	
		
			909 B
		
	
	
	
		
			PHP
		
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			909 B
		
	
	
	
		
			PHP
		
	
	
| <?php
 | |
| declare(strict_types=1);
 | |
| 
 | |
| namespace Grav\Theme;
 | |
| 
 | |
| use Grav\Common\Twig\Extension\GravExtension;
 | |
| 
 | |
| class DirFilesExtension extends GravExtension
 | |
| {
 | |
|     public function getName(): string
 | |
|     {
 | |
|         return 'DirFilesExtension';
 | |
|     }
 | |
| 
 | |
|     public function getFunctions(): array
 | |
|     {
 | |
|         return [new \Twig_SimpleFunction('dirFiles', [$this, 'getDirFiles'])];
 | |
|     }
 | |
| 
 | |
|     public function getDirFiles(string $dir, string $exts): array
 | |
|     {
 | |
|         $res = array();
 | |
|         $dir = '..'.DIRECTORY_SEPARATOR.(str_starts_with($dir, '/') ? substr($dir, 1) : $dir);
 | |
|         if (file_exists($dir) && $dirHandle = opendir($dir))
 | |
|         {
 | |
|             while ($entry = readdir($dirHandle)) {
 | |
|                 if (preg_match('/^[a-zA-Z0-9-_][a-zA-Z0-9-_.]*\.('.$exts.')$/', $entry)) {
 | |
|                     $res[] = $dir.DIRECTORY_SEPARATOR.$entry;
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         return $res;
 | |
|     }
 | |
| }
 |