/** * Hook executed before saving url_preview user type value. Checks and removes signature of the $value. * If signature is correct, checks current user's access to $value. * * @param array $userField Array containing parameters of the user field. * @param string $value Signed value of the user field. * @return int Unsigned value of the user field, or null in case of errors. */ public static function onBeforeSave($userField, $value) { $imageUrl = null; if (strpos($value, ';') !== false) { list($value, $imageUrl) = explode(';', $value); } $signer = new Signer(); try { $value = $signer->unsign($value, UrlPreview::SIGN_SALT); } catch (SystemException $e) { return null; } $metadata = UrlMetadataTable::getById($value)->fetch(); if (!is_array($metadata)) { return null; } if ($metadata['TYPE'] === UrlMetadataTable::TYPE_STATIC) { if ($imageUrl && is_array($metadata['EXTRA']['IMAGES']) && in_array($imageUrl, $metadata['EXTRA']['IMAGES'])) { UrlPreview::setMetadataImage((int) $value, $imageUrl); } return $value; } else { if ($metadata['TYPE'] === UrlMetadataTable::TYPE_DYNAMIC && UrlPreview::checkDynamicPreviewAccess($metadata['URL'])) { return $value; } } return null; }
$elementId = filter_var($_REQUEST['elementId'], FILTER_SANITIZE_STRING); if ($userFieldId === false) { die; } if (isset($_REQUEST['url'])) { $url = filter_var($_REQUEST['url'], FILTER_VALIDATE_URL); $urlMetadata = UrlPreview::getMetadataByUrl($url); } else { if (isset($_REQUEST['id'])) { $signer = new \Bitrix\Main\Security\Sign\Signer(); try { $id = $signer->unsign($_REQUEST['id'], UrlPreview::SIGN_SALT); } catch (Bitrix\Main\SystemException $e) { die; } $metadata = UrlPreview::getMetadataAndHtmlByIds(array($id), true); if (isset($metadata[$id])) { $urlMetadata = $metadata[$id]; } } } if (!isset($urlMetadata['ID'])) { die; } $userFieldParams = array('arUserField' => \CUserTypeEntity::getById($userFieldId), 'urlPreviewId' => $elementId); $userField = array('VALUE' => array($urlMetadata['ID'])); $APPLICATION->ShowAjaxHead(); $outputHtml = UrlPreview::showEdit($userField, $userFieldParams); echo $outputHtml; die; }
<?php if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) { die; } echo \Bitrix\Main\UrlPreview\UrlPreview::showEdit($arResult, $arParams);
<?php if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) { die; } echo \Bitrix\Main\UrlPreview\UrlPreview::showView($arResult, $arParams, $cacheTag);
public static function getAttachments($id, $typeArray = false) { $attachArray = array(); if (is_array($id)) { foreach ($id as $key => $value) { $id[$key] = intval($value); } } else { $id = array(intval($id)); } $params = UrlPreview\UrlPreview::getMetadataAndHtmlByIds($id); foreach ($params as $id => $linkParam) { if ($attach = self::formatAttach($linkParam)) { $attachArray[$id] = $typeArray ? $attach->GetArray() : $attach; } } return $attachArray; }