30 public function render($conf = array()) {
33 $flexParams = isset($conf[
'flexParams.']) ? $this->cObj->stdWrap($conf[
'flexParams'], $conf[
'flexParams.']) : $conf[
'flexParams'];
34 if ($flexParams[0] ===
'<') {
37 foreach ($flexParams[
'data'] as $sheetData) {
38 $this->cObj->readFlexformIntoConf($sheetData[
'lDEF'], $conf[
'parameter.'], TRUE);
45 if (is_array($sources) && count($sources)) {
46 $conf[
'sources'] = array();
47 foreach ($sources as $key => $source) {
48 if (isset($source[
'mmSource'])) {
49 $source = $source[
'mmSource'];
50 $conf[
'sources'][$key] = $this->retrieveMediaUrl($source);
54 unset($conf[
'sources']);
60 if ($videoFallback !== NULL) {
61 $conf[
'file'] = $this->retrieveMediaUrl($videoFallback);
66 $audioSources = $this->
doFlexFormOverlay($conf,
'audioSources',
'mmAudioSourcesContainer');
67 if (is_array($audioSources) && count($audioSources)) {
68 $conf[
'audioSources'] = array();
69 foreach ($audioSources as $key => $source) {
70 if (isset($source[
'mmAudioSource'])) {
71 $source = $source[
'mmAudioSource'];
72 $conf[
'audioSources'][$key] = $this->retrieveMediaUrl($source);
76 unset($conf[
'audioSources']);
81 $conf[
'audioFallback'] = $this->retrieveMediaUrl($audioFallback);
83 unset($conf[
'audioFallback']);
88 $conf[
'caption'] = $this->retrieveMediaUrl($caption);
90 unset($conf[
'caption']);
94 $conf[
'preferFlashOverHtml5'] = 0;
95 if ($renderType ===
'preferFlashOverHtml5') {
98 if ($renderType ===
'auto') {
101 $handler = array_keys($conf[
'fileExtHandler.']);
102 if ($conf[
'type'] ===
'video') {
107 if (in_array($fileinfo[
'fileext'], $handler)) {
108 $renderType = strtolower($conf[
'fileExtHandler.'][$fileinfo[
'fileext']]);
111 $mime = $renderType .
'object';
112 $typeConf = $conf[
'mimeConf.'][$mime .
'.'][$conf[
'type'] .
'.'] ?: array();
113 $conf[
'predefined'] = array();
117 if (is_array($conf[
'parameter.'][
'mmMediaOptions'])) {
118 foreach ($conf[
'parameter.'][
'mmMediaOptions'] as $key => $value) {
119 if ($key ==
'mmMediaCustomParameterContainer') {
120 foreach ($value as $val) {
122 $rawTS = $val[
'mmParamCustomEntry'];
126 foreach ($tmp as $tsLine) {
127 if ($tsLine[0] !==
'#' && ($pos = strpos($tsLine,
'.'))) {
128 $parts[0] = substr($tsLine, 0, $pos);
129 $parts[1] = substr($tsLine, $pos + 1);
131 switch (strtolower($parts[0])) {
133 $conf[
'flashvars.'][$valueParts[0]] = $valueParts[1];
136 $conf[
'params.'][$valueParts[0]] = $valueParts[1];
139 $conf[
'attributes.'][$valueParts[0]] = $valueParts[1];
146 } elseif ($key ==
'mmMediaOptionsContainer') {
147 foreach ($value as $val) {
148 if (isset($val[
'mmParamSet'])) {
149 $pName = $val[
'mmParamName'];
150 $pSet = $val[
'mmParamSet'];
151 $pValue = $pSet == 2 ? $val[
'mmParamValue'] : ($pSet == 0 ?
'false' :
'true');
152 $conf[
'predefined'][$pName] = $pValue;
159 $renderType =
'flowplayer';
161 if ($conf[
'type'] ===
'audio' && !isset($conf[
'audioSources'])) {
164 if ($renderType !==
'qt' && $renderType !==
'embed' && $conf[
'type'] ==
'video') {
165 if (isset($conf[
'file']) && (strpos($conf[
'file'],
'.swf') !== FALSE || strpos($conf[
'file'],
'://') !== FALSE && strpos(\
TYPO3\CMS\Core\Utility\
GeneralUtility::getUrl($conf[
'file'], 2),
'application/x-shockwave-flash') !== FALSE)) {
166 $conf = array_merge((array) $conf[
'mimeConf.'][
'swfobject.'], $conf);
167 $conf[$conf[
'type'] .
'.'][
'player'] = strpos($conf[
'file'],
'://') === FALSE ?
'http://' . $conf[
'file'] : $conf[
'file'];
168 $conf[
'installUrl'] =
'null';
169 $conf[
'forcePlayer'] = 0;
171 } elseif (isset($conf[
'file']) && strpos($conf[
'file'],
'://') !== FALSE) {
172 $mediaWizard = \TYPO3\CMS\Frontend\MediaWizard\MediaWizardProviderManager::getValidMediaWizardProvider($conf[
'file']);
173 if ($mediaWizard !== NULL) {
174 $conf[
'installUrl'] =
'null';
175 $conf[
'forcePlayer'] = 0;
178 } elseif (isset($conf[
'file']) && !isset($conf[
'caption']) && !isset($conf[
'sources'])) {
180 $conf[
'forcePlayer'] = 1;
183 switch ($renderType) {
185 $conf[$conf[
'type'] .
'.'] = array_merge((array) $conf[
'mimeConf.'][
'flowplayer.'][($conf[
'type'] .
'.')], $typeConf);
186 $conf = array_merge((array) $conf[
'mimeConf.'][
'flowplayer.'], $conf);
187 unset($conf[
'mimeConf.']);
188 $conf[
'attributes.'] = array_merge((array) $conf[
'attributes.'], $conf[
'predefined']);
189 $conf[
'params.'] = array_merge((array) $conf[
'params.'], $conf[
'predefined']);
190 $conf[
'flashvars.'] = array_merge((array) $conf[
'flashvars.'], $conf[
'predefined']);
191 $content = $this->cObj->FLOWPLAYER($conf);
194 $conf[$conf[
'type'] .
'.'] = array_merge((array) $conf[
'mimeConf.'][
'swfobject.'][($conf[
'type'] .
'.')], $typeConf);
195 $conf = array_merge((array) $conf[
'mimeConf.'][
'swfobject.'], $conf);
196 unset($conf[
'mimeConf.']);
197 $conf[
'flashvars.'] = array_merge((array) $conf[
'flashvars.'], $conf[
'predefined']);
198 $content = $this->cObj->SWFOBJECT($conf);
201 $conf[$conf[
'type'] .
'.'] = array_merge($conf[
'mimeConf.'][
'swfobject.'][$conf[
'type'] .
'.'], $typeConf);
202 $conf = array_merge($conf[
'mimeConf.'][
'qtobject.'], $conf);
203 unset($conf[
'mimeConf.']);
204 $conf[
'params.'] = array_merge((array) $conf[
'params.'], $conf[
'predefined']);
205 $content = $this->cObj->QTOBJECT($conf);
208 $paramsArray = array_merge((array) $typeConf[
'default.'][
'params.'], (array) $conf[
'params.'], $conf[
'predefined']);
209 $conf[
'params'] =
'';
210 foreach ($paramsArray as $key => $value) {
211 $conf[
'params'] .= $key .
'=' . $value . LF;
213 $content = $this->cObj->MULTIMEDIA($conf);
216 if (is_array(
$GLOBALS[
'TYPO3_CONF_VARS'][
'SC_OPTIONS'][
'tslib/hooks/class.tx_cms_mediaitems.php'][
'customMediaRender'])) {
217 foreach (
$GLOBALS[
'TYPO3_CONF_VARS'][
'SC_OPTIONS'][
'tslib/hooks/class.tx_cms_mediaitems.php'][
'customMediaRender'] as $classRef) {
219 $conf[
'file'] = $videoFallback;
220 $conf[
'mode'] = is_file(PATH_site . $videoFallback) ?
'file' :
'url';
221 if (method_exists($hookObj,
'customMediaRender')) {
222 $content = $hookObj->customMediaRender($renderType, $conf, $this);
226 if (isset($conf[
'stdWrap.'])) {
227 $content = $this->cObj->stdWrap($content, $conf[
'stdWrap.']);
239 protected function retrieveMediaUrl($file) {
243 $fileParts = explode(
' ', $file);
246 $mediaWizard = \TYPO3\CMS\Frontend\MediaWizard\MediaWizardProviderManager::getValidMediaWizardProvider($fileParts[0]);
248 if (substr($fileParts[0], 0, 5) ===
'file:') {
249 $fileUid = substr($fileParts[0], 5);
254 if ($fileObject instanceof \
TYPO3\CMS\Core\Resource\FileInterface) {
255 $returnValue = $fileObject->getPublicUrl();
258 } elseif (is_file(PATH_site . $fileParts[0])) {
259 $returnValue =
$GLOBALS[
'TSFE']->tmpl->getFileName($fileParts[0]);
260 } elseif ($mediaWizard !== NULL) {
261 $jumpUrlEnabled =
$GLOBALS[
'TSFE']->config[
'config'][
'jumpurl_enable'];
262 $GLOBALS[
'TSFE']->config[
'config'][
'jumpurl_enable'] = 0;
263 $returnValue = $this->cObj->typoLink_URL(array(
264 'parameter' => $mediaWizard->rewriteUrl($fileParts[0])
266 $GLOBALS[
'TSFE']->config[
'config'][
'jumpurl_enable'] = $jumpUrlEnabled;
268 $returnValue = $fileParts[0];
286 $flexKey =
'mm' . ucfirst($key);
287 if ($sectionKey === NULL) {
288 if (isset($confArray[
'parameter.'][$flexKey])) {
289 $flexValue = $confArray[
'parameter.'][$flexKey];
292 if (isset($confArray[
'parameter.'][$flexKey][$sectionKey])) {
293 $flexValue = $confArray[
'parameter.'][$flexKey][$sectionKey];
296 if ($flexValue === NULL) {
297 $flexValue = isset($confArray[$key .
'.']) ? $this->cObj->stdWrap($confArray[$key], $confArray[$key .
'.']) : $confArray[$key];
static canBeInterpretedAsInteger($var)
static getUserObj($classRef, $checkPrefix='', $silent=FALSE)
static trimExplode($delim, $string, $removeEmptyValues=FALSE, $limit=0)
static split_fileref($fileNameWithPath)
static getUrl($url, $includeHeader=0, $requestHeaders=FALSE, &$report=NULL)
if(!defined('TYPO3_MODE')) $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_userauth.php']['logoff_pre_processing'][]
static xml2array($string, $NSprefix='', $reportDocTag=FALSE)
doFlexFormOverlay(array &$confArray, $key, $sectionKey=NULL)