Вход Регистрация
Файл: concrete5.7.5.6/concrete/src/File/Type/TypeList.php
Строк: 116
<?php

namespace ConcreteCoreFileType;

use 
Loader;

/**
 * @package Core
 * @subpackage Files
 * @author Andrew Embler <andrew@concrete5.org>
 * @copyright  Copyright (c) 2003-2009 Concrete5. (http://www.concrete5.org)
 * @license    http://www.concrete5.org/license/     MIT License
 *
 */

/**
 * @package Core
 * @subpackage Files
 * @author Andrew Embler <andrew@concrete5.org>
 * @category Concrete
 * @copyright  Copyright (c) 2003-2009 Concrete5. (http://www.concrete5.org)
 * @license    http://www.concrete5.org/license/     MIT License
 *
 */
use ConcreteCoreFileTypeType as FileType;

class 
TypeList
{

    
/**
     * @return TypeList
     */
    
public static function getInstance()
    {
        static 
$instance;
        if (!isset(
$instance)) {
            
$v __CLASS__;
            
$instance = new $v;
        }
        return 
$instance;
    }

    protected 
$types = array();
    protected 
$importerAttributes = array();

    public function 
define(
        
$extension,
        
$name,
        
$type,
        
$customImporter false,
        
$inlineFileViewer false,
        
$editor false,
        
$pkgHandle false
    
) {
        
$ext explode(','$extension);
        foreach (
$ext as $e) {
            
$ft = new FileType();
            
$ft->name $name;
            
$ft->extension $e;
            
$ft->customImporter $customImporter;
            
$ft->editor $editor;
            
$ft->type strtolower($type);
            
$ft->view $inlineFileViewer;
            
$ft->pkgHandle $pkgHandle;
            
$this->types[$e] = $ft;
        }
    }

    public function 
defineMultiple(array $types)
    {
        foreach (
$types as $type_name => $type_settings) {
            
array_splice($type_settings10$type_name);

            
call_user_func_array(array($this'define'), $type_settings);
        }
    }

    public function 
defineImporterAttribute($akHandle$akName$akType$akIsEditable)
    {
        
$obj = new stdClass;
        
$obj->akHandle $akHandle;
        
$obj->akName $akName;
        
$obj->akType $akType;
        
$obj->akIsEditable $akIsEditable;
        
$this->importerAttributes[$akHandle] = $obj;
    }

    public function 
defineImporterAttributeMultiple(array $importer_attributes)
    {
        foreach (
$importer_attributes as $attribute_name => $attribute_settings) {
            
array_unshift($attribute_settings$attribute_name);
            
call_user_func_array(array($this'defineImporterAttribute'), $attribute_settings);
        }
    }

    public function 
getImporterAttribute($akHandle)
    {
        
$ftl = static::getInstance();
        return 
$ftl->importerAttributes[$akHandle];
    }

    
/**
     * Can take an extension or a filename
     * Returns any registered information we have for the particular file type, based on its registration
     */
    
public static function getType($ext)
    {
        
$ftl = static::getInstance();
        if (
strpos($ext'.') !== false) {
            
// filename
            
$h Loader::helper('file');
            
$ext $h->getExtension($ext);
        }
        
$ext strtolower($ext);
        if (
is_object($ftl->types[$ext])) {
            return 
$ftl->types[$ext];
        } else {
            
$ft = new FileType(); // generic
            
return $ft;
        }
    }


}
Онлайн: 1
Реклама