[BUGFIX] QT movies prefixed abusively in Media CE
[Packages/TYPO3.CMS.git] / typo3 / sysext / cms / tslib / content / class.tslib_content_quicktimeobject.php
1 <?php
2 /***************************************************************
3 * Copyright notice
4 *
5 * (c) 2010-2011 Xavier Perseguers <typo3@perseguers.ch>
6 * (c) 2010-2011 Steffen Kamper <steffen@typo3.org>
7 * All rights reserved
8 *
9 * This script is part of the TYPO3 project. The TYPO3 project is
10 * free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
14 *
15 * The GNU General Public License can be found at
16 * http://www.gnu.org/copyleft/gpl.html.
17 * A copy is found in the textfile GPL.txt and important notices to the license
18 * from the author is found in LICENSE.txt distributed with these scripts.
19 *
20 *
21 * This script is distributed in the hope that it will be useful,
22 * but WITHOUT ANY WARRANTY; without even the implied warranty of
23 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 * GNU General Public License for more details.
25 *
26 * This copyright notice MUST APPEAR in all copies of the script!
27 ***************************************************************/
28
29 /**
30 * Contains QTOBJECT class object.
31 *
32 * @author Xavier Perseguers <typo3@perseguers.ch>
33 * @author Steffen Kamper <steffen@typo3.org>
34 */
35 class tslib_content_QuicktimeObject extends tslib_content_Abstract {
36
37 /**
38 * Rendering the cObject, QTOBJECT
39 *
40 * @param array $conf Array of TypoScript properties
41 * @return string Output
42 */
43 public function render($conf = array()) {
44 $params = $prefix = '';
45 if ($GLOBALS['TSFE']->baseUrl) {
46 $prefix = $GLOBALS['TSFE']->baseUrl;
47 }
48 if ($GLOBALS['TSFE']->absRefPrefix) {
49 $prefix = $GLOBALS['TSFE']->absRefPrefix;
50 }
51
52 $filename = isset( $conf['file.'])
53 ? $this->cObj->stdWrap($conf['file'], $conf['file.'])
54 : $conf['file'];
55
56 $type = isset( $conf['type.'])
57 ? $this->cObj->stdWrap($conf['type'], $conf['type.'])
58 : $conf['type'];
59
60 $typeConf = $conf[$type . '.'];
61
62 // Add QTobject js-file
63 $GLOBALS['TSFE']->getPageRenderer()->addJsFile(TYPO3_mainDir . 'contrib/flashmedia/qtobject/qtobject.js');
64 $replaceElementIdString = uniqid('mmqt');
65 $GLOBALS['TSFE']->register['MMQTID'] = $replaceElementIdString;
66 $qtObject = 'QTObject' . $replaceElementIdString;
67
68 // Merge with default parameters
69 $conf['params.'] = array_merge((array) $typeConf['default.']['params.'], (array) $conf['params.']);
70
71 if (is_array($conf['params.'])) {
72 t3lib_div::remapArrayKeys($conf['params.'], $typeConf['mapping.']['params.']);
73 foreach ($conf['params.'] as $key => $value) {
74 $params .= $qtObject . '.addParam("' . $key . '", "' . $value . '");' . LF;
75 }
76 }
77 $params = ($params ? substr($params, 0, -2) : '') . LF . $qtObject . '.write("' . $replaceElementIdString . '");';
78
79 $alternativeContent = isset($conf['alternativeContent.'])
80 ? $this->cObj->stdWrap($conf['alternativeContent'], $conf['alternativeContent.'])
81 : $conf['alternativeContent'];
82
83 $layout = isset($conf['layout.'])
84 ? $this->cObj->stdWrap($conf['layout'], $conf['layout.'])
85 : $conf['layout'];
86 $layout = str_replace('###ID###', $replaceElementIdString, $layout);
87 $layout = str_replace('###QTOBJECT###', '<div id="' . $replaceElementIdString . '">' . $alternativeContent . '</div>', $layout);
88
89 $width = isset($conf['width.'])
90 ? $this->cObj->stdWrap($conf['width'], $conf['width.'])
91 : $conf['width'];
92 if (!$width) {
93 $width = $conf[$type . '.']['defaultWidth'];
94 }
95
96 $height = isset($conf['height.'])
97 ? $this->cObj->stdWrap($conf['height'], $conf['height.'])
98 : $conf['height'];
99 if (!$height) {
100 $height = $conf[$type . '.']['defaultHeight'];
101 }
102
103 $fullFilename = $filename;
104 // If the file name doesn't contain a scheme, prefix with appropriate data
105 if (strpos($filename, '://') === FALSE && !empty($prefix)) {
106 $fullFilename = $prefix . $filename;
107 }
108 $embed = 'var ' . $qtObject . ' = new QTObject("' . $fullFilename . '", "' .
109 $replaceElementIdString . '", "' . $width . '", "' . $height . '");';
110
111 $content = $layout . '
112 <script type="text/javascript">
113 ' . $embed . '
114 ' . $params . '
115 </script>';
116
117 if (isset($conf['stdWrap.'])) {
118 $content = $this->cObj->stdWrap($content, $conf['stdWrap.']);
119 }
120
121 return $content;
122 }
123 }
124 ?>