singletonIf('listings.item.video', static::class);
return bff('listings.item.video');
}
/**
* Получение данных о видео по ссылке на видео, указанной пользователем
* @param string $url video-ссылка, embed-ссылка, iframe-код
* @return array
*/
public function parse(string $url): array
{
$embed = $this->embed($url);
if (empty($embed) || $embed['provider_id'] == static::PROVIDER_UNKNOWN) {
$extension = $this->app->filter('listings.items.video.parse', $url);
if (is_array($extension)) {
return $extension;
}
return [];
}
return $embed;
}
/**
* Формируем video-слайд для для отображения в iframe
* @param string $data сериализованные данные о video
* @return string HTML
*/
public function viewIframe(string $data): string
{
if (!empty($data) && strpos($data, 'a:') === 0) {
$data = func::unserialize($data);
if (! empty($data) && is_array($data)) {
if ($data['provider_id'] == self::PROVIDER_VK && ! empty($data['video_url'])) {
return '';
} elseif ($data['provider_id'] == self::PROVIDER_YOUTUBE) {
return '';
} elseif ($data['provider_id'] == self::PROVIDER_VIMEO) {
return '';
} elseif ($data['provider_id'] == self::PROVIDER_RUTUBE && ! empty($data['video_url'])) {
return '';
}
}
}
return '';
}
}