virt2/api/soft/tinymce/4.3.12/plugins/imagemanager/classes/FileSystems/BaseFileImpl.php

181 lines
4.3 KiB
PHP
Executable File

<?php
/**
* $Id: BaseFileImpl.php 10 2007-05-27 10:55:12Z spocke $
*
* @package MCFileManager.filesystems
* @author Moxiecode
* @copyright Copyright © 2005, Moxiecode Systems AB, All rights reserved.
*/
/**
* Implements some of the basic features of a FileSystem but not specific functionality.
*
* @package MCFileManager.filesystems
*/
class Moxiecode_BaseFileImpl extends Moxiecode_BaseFile {
// Private fields
var $_absPath;
var $_type;
var $_manager;
var $_events = true;
/**
* Creates a new absolute file.
*
* @param MCManager $manager MCManager reference.
* @param String $absolute_path Absolute path to local file.
* @param String $child_name Name of child file (Optional).
* @param String $type Optional file type.
*/
function Moxiecode_BaseFileImpl(&$manager, $absolute_path, $child_name = "", $type = MC_IS_FILE) {
$this->_manager =& $manager;
$this->_type = $type;
if ($child_name != "")
$this->_absPath = $this->_manager->removeTrailingSlash($absolute_path) . "/" . $child_name;
else
$this->_absPath = $absolute_path;
}
/**
* Set a bool regarding events triggering.
*
* @param Bool $trigger Trigger or not to trigger.
*/
function setTriggerEvents($trigger) {
$this->_events = $trigger;
}
/**
* Returns bool if events are to be triggered or not.
*
* @return Bool bool for triggering events or not.
*/
function getTriggerEvents() {
return $this->_events;
}
/**
* Returns the parent files absolute path.
*
* @return String parent files absolute path.
*/
function getParent() {
$pathAr = explode("/", $this->getAbsolutePath());
array_pop($pathAr);
$path = implode("/", $pathAr);
return ($path == "") ? "/" : $path;
}
/**
* Returns the file name of a file.
*
* @return string File name of file.
*/
function getName() {
return basename($this->_absPath);
}
/**
* Returns the absolute path of the file.
*
* @return String absolute path of the file.
*/
function getAbsolutePath() {
return $this->_absPath;
}
/**
* Returns true if the file is a directory.
*
* @return boolean true if the file is a directory.
*/
function isDirectory() {
if (!$this->exists())
return $this->_type == MC_IS_DIRECTORY;
return is_dir($this->_manager->toOSPath($this->_absPath));
}
/**
* Returns true if the file is a file.
*
* @return boolean true if the file is a file.
*/
function isFile() {
if (!$this->exists())
return $this->_type == MC_IS_FILE;
return !$this->isDirectory();
}
/**
* Returns an array of File instances.
*
* @return Array array of File instances.
*/
function &listFiles() {
$files = $this->listFilesFiltered(new Moxiecode_DummyFileFilter());
return $files;
}
/**
* Lists the file as an tree and calls the specified FileTreeHandler instance on each file.
*
* @param FileTreeHandler &$file_tree_handler FileTreeHandler to invoke on each file.
*/
function listTree(&$file_tree_handler) {
$this->_listTree($this, $file_tree_handler, new Moxiecode_DummyFileFilter(), 0);
}
/**
* Lists the file as an tree and calls the specified FileTreeHandler instance on each file
* if the file filter accepts the file.
*
* @param FileTreeHandler &$file_tree_handler FileTreeHandler to invoke on each file.
* @param FileTreeHandler &$file_filter FileFilter instance to filter files by.
*/
function listTreeFiltered(&$file_tree_handler, &$file_filter) {
$this->_listTree($this, $file_tree_handler, $file_filter, 0);
}
// * * Private methods
/**
* Lists files recursive, and places the files in the specified array.
*/
function _listTree($file, &$file_tree_handler, &$file_filter, $level) {
$state = $file_tree_handler->CONTINUE;
if ($file_filter->accept($file)) {
$state = $file_tree_handler->handle($file, $level);
if ($state == $file_tree_handler->ABORT || $state == $file_tree_handler->ABORT_FOLDER)
return $state;
}
$files = $file->listFiles();
foreach ($files as $file) {
if ($file_filter->accept($file)) {
if ($file->isFile()) {
// This is some weird shit!
//if (!is_object($file_filter))
$state = $file_tree_handler->handle($file, $level);
} else {
$state = $this->_listTree($file, $file_tree_handler, $file_filter, ++$level);
--$level;
}
}
if ($state == $file_tree_handler->ABORT)
return $state;
}
return $file_tree_handler->CONTINUE;
}
}
?>