Your IP : 3.135.189.118


Current Path : /var/www/admin_ftp_12/data/www/httpdocs/bitrix/modules/main/lib/urlpreview/parser/
Upload File :
Current File : /var/www/admin_ftp_12/data/www/httpdocs/bitrix/modules/main/lib/urlpreview/parser/opengraph.php

<?

namespace Bitrix\Main\UrlPreview\Parser;

use Bitrix\Main\UrlPreview\HtmlDocument;
use Bitrix\Main\UrlPreview\Parser;

class OpenGraph extends Parser
{
	/**
	 * Parses HTML documents OpenGraph metadata
	 *
	 * @param HtmlDocument $document HTML document to be parsed.
	 * @return void
	 */
	public function handle(HtmlDocument $document)
	{
		if($document->getTitle() == '')
		{
			$ogTitle = $document->getMetaContent('og:title');
			if($ogTitle <> '')
			{
				$document->setTitle($ogTitle);
			}
		}

		if($document->getDescription() == '')
		{
			$ogDescription = $document->getMetaContent('og:description');
			if($ogDescription <> '')
			{
				$document->setDescription($ogDescription);
			}
		}

		if($document->getImage() == '')
		{
			$ogImage = $document->getMetaContent('og:image:secure_url') ?: $document->getMetaContent('og:image');
			if($ogImage <> '')
			{
				$document->setImage($ogImage);
			}
		}

		$this->parseVideoData($document);

		if(!$document->getExtraField('SITE_NAME'))
		{
			$ogSiteName = $document->getMetaContent('og:site_name');
			if($ogSiteName <> '')
			{
				$document->setExtraField('SITE_NAME', $ogSiteName);
			}
		}

		/*	Not really opengraph property :), but it's placed in opengraph parser to prevent executing full parser chain
			just to get favicon */
		if(!$document->getExtraField('FAVICON'))
		{
			if($favicon = $document->getLinkHref('icon'))
			{
				$document->setExtraField('FAVICON', $favicon);
			}
		}
	}

	protected function parseVideoData(HtmlDocument $document)
	{
		if(!$document->getExtraField('VIDEO'))
		{
			$ogVideo = $document->getMetaContent('og:video')
				?? $document->getMetaContent('og:video:secure_url')
				?? $document->getMetaContent('og:video:url')
				?? '';
			if($ogVideo <> '')
			{
				$document->setExtraField('VIDEO', $ogVideo);
			}
		}

		if(!$document->getExtraField('VIDEO_TYPE'))
		{
			$ogVideoType = $document->getMetaContent('og:video:type') ?? '';
			if($ogVideoType <> '')
			{
				$document->setExtraField('VIDEO_TYPE', $ogVideoType);
			}
		}

		if(!$document->getExtraField('VIDEO_WIDTH'))
		{
			$ogVideoWidth = $document->getMetaContent('og:video:width') ?? '';
			if($ogVideoWidth <> '')
			{
				$document->setExtraField('VIDEO_WIDTH', $ogVideoWidth);
			}
		}

		if(!$document->getExtraField('VIDEO_HEIGHT'))
		{
			$ogVideoHeight = $document->getMetaContent('og:video:height') ?? '';
			if($ogVideoHeight <> '')
			{
				$document->setExtraField('VIDEO_HEIGHT', $ogVideoHeight);
			}
		}
	}
}