Вход Регистрация
Файл: fckeditor/ckfinder/core/connector/php/php4/Core/ResourceTypeConfig.php
Строк: 367
<?php
/*
 * CKFinder
 * ========
 * http://www.ckfinder.com
 * Copyright (C) 2007-2008 Frederico Caldeira Knabben (FredCK.com)
 *
 * The software, this file and its contents are subject to the CKFinder
 * License. Please read the license.txt file before using, installing, copying,
 * modifying or distribute this file or part of its contents. The contents of
 * this file is part of the Source Code of CKFinder.
 */

/**
 * @package CKFinder
 * @subpackage Config
 * @copyright Frederico Caldeira Knabben
 */

/**
 * This class keeps resource types configuration
 * 
 * @package CKFinder
 * @subpackage Config
 * @copyright Frederico Caldeira Knabben
 */
class CKFinder_Connector_Core_ResourceTypeConfig
{
    
/**
     * Resource name
     *
     * @var string
     * @access private
     */
    
var $_name "";
    
/**
     * Resource url
     * 
     * @var string
     * @access private
     */
    
var $_url "";
    
/**
     * Directory path on a server
     *
     * @var string
     * @access private
     */
    
var $_directory "";
    
/**
     * Max size 
     *
     * @var unknown_type
     * @access private
     */
    
var $_maxSize 0;
    
/**
     * Array with allowed extensions
     *
     * @var array[]string
     * @access private
     */
    
var $_allowedExtensions = array();
    
/**
     * Array with denied extensions
     *
     * @var array[]string
     * @access private
     */
    
var $_deniedExtensions = array();
    
/**
     * Default view
     *
     * @var string
     * @access private
     */
    
var $_defaultView "Thumbnails";
    
/**
     * used for CKFinder_Connector_Core_Config object caching
     *
     * @var CKFinder_Connector_Core_Config
     * @access private
     */
    
var $_config;

    
/**
     * Get ResourceType configuration
     *
     * @param string $resourceTypeNode
     * @return array
     * 
     */
    
function CKFinder_Connector_Core_ResourceTypeConfig($resourceTypeNode)
    {
        if (isset(
$resourceTypeNode["name"])) {
            
$this->_name $resourceTypeNode["name"];
        }

        if (isset(
$resourceTypeNode["url"])) {
            
$this->_url $resourceTypeNode["url"];
        }

        if (!
strlen($this->_url)) {
            
$this->_url "/";
        }
        else if(
substr($this->_url,-1,1) != "/") {
            
$this->_url .= "/";
        }

        if (isset(
$resourceTypeNode["maxSize"])) {
            
$this->_maxSize CKFinder_Connector_Utils_Misc::returnBytes((string)$resourceTypeNode["maxSize"]);
        }

        if (isset(
$resourceTypeNode["directory"])) {
            
$this->_directory $resourceTypeNode["directory"];
        }

        if (!
strlen($this->_directory)) {
            
$this->_directory resolveUrl($this->_url);
        }

        if (isset(
$resourceTypeNode["allowedExtensions"])) {
            if (
is_array($resourceTypeNode["allowedExtensions"])) {
                foreach (
$resourceTypeNode["allowedExtensions"] as $extension) {
                    
$this->_allowedExtensions[] = strtolower(trim((string)$e));
                }
            }
            else {
                
$resourceTypeNode["allowedExtensions"] = trim((string)$resourceTypeNode["allowedExtensions"]);
                if (
strlen($resourceTypeNode["allowedExtensions"])) {
                    
$extensions explode(","$resourceTypeNode["allowedExtensions"]);
                    foreach (
$extensions as $e) {
                        
$this->_allowedExtensions[] = strtolower(trim($e));
                    }
                }
            }
        }

        if (isset(
$resourceTypeNode["deniedExtensions"])) {
            if (
is_array($resourceTypeNode["deniedExtensions"])) {

                foreach (
$resourceTypeNode["deniedExtensions"] as $extension) {
                    
$this->_deniedExtensions[] = strtolower(trim((string)$e));
                }
            }
            else {
                
$resourceTypeNode["deniedExtensions"] = trim((string)$resourceTypeNode["deniedExtensions"]);
                if (
strlen($resourceTypeNode["deniedExtensions"])) {
                    
$extensions explode(","$resourceTypeNode["deniedExtensions"]);
                    foreach (
$extensions as $e) {
                        
$this->_deniedExtensions[] = strtolower(trim($e));
                    }
                }
            }
        }

        
$_view "";
        if (isset(
$resourceTypeNode["defaultView"])) {
            
$_view $resourceTypeNode["defaultView"];
        }
        if (!
strlen($_view) && isset($GLOBALS['config']['DefaultDisplaySettings']['view'])) {
            
$_view $GLOBALS['config']['DefaultDisplaySettings']['view'];
        }
        if (
$_view == "List") {
            
$this->_defaultView "List";
        }
    }

    
/**
     * Get name
     *
     * @access public
     * @return string
     */
    
function getName()
    {
        return 
$this->_name;
    }

    
/**
     * Get url
     *
     * @access public
     * @return string
     */
    
function getUrl()
    {
        return 
$this->_url;
    }

    
/**
     * Get directory
     *
     * @access public
     * @return string
     */
    
function getDirectory()
    {
        return 
$this->_directory;
    }

    
/**
     * Get max size
     *
     * @access public
     * @return int
     */
    
function getMaxSize()
    {
        return 
$this->_maxSize;
    }

    
/**
     * Get allowed extensions
     *
     * @access public
     * @return array[]string
     */
    
function getAllowedExtensions()
    {
        return 
$this->_allowedExtensions;
    }

    
/**
     * Get denied extensions
     *
     * @access public
     * @return array[]string
     */
    
function getDeniedExtensions()
    {
        return 
$this->_deniedExtensions;
    }

    
/**
     * Get default view
     *
     * @access public
     * @return string
     */
    
function getDefaultView()
    {
        return 
$this->_defaultView;
    }

    
/**
     * Check extension, return true if file name is valid.
     * Return false if extension is on denied list.
     * If allowed extensions are defined, return false if extension isn't on allowed list.
     *
     * @access public
     * @param string $extension extension
     * @param boolean $renameIfRequired whether try to rename file or not
     * @return boolean
     */
    
function checkExtension(&$fileName$renameIfRequired true)
    {
        if (
strpos($fileName'.') === false) {
            return 
true;
        }

        if (
is_null($this->_config)) {
            
$this->_config =& CKFinder_Connector_Core_Factory::getInstance("Core_Config");
        }

        
$toCheck = array();

        if (
$this->_config->getCheckDoubleExtension()) {
            
$pieces explode('.'$fileName);

            
// First, check the last extension (ex. in file.php.jpg, the "jpg").
            
if ( !$this->checkSingleExtension$pieces[sizeof($pieces)-1] ) ) {
                return 
false;
            }

            if (
$renameIfRequired) {
                
// Check the other extensions, rebuilding the file name. If an extension is
                // not allowed, replace the dot with an underscore.
                
$fileName $pieces[0] ;
                for (
$i=1$i<sizeof($pieces)-1$i++) {
                    
$fileName .= $this->checkSingleExtension$pieces[$i] ) ? '.' '_' ;
                    
$fileName .= $pieces[$i];
                }

                
// Add the last extension to the final name.
                
$fileName .= '.' $pieces[sizeof($pieces)-1] ;
            }
        }
        else {
            
// Check only the last extension (ex. in file.php.jpg, only "jpg").
            
return $this->checkSingleExtensionsubstr($fileNamestrrpos($fileName,'.')+1) );
        }

        return 
true;
    }

    
/**
     * Check given folder name
     * Return true if folder name matches hidden folder names list
     *
     * @param string $folderName
     * @access public
     * @return boolean
     */
    
function checkIsHiddenFolder($folderName)
    {
        if (
is_null($this->_config)) {
            
$this->_config =& CKFinder_Connector_Core_Factory::getInstance("Core_Config");
        }

        
$regex $this->_config->getHideFoldersRegex();
        if (
$regex) {
            return 
preg_match($regex$folderName);
        }
        
        return 
false;
    }

    
/**
     * Check given file name
     * Return true if file name matches hidden file names list
     *
     * @param string $fileName
     * @access public
     * @return boolean
     */
    
function checkIsHiddenFile($fileName)
    {
        if (
is_null($this->_config)) {
            
$this->_config =& CKFinder_Connector_Core_Factory::getInstance("Core_Config");
        }

        
$regex $this->_config->getHideFilesRegex();
        if (
$regex) {
            return 
preg_match($regex$fileName);
        }
        
        return 
false;
    }
    
    function 
checkSingleExtension($extension)
    {
        
$extension strtolower(ltrim($extension,'.'));

        if (
sizeof($this->_deniedExtensions)) {
            if (
in_array($extension$this->_deniedExtensions)) {
                return 
false;
            }
        }

        if (
sizeof($this->_allowedExtensions)) {
            return 
in_array($extension$this->_allowedExtensions);
        }

        return 
true;
    }
}
?>
Онлайн: 1
Реклама