public function getUnInstalled() { //获取已经安装的模块 $installed = (array) $this->getInstalled(); //获取目录 $folders = folder::folders(ZOTOP_PATH_MODULES, false); $modules = array(); foreach ($folders as $folder) { $modulePath = ZOTOP_PATH_MODULES . DS . $folder; $moduleUrl = '$modules/' . $folder; $moduleFile = $modulePath . DS . 'module.php'; $m = @(include $moduleFile); if (is_array($m) && isset($m['id']) && !in_array($m['id'], array_keys($installed))) { $m['path'] = '$modules/' . $folder; $m['url'] = '$modules/' . $folder; if (!isset($m['icon'])) { if (file::exists($modulePath . '/icon.png')) { $m['icon'] = $moduleUrl . '/icon.png'; } } $modules[$m['id']] = $m; } } return $modules; }
public function actionSelect($field = '', $dir = '') { $dir = empty($dir) ? zotop::get('dir') : $dir; $dir = trim(url::decode($dir), '/'); $path = site::template(); $path = $path . DS . str_replace('/', DS, $dir); $path = path::clean($path); $folders = folder::folders($path); $files = folder::files($path); $position = '<a href="' . zotop::url('system/template/select') . '">' . zotop::t('根目录') . '</a><em> : //</em> '; if (!empty($dir)) { $dirs = arr::dirpath($dir, '/'); foreach ($dirs as $d) { $position .= '<a href="' . zotop::url('system/template/select', array('dir' => rawurlencode($d[1]))) . '">' . $d[0] . '</a> <em>/</em>'; } } $page = new dialog(); $page->title = zotop::t('模板管理'); $page->set('field', $field); $page->set('dir', $dir); $page->set('position', $position); $page->set('folders', $folders); $page->set('files', $files); $page->display(); }
public function folders($path = '') { $folders = folder::folders($path, false, false); foreach ($folders as $folder) { } return $folders; }
public function actionIndex($dir = '') { $dir = empty($dir) ? zotop::get('dir') : $dir; $dir = url::decode($dir); $path = ZOTOP_PATH_ROOT . DS . trim($dir, DS); $path = path::clean($path); //获取当前目录的子目录及子文件 $folders = (array) folder::folders($path); $files = (array) folder::files($path); $position = '<a href="' . zotop::url('webftp/index/index') . '">root</a>'; $dirs = arr::dirpath($dir, '/'); foreach ($dirs as $d) { $position .= ' <em>/</em> <a href="' . zotop::url('webftp/index/index', array('dir' => rawurlencode($d[1]))) . '">' . $d[0] . '</a>'; } $page = new page(); $page->title = '文件管理器'; $page->set('position', $position); $page->set('navbar', $this->navbar($dir)); $page->set('folders', $folders); $page->set('files', $files); $page->set('path', $path); $page->set('dir', $dir); $page->display(); }
/** * 返回目录下的全部文件夹的数组 * @param string $path 路径 * @param array $filter * @param bool|int $recurse 子目录,或者子目录级数 * @param bool $fullpath 全路径或者仅仅获取文件名称 * @param array $ignore 忽略的文件夹名称 * @return array */ public static function folders($path, $filter = '.', $recurse = false, $fullpath = false, $ignore = array('.svn', 'CVS', '.DS_Store', '__MACOSX')) { $folders = array(); $path = path::clean($path); if (!is_dir($path)) { return false; } $handle = opendir($path); while (($file = readdir($handle)) !== false) { $f = $path . DS . $file; if ($file != '.' && $file != '..' && !in_array($file, $ignore) && is_dir($f)) { if (preg_match("/{$filter}/", $file)) { if ($fullpath) { $folders[] = $f; } else { $folders[] = $file; } } if ($recurse) { if (is_integer($recurse)) { $recurse--; } $subfolders = folder::folders($f, $recurse, $fullpath, $filter, $ignore); $folders = array_merge($folders, $subfolders); } } } closedir($handle); return $folders; }