1: <?php
2: /*
3: You may not change or alter any portion of this comment or credits
4: of supporting developers from this source code or any supporting source code
5: which is considered copyrighted (c) material of the original comment or credit authors.
6:
7: This program is distributed in the hope that it will be useful,
8: but WITHOUT ANY WARRANTY; without even the implied warranty of
9: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10: */
11:
12: namespace Xoops\Core\Lists;
13:
14: /**
15: * Directory - provide list of directory names
16: *
17: * @category Xoops\Core\Lists\Directory
18: * @package Xoops\Core
19: * @author Richard Griffith <richard@geekwright.com>
20: * @copyright 2015 XOOPS Project (http://xoops.org)/
21: * @license GNU GPL 2 or later (http://www.gnu.org/licenses/gpl-2.0.html)
22: * @link http://xoops.org
23: */
24: class Directory extends ListAbstract
25: {
26: /**
27: * gets list of directories inside a directory path
28: *
29: * @param string $path filesystem path
30: * @param string[] $ignored directory names to ignore. Hidden (starting with a '.') directories
31: * are always ignored.
32: *
33: * @return array
34: */
35: public static function getList($path = '', $ignored = [])
36: {
37: $ignored = (array) $ignored;
38: $list = array();
39: $path = rtrim($path, '/') . '/';
40: if (is_dir($path) && $handle = opendir($path)) {
41: while ($file = readdir($handle)) {
42: if (substr($file, 0, 1) === '.' || in_array(strtolower($file), $ignored)) {
43: continue;
44: }
45: if (is_dir($path . $file)) {
46: $list[$file] = $file;
47: }
48: }
49: closedir($handle);
50: asort($list);
51: reset($list);
52: }
53:
54: return $list;
55: }
56: }
57: