55 return in_array($file->
getMimeType(), $this->possibleMimeTypes,
true);
68 public function render(
FileInterface $file, $width, $height, array $options = [], $usedPathsRelativeToCurrentScript =
false)
72 if (!isset($options[
'autoplay']) && $file instanceof
FileReference) {
74 if ($autoplay !==
null) {
75 $options[
'autoplay'] = $autoplay;
79 $additionalAttributes = [];
80 if (isset($options[
'additionalAttributes']) && is_array($options[
'additionalAttributes'])) {
81 $additionalAttributes[] = GeneralUtility::implodeAttributes($options[
'additionalAttributes'],
true,
true);
83 if (isset($options[
'data']) && is_array($options[
'data'])) {
84 array_walk($options[
'data'],
function (&$value, $key) {
85 $value =
'data-' . htmlspecialchars($key) .
'="' . htmlspecialchars($value) .
'"';
87 $additionalAttributes[] = implode(
' ', $options[
'data']);
89 if (!isset($options[
'controls']) || !empty($options[
'controls'])) {
90 $additionalAttributes[] =
'controls';
92 if (!empty($options[
'autoplay'])) {
93 $additionalAttributes[] =
'autoplay';
95 if (!empty($options[
'muted'])) {
96 $additionalAttributes[] =
'muted';
98 if (!empty($options[
'loop'])) {
99 $additionalAttributes[] =
'loop';
101 foreach ([
'class',
'dir',
'id',
'lang',
'style',
'title',
'accesskey',
'tabindex',
'onclick',
'preload',
'controlsList'] as $key) {
102 if (!empty($options[$key])) {
103 $additionalAttributes[] = $key .
'="' . htmlspecialchars($options[$key]) .
'"';
108 '<audio%s><source src="%s" type="%s"></audio>',
109 empty($additionalAttributes) ?
'' :
' ' . implode(
' ', $additionalAttributes),
110 htmlspecialchars($file->
getPublicUrl($usedPathsRelativeToCurrentScript)),