directory_listing.php

来自「this the oscommerce 3.0 aplha 4」· PHP 代码 · 共 200 行

PHP
200
字号
<?php/*  $Id: directory_listing.php 1498 2007-03-29 14:04:50Z hpdl $  osCommerce, Open Source E-Commerce Solutions  http://www.oscommerce.com  Copyright (c) 2004 osCommerce  This program is free software; you can redistribute it and/or modify  it under the terms of the GNU General Public License v2 (1991)  as published by the Free Software Foundation.*/  class osC_DirectoryListing {/* Private methods */    var $_directory = '',        $_include_files = true,        $_include_directories = true,        $_exclude_entries = array('.', '..'),        $_stats = false,        $_recursive = false,        $_check_extension = array(),        $_add_directory_to_filename = false,        $_listing;/* Class constructor */    function osC_DirectoryListing($directory = '', $stats = false) {      $this->setDirectory(realpath($directory));      $this->setStats($stats);    }/* Public methods */    function setDirectory($directory) {      $this->_directory = $directory;    }    function setIncludeFiles($boolean) {      if ($boolean === true) {        $this->_include_files = true;      } else {        $this->_include_files = false;      }    }    function setIncludeDirectories($boolean) {      if ($boolean === true) {        $this->_include_directories = true;      } else {        $this->_include_directories = false;      }    }    function setExcludeEntries($entries) {      if (is_array($entries)) {        foreach ($entries as $value) {          if (!in_array($value, $this->_exclude_entries)) {            $this->_exclude_entries[] = $value;          }        }      } elseif (is_string($entries)) {        if (!in_array($entries, $this->_exclude_entries)) {          $this->_exclude_entries[] = $entries;        }      }    }    function setStats($boolean) {      if ($boolean === true) {        $this->_stats = true;      } else {        $this->_stats = false;      }    }    function setRecursive($boolean) {      if ($boolean === true) {        $this->_recursive = true;      } else {        $this->_recursive = false;      }    }    function setCheckExtension($extension) {      $this->_check_extension[] = $extension;    }    function setAddDirectoryToFilename($boolean) {      if ($boolean === true) {        $this->_add_directory_to_filename = true;      } else {        $this->_add_directory_to_filename = false;      }    }    function read($directory = '') {      if (empty($directory)) {        $directory = $this->_directory;      }      if (!is_array($this->_listing)) {        $this->_listing = array();      }      if ($dir = @dir($directory)) {        while (($entry = $dir->read()) !== false) {          if (!in_array($entry, $this->_exclude_entries)) {            if (($this->_include_files === true) && is_file($dir->path . '/' . $entry)) {              if (empty($this->_check_extension) || in_array(substr($entry, strrpos($entry, '.')+1), $this->_check_extension)) {                if ($this->_add_directory_to_filename === true) {                  if ($dir->path != $this->_directory) {                    $entry = substr($dir->path, strlen($this->_directory)+1) . '/' . $entry;                  }                }                $this->_listing[] = array('name' => $entry,                                          'is_directory' => false);                if ($this->_stats === true) {                  $stats = array('size' => filesize($dir->path . '/' . $entry),                                 'permissions' => fileperms($dir->path . '/' . $entry),                                 'user_id' => fileowner($dir->path . '/' . $entry),                                 'group_id' => filegroup($dir->path . '/' . $entry),                                 'last_modified' => filemtime($dir->path . '/' . $entry));                  $this->_listing[sizeof($this->_listing)-1] = array_merge($this->_listing[sizeof($this->_listing)-1], $stats);                }              }            } elseif (is_dir($dir->path . '/' . $entry)) {              if ($this->_include_directories === true) {                $entry_name= $entry;                if ($this->_add_directory_to_filename === true) {                  if ($dir->path != $this->_directory) {                    $entry_name = substr($dir->path, strlen($this->_directory)+1) . '/' . $entry;                  }                }                $this->_listing[] = array('name' => $entry_name,                                          'is_directory' => true);                if ($this->_stats === true) {                  $stats = array('size' => filesize($dir->path . '/' . $entry),                                 'permissions' => fileperms($dir->path . '/' . $entry),                                 'user_id' => fileowner($dir->path . '/' . $entry),                                 'group_id' => filegroup($dir->path . '/' . $entry),                                 'last_modified' => filemtime($dir->path . '/' . $entry));                  $this->_listing[sizeof($this->_listing)-1] = array_merge($this->_listing[sizeof($this->_listing)-1], $stats);                }              }              if ($this->_recursive === true) {                $this->read($dir->path . '/' . $entry);              }            }          }        }        $dir->close();        unset($dir);      }    }    function getFiles($sort_by_directories = true) {      if (!is_array($this->_listing)) {        $this->read();      }      if (is_array($this->_listing) && (sizeof($this->_listing) > 0)) {        if ($sort_by_directories === true) {          usort($this->_listing, array($this, '_sortListing'));        }        return $this->_listing;      }      return array();    }    function getSize() {      if (!is_array($this->_listing)) {        $this->read();      }      return sizeof($this->_listing);    }    function getDirectory() {      return $this->_directory;    }/* Private methods */    function _sortListing($a, $b) {      return strcmp((($a['is_directory'] === true) ? 'D' : 'F') . $a['name'], (($b['is_directory'] === true) ? 'D' : 'F') . $b['name']);    }  }?>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?