Вход Регистрация
Файл: contao-3.5.8/system/modules/core/elements/ContentMedia.php
Строк: 86
<?php

/**
 * Contao Open Source CMS
 *
 * Copyright (c) 2005-2016 Leo Feyer
 *
 * @license LGPL-3.0+
 */

namespace Contao;


/**
 * Content element "mediaelement".
 *
 * @author Leo Feyer <https://github.com/leofeyer>
 */
class ContentMedia extends ContentElement
{

    
/**
     * Template
     * @var string
     */
    
protected $strTemplate 'ce_player';

    
/**
     * Files object
     * @var ModelCollection|FilesModel
     */
    
protected $objFiles;


    
/**
     * Extend the parent method
     *
     * @return string
     */
    
public function generate()
    {
        if (
$this->playerSRC == '')
        {
            return 
'';
        }

        
$source deserialize($this->playerSRC);

        if (!
is_array($source) || empty($source))
        {
            return 
'';
        }

        
$objFiles FilesModel::findMultipleByUuidsAndExtensions($source, array('mp4','m4v','mov','wmv','webm','ogv','m4a','mp3','wma','mpeg','wav','ogg'));

        if (
$objFiles === null)
        {
            return 
'';
        }

        
// Display a list of files in the back end
        
if (TL_MODE == 'BE')
        {
            
$return '<ul>';

            while (
$objFiles->next())
            {
                
$objFile = new File($objFiles->pathtrue);
                
$return .= '<li><img src="' TL_ASSETS_URL 'assets/contao/images/' $objFile->icon '" width="18" height="18" alt="" class="mime_icon"> <span>' $objFile->name '</span> <span class="size">(' $this->getReadableSize($objFile->size) . ')</span></li>';
            }

            return 
$return '</ul>';
        }

        
$this->objFiles $objFiles;

        return 
parent::generate();
    }


    
/**
     * Generate the module
     */
    
protected function compile()
    {
        
/** @var PageModel $objPage */
        
global $objPage;

        
$this->Template->size '';

        
// Set the size
        
if ($this->playerSize != '')
        {
            
$size deserialize($this->playerSize);

            if (
is_array($size))
            {
                
$this->Template->size ' width="' $size[0] . '" height="' $size[1] . '"';
            }
        }

        
$this->Template->poster false;

        
// Optional poster
        
if ($this->posterSRC != '')
        {
            if ((
$objFile FilesModel::findByUuid($this->posterSRC)) !== null)
            {
                
$this->Template->poster $objFile->path;
            }
        }

        
$objFiles $this->objFiles;

        
/** @var FilesModel $objFirst */
        
$objFirst $objFiles->current();

        
// Pre-sort the array by preference
        
if (in_array($objFirst->extension , array('mp4','m4v','mov','wmv','webm','ogv')))
        {
            
$this->Template->isVideo true;
            
$arrFiles = array('mp4'=>null'm4v'=>null'mov'=>null'wmv'=>null'webm'=>null'ogv'=>null);
        }
        else
        {
            
$this->Template->isVideo false;
            
$arrFiles = array('m4a'=>null'mp3'=>null'wma'=>null'mpeg'=>null'wav'=>null'ogg'=>null);
        }

        
$objFiles->reset();

        
// Convert the language to a locale (see #5678)
        
$strLanguage str_replace('-''_'$objPage->language);

        
// Pass File objects to the template
        
while ($objFiles->next())
        {
            
$arrMeta deserialize($objFiles->meta);

            if (
is_array($arrMeta) && isset($arrMeta[$strLanguage]))
            {
                
$strTitle $arrMeta[$strLanguage]['title'];
            }
            else
            {
                
$strTitle $objFiles->name;
            }

            
$objFile = new File($objFiles->pathtrue);
            
$objFile->title specialchars($strTitle);

            
$arrFiles[$objFile->extension] = $objFile;
        }

        
$this->Template->files array_values(array_filter($arrFiles));
        
$this->Template->autoplay $this->autoplay;
    }
}
Онлайн: 0
Реклама