/** * Return all available metaData * @param MediaInformation $information * @return array */ public function getMetaData(MediaInformation $information) { $subdef = $information->getResource(); $record = $subdef->get_record(); $thumbnail = $record->get_thumbnail(); $request = $information->getResourceRequest(); $baseUrl = $request->getSchemeAndHttpHost() . $request->getBasePath(); $ogMetaData = []; $embedMedia = []; $oembedMetaData = []; $substitutionPath = sprintf('/assets/common/images/icons/substitution/%s.png', str_replace('/', '_', $record->getMimeType())); $resourceUrl = $information->getUrl(); $embedMedia['title'] = $record->get_title(); $embedMedia['url'] = $resourceUrl; switch ($record->getType()) { case 'video': $ogMetaData['og:type'] = 'video.other'; $ogMetaData['og:image'] = $baseUrl . $thumbnail->get_url(); $ogMetaData['og:image:width'] = $thumbnail->get_width(); $ogMetaData['og:image:height'] = $thumbnail->get_height(); $embedMedia['coverUrl'] = $baseUrl . $thumbnail->get_url(); $embedMedia['source'] = []; $embedMedia['source'][] = ['url' => $resourceUrl, 'type' => $subdef->get_mime()]; $embedMedia['dimensions'] = $this->getDimensions($subdef); $oembedMetaData['type'] = 'video'; $oembedMetaData['html'] = sprintf('<iframe width="%d" height="%d" src="%s" frameborder="0" allowfullscreen></iframe>', $embedMedia['dimensions']['width'], $embedMedia['dimensions']['height'], $this->getEmbedUrl($resourceUrl)); break; case 'flexpaper': case 'document': $ogMetaData['og:type'] = 'article'; $ogMetaData['og:image'] = $baseUrl . $thumbnail->get_url(); $ogMetaData['og:image:width'] = $thumbnail->get_width(); $ogMetaData['og:image:height'] = $thumbnail->get_height(); $oembedMetaData['type'] = 'link'; $embedMedia['dimensions'] = $this->getDimensions($subdef); break; case 'audio': $ogMetaData['og:type'] = 'music.song'; $ogMetaData['og:image'] = $baseUrl . $substitutionPath; $ogMetaData['og:image:width'] = $thumbnail->get_width(); $ogMetaData['og:image:height'] = $thumbnail->get_height(); $oembedMetaData['type'] = 'link'; $embedMedia['source'] = []; $embedMedia['source'][] = ['url' => $resourceUrl, 'type' => $subdef->get_mime()]; $embedMedia['coverUrl'] = $baseUrl . $substitutionPath; // set default dimension for player $embedMedia['dimensions'] = ['width' => 320, 'height' => 320, 'top' => 0]; break; default: $oembedMetaData['type'] = 'photo'; $ogMetaData['og:type'] = 'image'; $ogMetaData['og:image'] = (string) $record->get_preview()->get_permalink()->get_url(); $ogMetaData['og:image:width'] = $subdef->get_width(); $ogMetaData['og:image:height'] = $subdef->get_height(); $embedMedia['dimensions'] = $this->getDimensions($subdef); break; } return ['options' => ['autoplay' => false], 'oembedMetaData' => $oembedMetaData, 'ogMetaData' => $ogMetaData, 'embedMedia' => $embedMedia]; }
/** * Return all available metaData * @param MediaInformation $information * @return array */ public function getMetaData(MediaInformation $information) { $subdef = $information->getResource(); $record = $subdef->get_record(); $thumbnail = $record->get_thumbnail(); $request = $information->getResourceRequest(); $baseUrl = $request->getSchemeAndHttpHost() . $request->getBasePath(); $ogMetaData = []; $embedMedia = []; $oembedMetaData = []; $substitutionPath = sprintf('/assets/common/images/icons/substitution/%s.png', str_replace('/', '_', $record->getMimeType())); $resourceUrl = $information->getUrl(); $embedMedia['title'] = $record->get_title(); $embedMedia['url'] = $resourceUrl; switch ($record->getType()) { case 'video': $ogMetaData['og:type'] = 'video.other'; $ogMetaData['og:image'] = $baseUrl . $thumbnail->get_url(); $ogMetaData['og:image:width'] = $thumbnail->get_width(); $ogMetaData['og:image:height'] = $thumbnail->get_height(); $coverUrl = $baseUrl . $thumbnail->get_url(); $embedConfig = $this->getEmbedConfiguration(); // if user config has custom subdef specified: if (array_key_exists('video', $embedConfig)) { if (array_key_exists('coverSubdef', $embedConfig['video'])) { $customCoverName = $embedConfig['video']['coverSubdef']; try { $customCover = $record->get_subdef($customCoverName); $coverUrl = $baseUrl . $customCover->get_url(); } catch (\Exception $e) { // no existing custom cover } } } $embedMedia['coverUrl'] = $coverUrl; $embedMedia['source'] = []; $embedMedia['source'][] = ['url' => $resourceUrl, 'type' => $subdef->get_mime()]; $embedMedia['track'] = $this->getAvailableVideoTextTracks($information); $embedMedia['dimensions'] = $this->getDimensions($subdef); $oembedMetaData['type'] = 'video'; $oembedMetaData['html'] = sprintf('<iframe width="%d" height="%d" src="%s" frameborder="0" allowfullscreen></iframe>', $embedMedia['dimensions']['width'], $embedMedia['dimensions']['height'], $this->getEmbedUrl($resourceUrl)); break; case 'flexpaper': case 'document': $ogMetaData['og:type'] = 'article'; $ogMetaData['og:image'] = $baseUrl . $thumbnail->get_url(); $ogMetaData['og:image:width'] = $thumbnail->get_width(); $ogMetaData['og:image:height'] = $thumbnail->get_height(); $oembedMetaData['type'] = 'link'; $embedMedia['dimensions'] = $this->getDimensions($subdef); break; case 'audio': $ogMetaData['og:type'] = 'music.song'; $ogMetaData['og:image'] = $baseUrl . $substitutionPath; $ogMetaData['og:image:width'] = $thumbnail->get_width(); $ogMetaData['og:image:height'] = $thumbnail->get_height(); $oembedMetaData['type'] = 'link'; $embedMedia['source'] = []; $embedMedia['source'][] = ['url' => $resourceUrl, 'type' => $subdef->get_mime()]; $embedMedia['coverUrl'] = $baseUrl . $substitutionPath; // set default dimension for player $embedMedia['dimensions'] = ['width' => 320, 'height' => 320, 'top' => 0]; break; default: $oembedMetaData['type'] = 'photo'; $ogMetaData['og:type'] = 'image'; $ogMetaData['og:image'] = (string) $record->get_preview()->get_permalink()->get_url(); $ogMetaData['og:image:width'] = $subdef->get_width(); $ogMetaData['og:image:height'] = $subdef->get_height(); $embedMedia['dimensions'] = $this->getDimensions($subdef); break; } return ['options' => ['autoplay' => false], 'oembedMetaData' => $oembedMetaData, 'ogMetaData' => $ogMetaData, 'embedMedia' => $embedMedia]; }