Habari\Plugins::list_all PHP Метод

list_all() публичный статический Метод

function list_all Gets a list of all plugin filenames that are available
public static list_all ( ) : array
Результат array An array of filenames
    public static function list_all()
    {
        $plugins = array();
        $plugindirs = array(HABARI_PATH . '/system/plugins/', HABARI_PATH . '/3rdparty/plugins/', HABARI_PATH . '/user/plugins/');
        if (Site::CONFIG_LOCAL != Site::$config_type) {
            // include site-specific plugins
            $plugindirs[] = Site::get_dir('config') . '/plugins/';
        }
        $dirs = array();
        foreach ($plugindirs as $plugindir) {
            if (file_exists($plugindir)) {
                $dirs = array_merge($dirs, Utils::glob($plugindir . '*', GLOB_ONLYDIR | GLOB_MARK));
            }
        }
        foreach ($dirs as $dir) {
            $dirfiles = Utils::glob($dir . '*.plugin.php');
            if (!empty($dirfiles)) {
                $dirfiles = array_combine(array_map('basename', $dirfiles), array_map(function ($s) {
                    return str_replace('\\', '/', $s);
                }, $dirfiles));
                $plugins = array_merge($plugins, $dirfiles);
            }
            $dirfiles = Utils::glob($dir . '*.phar');
            foreach ($dirfiles as $filename) {
                if (preg_match('/\\.phar$/i', $filename)) {
                    $d = new \DirectoryIterator('phar://' . $filename);
                    foreach ($d as $fileinfo) {
                        if ($fileinfo->isFile() && preg_match('/\\.plugin.php$/i', $fileinfo->getFilename())) {
                            $plugins[$fileinfo->getFilename()] = str_replace('\\', '/', $fileinfo->getPathname());
                        }
                    }
                }
            }
        }
        ksort($plugins);
        return $plugins;
    }