[CLEANUP] The correct case must be used for standard PHP types in phpdoc
[Packages/TYPO3.CMS.git] / typo3 / sysext / core / Classes / Resource / OnlineMedia / Helpers / AbstractOEmbedHelper.php
1 <?php
2 namespace TYPO3\CMS\Core\Resource\OnlineMedia\Helpers;
3
4 /*
5 * This file is part of the TYPO3 CMS project.
6 *
7 * It is free software; you can redistribute it and/or modify it under
8 * the terms of the GNU General Public License, either version 2
9 * of the License, or any later version.
10 *
11 * For the full copyright and license information, please read the
12 * LICENSE.txt file that was distributed with this source code.
13 *
14 * The TYPO3 project - inspiring people to share!
15 */
16
17 use TYPO3\CMS\Core\Resource\File;
18 use TYPO3\CMS\Core\Resource\Folder;
19 use TYPO3\CMS\Core\Utility\GeneralUtility;
20
21 /**
22 * Class AbstractOEmbedHelper
23 * See http://oembed.com/ for more on OEmbed specification
24 */
25 abstract class AbstractOEmbedHelper extends AbstractOnlineMediaHelper
26 {
27 /**
28 * @param string $mediaId
29 * @param string $format
30 * @return string
31 */
32 abstract protected function getOEmbedUrl($mediaId, $format = 'json');
33
34 /**
35 * Transform mediaId to File
36 *
37 * @param string $mediaId
38 * @param Folder $targetFolder
39 * @param string $fileExtension
40 * @return File
41 */
42 protected function transformMediaIdToFile($mediaId, Folder $targetFolder, $fileExtension)
43 {
44 $file = $this->findExistingFileByOnlineMediaId($mediaId, $targetFolder, $fileExtension);
45
46 // no existing file create new
47 if ($file === null) {
48 $oEmbed = $this->getOEmbedData($mediaId);
49 if (!empty($oEmbed)) {
50 $fileName = $oEmbed['title'] . '.' . $fileExtension;
51 } else {
52 $fileName = $mediaId . '.' . $fileExtension;
53 }
54 $file = $this->createNewFile($targetFolder, $fileName, $mediaId);
55 }
56 return $file;
57 }
58
59 /**
60 * Get OEmbed data
61 *
62 * @param string $mediaId
63 * @return array|null
64 */
65 protected function getOEmbedData($mediaId)
66 {
67 $oEmbed = GeneralUtility::getUrl(
68 $this->getOEmbedUrl($mediaId)
69 );
70 if ($oEmbed) {
71 $oEmbed = json_decode($oEmbed, true);
72 }
73 return $oEmbed;
74 }
75
76 /**
77 * Get meta data for OnlineMedia item
78 * Using the meta data from oEmbed
79 *
80 * @param File $file
81 * @return array with metadata
82 */
83 public function getMetaData(File $file)
84 {
85 $metadata = [];
86
87 $oEmbed = $this->getOEmbedData($this->getOnlineMediaId($file));
88
89 if ($oEmbed) {
90 $metadata['width'] = (int)$oEmbed['width'];
91 $metadata['height'] = (int)$oEmbed['height'];
92 if (empty($file->getProperty('title'))) {
93 $metadata['title'] = strip_tags($oEmbed['title']);
94 }
95 $metadata['author'] = $oEmbed['author_name'];
96 }
97
98 return $metadata;
99 }
100 }