Exemple #1
0
 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;
 }
Exemple #2
0
 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();
 }
Exemple #3
0
 public function folders($path = '')
 {
     $folders = folder::folders($path, false, false);
     foreach ($folders as $folder) {
     }
     return $folders;
 }
Exemple #4
0
 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();
 }
Exemple #5
0
 /**
  * 返回目录下的全部文件夹的数组
  * @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;
 }