Вход Регистрация
Файл: includes/classes/swiftmailer/swiftmailer_generate_mimes_config.php
Строк: 273
#!/usr/bin/php

<?php
define
('APACHE_MIME_TYPES_URL''http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types');
define('FREEDESKTOP_XML_URL''https://raw2.github.com/minad/mimemagic/master/script/freedesktop.org.xml');

function 
generateUpToDateMimeArray()
{
    
$preamble "<?phpnn";
    
$preamble .= "/*n";
    
$preamble .= " * This file is part of SwiftMailer.n";
    
$preamble .= " * (c) 2004-2009 Chris Corbynn *n";
    
$preamble .= " * For the full copyright and license information, please view the LICENSEn";
    
$preamble .= " * file that was distributed with this source code.n *n";
    
$preamble .= " * autogenerated using http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.typesn";
    
$preamble .= " * and https://raw.github.com/minad/mimemagic/master/script/freedesktop.org.xmln";
    
$preamble .= " */nn";
    
$preamble .= "/*n";
    
$preamble .= " * List of MIME type automatically detected in Swift Mailer.n";
    
$preamble .= " */nn";
    
$preamble .= "// You may add or take away what you like (lowercase required)nn";

    
// get current mime types files
    
$mime_types = @file_get_contents(APACHE_MIME_TYPES_URL);
    
$mime_xml = @file_get_contents(FREEDESKTOP_XML_URL);

    
// prepare valid mime types
    
$valid_mime_types = array();

    
// split mime type and extensions eg. "video/x-matroska        mkv mk3d mks"
    
if (preg_match_all('/^#?([a-z0-9-+/.]+)[t]+(.*)$/miu'$mime_types$matches) !== false) {
        
// collection of predefined mimetypes (bugfix for wrong resolved or missing mime types)
        
$valid_mime_types_preset = array(
            
'php' => 'application/x-php',
            
'php3' => 'application/x-php',
            
'php4' => 'application/x-php',
            
'php5' => 'application/x-php',
            
'zip' => 'application/zip',
            
'gif' => 'image/gif',
            
'png' => 'image/png',
            
'css' => 'text/css',
            
'js' => 'text/javascript',
            
'txt' => 'text/plain',
            
'aif' => 'audio/x-aiff',
            
'aiff' => 'audio/x-aiff',
            
'avi' => 'video/avi',
            
'bmp' => 'image/bmp',
            
'bz2' => 'application/x-bz2',
            
'csv' => 'text/csv',
            
'dmg' => 'application/x-apple-diskimage',
            
'doc' => 'application/msword',
            
'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
            
'eml' => 'message/rfc822',
            
'aps' => 'application/postscript',
            
'exe' => 'application/x-ms-dos-executable',
            
'flv' => 'video/x-flv',
            
'gz' => 'application/x-gzip',
            
'hqx' => 'application/stuffit',
            
'htm' => 'text/html',
            
'html' => 'text/html',
            
'jar' => 'application/x-java-archive',
            
'jpeg' => 'image/jpeg',
            
'jpg' => 'image/jpeg',
            
'm3u' => 'audio/x-mpegurl',
            
'm4a' => 'audio/mp4',
            
'mdb' => 'application/x-msaccess',
            
'mid' => 'audio/midi',
            
'midi' => 'audio/midi',
            
'mov' => 'video/quicktime',
            
'mp3' => 'audio/mpeg',
            
'mp4' => 'video/mp4',
            
'mpeg' => 'video/mpeg',
            
'mpg' => 'video/mpeg',
            
'odg' => 'vnd.oasis.opendocument.graphics',
            
'odp' => 'vnd.oasis.opendocument.presentation',
            
'odt' => 'vnd.oasis.opendocument.text',
            
'ods' => 'vnd.oasis.opendocument.spreadsheet',
            
'ogg' => 'audio/ogg',
            
'pdf' => 'application/pdf',
            
'ppt' => 'application/vnd.ms-powerpoint',
            
'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
            
'ps' => 'application/postscript',
            
'rar' => 'application/x-rar-compressed',
            
'rtf' => 'application/rtf',
            
'tar' => 'application/x-tar',
            
'sit' => 'application/x-stuffit',
            
'svg' => 'image/svg+xml',
            
'tif' => 'image/tiff',
            
'tiff' => 'image/tiff',
            
'ttf' => 'application/x-font-truetype',
            
'vcf' => 'text/x-vcard',
            
'wav' => 'audio/wav',
            
'wma' => 'audio/x-ms-wma',
            
'wmv' => 'audio/x-ms-wmv',
            
'xls' => 'application/excel',
            
'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
            
'xml' => 'application/xml',
        );

        
// wrap array for generating file
        
foreach ($valid_mime_types_preset as $extension => $mime_type) {
            
// generate array for mimetype to extension resolver (only first match)
            
$valid_mime_types[$extension] = "'{$extension}' => '{$mime_type}'";
        }

        
// collect extensions
        
$valid_extensions = array();

        
// all extensions from second match
        
foreach ($matches[2] as $i => $extensions) {
            
// explode multiple extensions from string
            
$extensions explode(' 'strtolower($extensions));

            
// force array for foreach
            
if (!is_array($extensions)) {
                
$extensions = array($extensions);
            }

            foreach (
$extensions as $extension) {
                
// get mime type
                
$mime_type $matches[1][$i];

                
// check if string length lower than 10
                
if (strlen($extension) < 10) {
                    
// add extension
                    
$valid_extensions[] = $extension;

                    if (!isset(
$valid_mime_types[$mime_type])) {
                        
// generate array for mimetype to extension resolver (only first match)
                        
$valid_mime_types[$extension] = "'{$extension}' => '{$mime_type}'";
                    }
                }
            }
        }
    }

    
$xml simplexml_load_string($mime_xml);

    foreach (
$xml as $node) {
        
// check if there is no pattern
        
if (!isset($node->glob['pattern'])) {
            continue;
        }

        
// get all matching extensions from match
        
foreach ((array) $node->glob['pattern'] as $extension) {
            
// skip none glob extensions
            
if (strpos($extension'.') === false) {
                continue;
            }

            
// remove get only last part
            
$extension explode('.'strtolower($extension));
            
$extension end($extension);

            
// maximum length in database column
            
if (strlen($extension) <= 9) {
                
$valid_extensions[] = $extension;
            }
        }

        if (isset(
$node->glob['pattern'][0])) {
            
// mime type
            
$mime_type strtolower((string) $node['type']);

            
// get first extension
            
$extension strtolower(trim($node->glob['ddpattern'][0], '*.'));

            
// skip none glob extensions and check if string length between 1 and 10
            
if (strpos($extension'.') !== false || strlen($extension) < || strlen($extension) > 9) {
                continue;
            }

            
// check if string length lower than 10
            
if (!isset($valid_mime_types[$mime_type])) {
                
// generate array for mimetype to extension resolver (only first match)
                
$valid_mime_types[$extension] = "'{$extension}' => '{$mime_type}'";
            }
        }
    }

    
// full list of valid extensions only
    
$valid_mime_types array_unique($valid_mime_types);
    
ksort($valid_mime_types);

    
// combine mime types and extensions array
    
$output "$preamble$swift_mime_types = array(n    ".implode($valid_mime_types",n    ")."n);";

    
// write mime_types.php config file
    
@file_put_contents('./mime_types.php'$output);
}

generateUpToDateMimeArray();
Онлайн: 0
Реклама