Your IP : 3.149.231.40
<?
$GLOBALS["UF_GALLERY_SIZE"] = array();
if (!is_array($GLOBALS["PHOTOGALLERY_VARS"]))
{
$GLOBALS["PHOTOGALLERY_VARS"] = array(
"arSections" => array(),
"arGalleriesID" => array(),
"arGalleries" => array(),
"arIBlock" => array());
}
class CPhotogalleryElement
{
// static $arSections = array();
// static $arGalleries = array();
// static $arIBlock = array();
function CheckElement($ID, &$arElement, &$arSection, &$arGallery)
{
$ID = doubleval($ID);
if ($ID <= 0)
return false;
$arSelect = array(
"ID",
"IBLOCK_ID",
"IBLOCK_SECTION_ID");
$db_res = CIBlockElement::GetList(array(), array("ID" => $ID), false, false, $arSelect);
if (!($db_res && $arElement = $db_res->Fetch()))
{
return false;
}
elseif (doubleval($arElement["IBLOCK_SECTION_ID"]) <= 0)
{
return false;
}
$tmp_db_res = CIBlockElement::GetProperty($arElement["IBLOCK_ID"], $ID, $by = "sort", $order = "asc", array("CODE" => "REAL_PICTURE"));
if ($tmp_db_res && $tmp_res = $tmp_db_res->Fetch())
{
$arElement["PROPERTY_REAL_PICTURE_VALUE"] = $tmp_res["VALUE"];
$arElement["PROPERTY_REAL_PICTURE_VALUE_ID"] = $tmp_res["PROPERTY_VALUE_ID"];
}
if (!is_set($GLOBALS["PHOTOGALLERY_VARS"]["arIBlock"], $arElement["IBLOCK_ID"]))
{
$GLOBALS["PHOTOGALLERY_VARS"]["arIBlock"][$arElement["IBLOCK_ID"]] = false;
$db_res = CUserTypeEntity::GetList(array($by=>$order), array("ENTITY_ID" => "IBLOCK_".$arElement["IBLOCK_ID"]."_SECTION", "FIELD_NAME" => "UF_GALLERY_SIZE"));
if ($db_res && $res = $db_res->Fetch())
$GLOBALS["PHOTOGALLERY_VARS"]["arIBlock"][$arElement["IBLOCK_ID"]] = true;
}
if ($GLOBALS["PHOTOGALLERY_VARS"]["arIBlock"][$arElement["IBLOCK_ID"]] === false)
{
return false;
}
$arElement["FILE"] = CFile::GetFileArray($arElement["PROPERTY_REAL_PICTURE_VALUE"]);
if ($arElement["FILE"])
$arElement["FILE"]["FILE_SIZE"] = doubleval($arElement["FILE"]["FILE_SIZE"]);
else
return false;
if (empty($GLOBALS["PHOTOGALLERY_VARS"]["arSections"][$arElement["IBLOCK_SECTION_ID"]]))
{
$db_res = CIBlockSection::GetList(
array(),
array("ID" => $arElement["IBLOCK_SECTION_ID"]),
false,
array("ID", "NAME", "CREATED_BY", "IBLOCK_SECTION_ID", "RIGHT_MARGIN", "LEFT_MARGIN"));
$GLOBALS["PHOTOGALLERY_VARS"]["arSections"][$arElement["IBLOCK_SECTION_ID"]] = $db_res->Fetch();
}
$arSection = $GLOBALS["PHOTOGALLERY_VARS"]["arSections"][$arElement["IBLOCK_SECTION_ID"]];
$iGalleryID = 0;
if (!empty($GLOBALS["PHOTOGALLERY_VARS"]["arGalleriesID"][$arSection["ID"]]))
{
$iGalleryID = $GLOBALS["PHOTOGALLERY_VARS"]["arGalleriesID"][$arSection["ID"]];
}
elseif (!empty($GLOBALS["PHOTOGALLERY_VARS"]["arGalleries"]))
{
foreach ($GLOBALS["PHOTOGALLERY_VARS"]["arGalleries"] as $id => $val)
{
if (doubleval($val["RIGHT_MARGIN"]) > doubleval($arSection["RIGHT_MARGIN"]) &&
doubleval($val["LEFT_MARGIN"]) < doubleval($arSection["LEFT_MARGIN"]))
{
$iGalleryID = $GLOBALS["PHOTOGALLERY_VARS"]["arGalleriesID"][$arSection["ID"]] = $id;
break;
}
}
}
if ($iGalleryID <= 0)
{
$arFilter = array(
"IBLOCK_ID" => $arElement["IBLOCK_ID"],
"SECTION_ID" => 0);
if (doubleval($arSection["IBLOCK_SECTION_ID"]) > 0)
{
$arFilter += array(
"!LEFT_MARGIN" => $arSection["LEFT_MARGIN"],
"!RIGHT_MARGIN" => $arSection["RIGHT_MARGIN"],
"!ID" => $arSection["ID"]);
}
else
{
$arFilter["ID"] = $arSection["ID"];
}
$db_res = CIBlockSection::GetList(
array(),
$arFilter,
false,
array("ID", "NAME", "CREATED_BY", "RIGHT_MARGIN", "LEFT_MARGIN", "UF_GALLERY_SIZE", "UF_GALLERY_RECALC"));
if ($db_res && $res = $db_res->Fetch())
{
$GLOBALS["PHOTOGALLERY_VARS"]["arGalleries"][$res["ID"]] = $res;
$iGalleryID = $GLOBALS["PHOTOGALLERY_VARS"]["arGalleriesID"][$arSection["ID"]] = intVal($res["ID"]);
}
}
$arGallery = array();
$iGalleryID = intVal($iGalleryID);
if ($iGalleryID > 0)
{
if (empty($GLOBALS["PHOTOGALLERY_VARS"]["arGalleries"][$iGalleryID]))
{
$db_res = CIBlockSection::GetList(array(), array("ID" => $iGalleryID), false,
array("ID", "NAME", "CREATED_BY", "RIGHT_MARGIN", "LEFT_MARGIN", "UF_GALLERY_SIZE", "UF_GALLERY_RECALC"));
$GLOBALS["PHOTOGALLERY_VARS"]["arGalleries"][$iGalleryID] = $db_res->Fetch();
}
$arGallery = $GLOBALS["PHOTOGALLERY_VARS"]["arGalleries"][$iGalleryID];
}
return true;
}
function OnBeforeIBlockElementDelete($ID)
{
$ID = doubleval($ID);
if (CPhotogalleryElement::CheckElement($ID, $arElement, $arSection, $arGallery))
{
$arGallery["UF_GALLERY_SIZE"] = (doubleval($arGallery["UF_GALLERY_SIZE"]) - $arElement["FILE"]["FILE_SIZE"]);
$GLOBALS["UF_GALLERY_SIZE"] = ($arGallery["UF_GALLERY_SIZE"] <= 0 ? 0 : $arGallery["UF_GALLERY_SIZE"]);
$GLOBALS["PHOTOGALLERY_VARS"]["arGalleries"][$arGallery["ID"]]["UF_GALLERY_SIZE"] = $GLOBALS["UF_GALLERY_SIZE"];
$arFields = array(
"IBLOCK_ID" => $arElement["IBLOCK_ID"],
"UF_GALLERY_SIZE" => $GLOBALS["UF_GALLERY_SIZE"]);
$bs = new CIBlockSection;
$GLOBALS["USER_FIELD_MANAGER"]->EditFormAddFields("IBLOCK_".$arElement["IBLOCK_ID"]."_SECTION", $arFields);
$res = $bs->Update($arGallery["ID"], $arFields, false, false);
}
return true;
}
function OnRecalcGalleries($ID, $INDEX)
{
$ID = doubleval($ID);
if (CPhotogalleryElement::CheckElement($ID, $arElement, $arSection, $arGallery))
{
$arFields = array(
"IBLOCK_ID" => $arElement["IBLOCK_ID"],
"UF_GALLERY_SIZE" => $arGallery["UF_GALLERY_SIZE"]);
if (doubleval($arGallery["UF_GALLERY_SIZE"]) > 0 && $arGallery["UF_GALLERY_RECALC"] != $INDEX)
{
$arGallery["UF_GALLERY_SIZE"] = 0;
$GLOBALS["UF_GALLERY_RECALC"] = $arFields["UF_GALLERY_RECALC"] = $INDEX;
}
$arFields["UF_GALLERY_SIZE"] = $GLOBALS["UF_GALLERY_SIZE"] = $GLOBALS["PHOTOGALLERY_VARS"]["arGalleries"][$arGallery["ID"]]["UF_GALLERY_SIZE"] =(doubleval($arGallery["UF_GALLERY_SIZE"]) + $arElement["FILE"]["FILE_SIZE"]);
$bs = new CIBlockSection;
$GLOBALS["USER_FIELD_MANAGER"]->EditFormAddFields("IBLOCK_".$arElement["IBLOCK_ID"]."_SECTION", $arFields);
$res = $bs->Update($arGallery["ID"], $arFields, false, false);
}
return true;
}
function OnAfterRecalcGalleries($IBLOCK_ID, $INDEX)
{
if ($IBLOCK_ID <= 0)
return false;
$arFilters = array(
array("IBLOCK_ID" => $IBLOCK_ID, "SECTION_ID" => 0, ">UF_GALLERY_SIZE" => 0, "!UF_GALLERY_RECALC" => $INDEX.""),
array("IBLOCK_ID" => $IBLOCK_ID, "SECTION_ID" => 0, ">UF_GALLERY_SIZE" => 0, "UF_GALLERY_RECALC" => false));
$bs = new CIBlockSection;
foreach ($arFilters as $arFilter)
{
$db_res = CIBlockSection::GetList(array("ID" => "ASC"), $arFilter);
if ($db_res && $res = $db_res->Fetch())
{
do
{
$arFields = array(
"IBLOCK_ID" => $IBLOCK_ID,
"UF_GALLERY_SIZE" => 0);
$GLOBALS["UF_GALLERY_SIZE"] = 0;
$GLOBALS["USER_FIELD_MANAGER"]->EditFormAddFields("IBLOCK_".$IBLOCK_ID."_SECTION", $arFields);
$bs->Update($res["ID"], $arFields, false, false);
} while ($res = $db_res->Fetch());
}
}
}
function OnAfterIBlockElementAdd($res)
{
$ID = doubleval($res["ID"]);
if (CPhotogalleryElement::CheckElement($ID, $arElement, $arSection, $arGallery))
{
$GLOBALS["UF_GALLERY_SIZE"] = $GLOBALS["PHOTOGALLERY_VARS"]["arGalleries"][$arGallery["ID"]]["UF_GALLERY_SIZE"] = (doubleval($arGallery["UF_GALLERY_SIZE"]) + $arElement["FILE"]["FILE_SIZE"]);
$arFields = array(
"IBLOCK_ID" => $arElement["IBLOCK_ID"],
"UF_GALLERY_SIZE" => $GLOBALS["UF_GALLERY_SIZE"]);
$bs = new CIBlockSection;
$GLOBALS["USER_FIELD_MANAGER"]->EditFormAddFields("IBLOCK_".$arElement["IBLOCK_ID"]."_SECTION", $arFields);
$res = $bs->Update($arGallery["ID"], $arFields, false, false);
}
return true;
}
}
?>