%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/components/bitrix/forum.interface/templates/popup_image/ |
| Current File : //home/bitrix/www/bitrix/components/bitrix/forum.interface/templates/popup_image/template.php |
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
// ************************* Input params***************************************************************
// ************************* BASE **********************************************************************
$arParams["URL"] = trim($arParams["~URL"]);
if (empty($arParams["URL"]))
return false;
if ($arParams["CONVERT"] == "Y")
$arParams["URL"] = htmlspecialcharsbx($arParams["URL"]);
// *************************/BASE **********************************************************************
// ************************* ADDITIONAL ****************************************************************
// True image size For example 1024x768
$img = array("width" => 0, "height" => 0);
if (array_key_exists("IMG_WIDTH", $arParams))
$img = array("width" => intval($arParams["IMG_WIDTH"]), "height" => intval($arParams["IMG_HEIGHT"]));
else if (array_key_exists("WIDTH", $arParams))
$img = array("width" => intval($arParams["WIDTH"]), "height" => intval($arParams["HEIGHT"]));
$img = array_merge($img, array("~width" => $img["width"], "~height" => $img["height"]));
// user size from image parameters [IMG URL='bla-bla' WIDTH=100 HEIGHT=100] to resize image on client
$arParams["SIZE"] = (is_array($arParams["SIZE"]) ? array_change_key_case($arParams["SIZE"], CASE_LOWER) : null);
if ($arParams["SIZE"] !== null && ($arParams["SIZE"]["width"] > 0 || $arParams["SIZE"]["height"] > 0))
{
if ($arParams["SIZE"]["width"] > 0)
$img["width"] = $arParams["SIZE"]["width"];
if ($arParams["SIZE"]["height"] > 0)
$img["height"] = $arParams["SIZE"]["height"];
}
// size to resize image on server
$arParams["MAX_SIZE"] = (is_array($arParams["MAX_SIZE"]) ? array_change_key_case($arParams["MAX_SIZE"], CASE_LOWER) : null);
// size to resize image on client in browser only. It's helpful for space economy
$arParams["HTML_SIZE"] = ($arParams["HTML_SIZE"] > 0 ?
array("width" => $arParams["HTML_SIZE"], "height" => $arParams["HTML_SIZE"]) :
(is_array($arParams["HTML_SIZE"]) ? array_change_key_case($arParams["HTML_SIZE"], CASE_LOWER) : $arParams["MAX_SIZE"]));
if ($arParams["HTML_SIZE"] !== null && $arParams["MAX_SIZE"] !== null)
{
$arParams["HTML_SIZE"]["width"] = min($arParams["HTML_SIZE"]["width"], $arParams["MAX_SIZE"]["width"]);
$arParams["HTML_SIZE"]["height"] = min($arParams["HTML_SIZE"]["height"], $arParams["MAX_SIZE"]["height"]);
}
$arParams["FAMILY"] = trim($arParams["FAMILY"]);
$arParams["FAMILY"] = strtolower(empty($arParams["FAMILY"]) ? "forum" : $arParams["FAMILY"]);
$arParams["FAMILY"] = preg_replace("/[^a-z]/is", "", $arParams["FAMILY"]);
$arParams["RETURN"] = ($arParams["RETURN"] == "Y" ? "Y" : "N");
$arParams["MODE"] = trim($arParams["MODE"]);
// *************************/ADDITIONAL ****************************************************************
// *************************/Input params***************************************************************
$img["~src"] = $arParams["URL"];
$img["src_download"] = $arParams["URL"].(strpos($arParams["URL"], '?') !== false ? '&' : '?')."action=download";
$img["src"] = $arParams["URL"].(strpos($arParams["URL"], '?') !== false ? '&' : '?').($arParams["MAX_SIZE"] !== null ? http_build_query($arParams["MAX_SIZE"]) : "");
// HTML size
$bNeedCreatePicture = false;
$props =
($img["width"] > 0 ? 'width="'.$img["width"].'" ' : '').
($img["height"] > 0 ? 'height="'.$img["height"].'" ' : '');
if ($arParams["HTML_SIZE"] !== null)
{
if ($arParams["HTML_SIZE"]["width"] > 0 && $arParams["HTML_SIZE"]["height"] > 0 &&
$img["width"] > 0 && $img["height"] > 0)
{
CFile::ScaleImage(
$img["width"], $img["height"],
$arParams["HTML_SIZE"], BX_RESIZE_IMAGE_PROPORTIONAL,
$bNeedCreatePicture, $arSourceSize, $arDestinationSize);
if ($bNeedCreatePicture)
$props = 'width="'.$arDestinationSize["width"].'" height="'.$arDestinationSize["height"].'" ';
}
else
{
$style = array();
if ($arParams["HTML_SIZE"]["width"] > 0)
$style[] = 'max-width:'.$arParams["HTML_SIZE"]["width"].'px;';
if ($arParams["HTML_SIZE"]["height"] > 0)
$style[] = 'max-height:'.$arParams["HTML_SIZE"]["height"].'px;';
if (!empty($style))
$props = 'style="'.implode($style, "").'"';
}
}
if ($arParams['MODE'] == 'RSS')
{
$arParams["RETURN_DATA"] = <<<HTML
<img src="{$img["src"]}" {$props} />
HTML;
if ($bNeedCreatePicture)
{
$arParams["RETURN_DATA"] = <<<HTML
<a href="{$img["~src"]}" target="_blank">{$arParams["RETURN_DATA"]}</a>
HTML;
}
}
elseif ($arParams['MODE'] == 'SHOW2IMAGES')
{
$arParams["RETURN_DATA"] = <<<HTML
<img src="{$img["src"]}" {$props}
data-bx-viewer="image"
data-bx-src="{$img["~src"]}"
data-bx-download="{$img["src_download"]}"
data-bx-width="{$img["~width"]}"
data-bx-height="{$img["~height"]}"
data-bx-title="{$arParams["IMG_NAME"]}"
data-bx-size="{$arParams["IMG_SIZE"]}" />
HTML;
}
else
{
CUtil::InitJSCore();
do {
$id = "popup_".rand();
} while(ForumGetEntity($id) !== false);
$arParams["RETURN_DATA"] = <<<HTML
<img src="{$img["~src"]}" id="{$id}" border="0" {$props} data-bx-viewer="image" data-bx-src="{$img["~src"]}" />
HTML;
}
$arParams["RETURN_DATA"] = str_replace(array("\n", "\t", " "), " ", $arParams["RETURN_DATA"]);
if ($arParams["RETURN"] == "Y")
$this->__component->arParams["RETURN_DATA"] = $arParams["RETURN_DATA"];
else
echo $arParams["RETURN_DATA"];
?>