Your IP : 18.221.195.210


Current Path : /home/bitrix/ext_www/crm.klimatlend.ua/bitrix/modules/photogallery/classes/general/
Upload File :
Current File : /home/bitrix/ext_www/crm.klimatlend.ua/bitrix/modules/photogallery/classes/general/element.php

<?
$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;
	}
}
?>