Your IP : 172.28.240.42


Current Path : /var/www/html/clients/wodo.e-nk.ru/bitrix/components/bitrix/photogallery.detail.edit/
Upload File :
Current File : /var/www/html/clients/wodo.e-nk.ru/bitrix/components/bitrix/photogallery.detail.edit/component.php

<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
if (!CModule::IncludeModule("photogallery")):
	ShowError(GetMessage("P_MODULE_IS_NOT_INSTALLED"));
	return 0;
elseif (!CModule::IncludeModule("iblock")):
	ShowError(GetMessage("IBLOCK_MODULE_NOT_INSTALLED"));
	return 0;
elseif ($arParams["BEHAVIOUR"] == "USER" && empty($arParams["USER_ALIAS"])):
	ShowError(GetMessage("P_GALLERY_EMPTY"));
	return 0;
endif;
// **************************************************************************************
if(!function_exists("__UnEscape"))
{
	function __UnEscape(&$item, $key)
	{
		if(is_array($item))
			array_walk($item, '__UnEscape');
		elseif (strpos($item, "%u") !== false)
			$item = $GLOBALS["APPLICATION"]->UnJSEscape($item);
		elseif (LANG_CHARSET != "UTF-8" && preg_match("/^.{1}/su", $item) == 1)
			$item = $GLOBALS["APPLICATION"]->ConvertCharset($item, "UTF-8", LANG_CHARSET);
	}
}
/********************************************************************
				Input params
********************************************************************/
//***************** BASE *******************************************/
	$arParams["IBLOCK_TYPE"] = trim(!empty($arParams["IBLOCK_TYPE"]) ? $arParams["IBLOCK_TYPE"] : $_REQUEST["IBLOCK_TYPE"]);
	$arParams["IBLOCK_ID"] = intVal(intVal($arParams["IBLOCK_ID"]) > 0 ? $arParams["IBLOCK_ID"] : $_REQUEST["IBLOCK_ID"]);
	$arParams["SECTION_ID"] = intVal(intVal($arParams["SECTION_ID"]) > 0 ? $arParams["SECTION_ID"] : $_REQUEST["SECTION_ID"]);
	$arParams["ELEMENT_ID"] = intVal(intVal($arParams["ELEMENT_ID"]) > 0 ? $arParams["ELEMENT_ID"] : $_REQUEST["ELEMENT_ID"]);
	$arParams["USER_ALIAS"] = preg_replace("/[^a-z0-9\_]+/is" , "", $arParams["USER_ALIAS"]);	
	$arParams["BEHAVIOUR"] = ($arParams["BEHAVIOUR"] == "USER" ? "USER" : "SIMPLE");
	$arParams["PERMISSION_EXTERNAL"] = trim($arParams["PERMISSION"]);
	$arParams["ACTION"] = trim(empty($arParams["ACTION"]) ? $_REQUEST["ACTION"] : $arParams["ACTION"]);
	$arParams["ACTION"] = strToUpper(empty($arParams["ACTION"]) ? "EDIT" : $arParams["ACTION"]);
	
	$arParams["AJAX_CALL"] = ($_REQUEST["AJAX_CALL"] == "Y" ? "Y" : "N");
//***************** URL ********************************************/
	$URL_NAME_DEFAULT = array(
		"gallery" => "PAGE_NAME=gallery&USER_ALIAS=#USER_ALIAS#",
		"detail" => "PAGE_NAME=detail".($arParams["BEHAVIOUR"] == "USER" ? "&USER_ALIAS=#USER_ALIAS#" : "" ).
			"&SECTION_ID=#SECTION_ID#&ELEMENT_ID=#ELEMENT_ID#",
		"section" => "PAGE_NAME=section".($arParams["BEHAVIOUR"] == "USER" ? "&USER_ALIAS=#USER_ALIAS#" : "" ).
			"&SECTION_ID=#SECTION_ID#");

	foreach ($URL_NAME_DEFAULT as $URL => $URL_VALUE)
	{
		$arParams[strToUpper($URL)."_URL"] = trim($arParams[strToUpper($URL)."_URL"]);
		if (empty($arParams[strToUpper($URL)."_URL"]))
			$arParams[strToUpper($URL)."_URL"] = $APPLICATION->GetCurPage()."?".$URL_VALUE;
		$arParams["~".strToUpper($URL)."_URL"] = $arParams[strToUpper($URL)."_URL"];
		$arParams[strToUpper($URL)."_URL"] = htmlspecialchars($arParams["~".strToUpper($URL)."_URL"]);
	}
//***************** ADDITTIONAL ************************************/
	$arParams["DATE_TIME_FORMAT"] = trim($arParams["DATE_TIME_FORMAT"]);
	if(strlen($arParams["DATE_TIME_FORMAT"])<=0)
		$arParams["DATE_TIME_FORMAT"] = $DB->DateFormatToPHP(CSite::GetDateFormat("FULL"));
	$arParams["SET_STATUS_404"] = ($arParams["SET_STATUS_404"] == "Y" ? "Y" : "N");
//***************** STANDART ***************************************/
	$arParams["SET_TITLE"] = ($arParams["SET_TITLE"] == "N" ? "N" : "Y"); //Turn on by default
	$arParams["SET_NAV_CHAIN"] = ($arParams["SET_NAV_CHAIN"] == "N" ? "N" : "Y"); //Turn on by default
	$arParams["DISPLAY_PANEL"] = ($arParams["DISPLAY_PANEL"] == "Y" ? "Y" : "N"); //Turn off by default
/********************************************************************
				/Input params
********************************************************************/

/********************************************************************
				Default values
********************************************************************/
	$strWarning = "";
	$bVarsFromForm = false;
	if ($arParams["AJAX_CALL"] == "Y")
	{
		$GLOBALS['APPLICATION']->RestartBuffer();
	}
	
	$arResult["ELEMENT"] = array();
	$arResult["ERROR_MESSAGE"] = "";
	$arParams["PERMISSION"] = "D";
	$arParams["ABS_PERMISSION"] = "D";

	$cache = new CPHPCache;
	$cache_path_main = str_replace(array(":", "//"), "/", "/".SITE_ID."/".$componentName."/".$arParams["IBLOCK_ID"]."/");
/************** ELEMENT ********************************************/
//SELECT
$arSelect = array(
	"ID",
	"IBLOCK_ID",
	"IBLOCK_SECTION_ID",
	"NAME",
	"ACTIVE", 
	"PREVIEW_TEXT",
	"DETAIL_TEXT",
	"PREVIEW_TEXT_TYPE",
	"DETAIL_TEXT_TYPE",
	"TAGS",
	"DATE_CREATE",
	"CREATED_BY",
	"PROPERTY_REAL_PICTURE",
	"PROPERTY_PUBLIC_ELEMENT",
	"PROPERTY_APPROVE_ELEMENT");
//WHERE
$arFilter = array(
	"ID" => $arParams["ELEMENT_ID"],
	"IBLOCK_ACTIVE" => "Y",
	"IBLOCK_ID" => $arParams["IBLOCK_ID"],
	"CHECK_PERMISSIONS" => "Y",
	"SECTION_ID" => $arParams["SECTION_ID"]);

//EXECUTE
$rsElement = CIBlockElement::GetList(array(), $arFilter, false, false, $arSelect);
$obElement = $rsElement->GetNextElement();
if (empty($obElement)):
	ShowError(GetMessage("PHOTO_ELEMENT_NOT_FOUND"));
	if ($arParams["SET_STATUS_404"] == "Y")
		CHTTP::SetStatus("404 Not Found");
	return 0;
endif;

$arResult["ELEMENT"] = $obElement->GetFields();
$arResult["ELEMENT"]["PROPERTIES"] = $obElement->GetProperties();

if ($arParams["SECTION_ID"] != $arResult["ELEMENT"]["IBLOCK_SECTION_ID"]):
	$url = CComponentEngine::MakePathFromTemplate($arParams["~DETAIL_URL"],
		array("USER_ALIAS" => $arParams["USER_ALIAS"], 
			"SECTION_ID" => $arResult["ELEMENT"]["IBLOCK_SECTION_ID"], 
			"ELEMENT_ID" => $arResult["ELEMENT"]["ID"]));
	LocalRedirect($url, false, "301 Moved Permanently");
	return false;
endif;
/************** GALLERY & SECTION & PERMISSION *********************/
$oPhoto = new CPGalleryInterface( 
	array(
		"IBlockID" => $arParams["IBLOCK_ID"], 
		"GalleryID" => $arParams["USER_ALIAS"], 
		"Permission" => $arParams["PERMISSION_EXTERNAL"]), 
	array(
		"cache_time" => $arParams["CACHE_TIME"], 
		"cache_path" => $cache_path_main, 
		"show_error" => "Y", 
		"set_404" => $arParams["SET_STATUS_404"]
		)
	);

if (!$oPhoto)
	return false;

$arResult["GALLERY"] = $oPhoto->Gallery;
$arParams["PERMISSION"] = $oPhoto->User["Permission"];
$arParams["ABS_PERMISSION"] = CIBlock::GetPermission($arParams["IBLOCK_ID"]);
$arResult["SECTION"] = array();
$res = $oPhoto->GetSection($arParams["SECTION_ID"], $arResult["SECTION"]);
if ($res > 400)
{
	return false;
}
elseif ($res == 301)
{
	ShowError(GetMessage("P_BAD_SECTION"));
	die(); 
	$url = CComponentEngine::MakePathFromTemplate(
		$arParams["~SECTION_URL"],
		array(
			"USER_ALIAS" => $arGallery["CODE"], 
			"SECTION_ID" => $arParams["SECTION_ID"]));
	LocalRedirect($url, false, "301 Moved Permanently");
	return false;
}
elseif ($arParams["PERMISSION"] < "U")
{
	ShowError(GetMessage("P_DENIED_ACCESS"));
	return false;
}

// URL`s
$arResult["~SECTION_LINK"] = CComponentEngine::MakePathFromTemplate($arParams["~SECTION_URL"], 
	array("USER_ALIAS" => $arParams["USER_ALIAS"], "SECTION_ID" => $arResult["SECTION"]["ID"]));
$arResult["~DETAIL_LINK"] = CComponentEngine::MakePathFromTemplate($arParams["~DETAIL_URL"], 
	array("USER_ALIAS" => $arParams["USER_ALIAS"], "SECTION_ID" => $arResult["SECTION"]["ID"], "ELEMENT_ID" => $arResult["ELEMENT"]["ID"]));
$arResult["DETAIL_LINK"] = htmlspecialcharsEx($arResult["~DETAIL_LINK"]);
/********************************************************************
				/Default values
********************************************************************/

/********************************************************************
				Action
********************************************************************/
if($_REQUEST["edit"] == "Y" || $arParams["ACTION"] == "DROP")
{
	array_walk($_REQUEST, '__UnEscape');
	$arError = array();
	$result = array();
	
	if(!(check_bitrix_sessid()))
	{
		$arError[] = array(
			"id" => "bad sessid", 
			"text" => GetMessage("IBLOCK_WRONG_SESSION"));
	}
	elseif ($arParams["ACTION"] == "DROP")
	{
		$arResult["ELEMENT"]["PROPERTIES"]["REAL_PICTURE"] = CFile::GetFileArray($arResult["ELEMENT"]["PROPERTIES"]["REAL_PICTURE"]);
		$iFileSize = intVal($arResult["ELEMENT"]["PROPERTIES"]["REAL_PICTURE"]["FILE_SIZE"]);
		@set_time_limit(0);
		$APPLICATION->ResetException();
		
		if (!CIBlockElement::Delete($arParams["ELEMENT_ID"]))
		{
			if ($ex = $APPLICATION->GetException()):
				$arError[] = array(
					"id" => "delete", 
					"text" => $ex->GetString());
			else:
				$arError[] = array(
					"id" => "delete", 
					"text" => "Element was droped with error.");
			endif;
		}
		else 
		{
			$result = array("url" => $arResult["~SECTION_LINK"]);
			$arResult["URL"] = $arResult["~SECTION_LINK"];
		}
	}
	else
	{
		$arFields = Array(
			"MODIFIED_BY" => $USER->GetID(),
			"IBLOCK_SECTION" => $_REQUEST["TO_SECTION_ID"],
			"TAGS" => $_REQUEST["TAGS"],
			"NAME" => $_REQUEST["TITLE"],
			"PREVIEW_TEXT" => $_REQUEST["DESCRIPTION"],
			"DETAIL_TEXT" => $_REQUEST["DESCRIPTION"],
			"DATE_CREATE" => $_REQUEST["DATE_CREATE"],
			"DETAIL_TEXT_TYPE" => "text",
			"PREVIEW_TEXT_TYPE" => "text");

		if ($arParams["BEHAVIOUR"] == "USER"):
			$_REQUEST["ACTIVE"] = ($_REQUEST["ACTIVE"] == "Y" ? "Y" : "N");
			if ($arParams["ABS_PERMISSION"] >= "U" && $arResult["ELEMENT"]["ACTIVE"] != $_REQUEST["ACTIVE"]):
				$arFields["ACTIVE"] = $_REQUEST["ACTIVE"];
			endif;
		endif;
		
		$bs = new CIBlockElement;
		$ID = $bs->Update($arParams["ELEMENT_ID"], $arFields);
		if ($ID <= 0)
		{
			$arError[] = array(
				"id" => "update", 
				"text" => $bs->LAST_ERROR);
		}
		else
		{
			$_REQUEST["PUBLIC_ELEMENT"] = ($_REQUEST["PUBLIC_ELEMENT"] == "Y" ? "Y" : "N");
			$_REQUEST["APPROVE_ELEMENT"] = ($_REQUEST["APPROVE_ELEMENT"] == "Y" ? "Y" : "N");
			
			if ($arParams["BEHAVIOUR"] == "USER"):
				if (is_set($arResult["ELEMENT"]["PROPERTIES"], "PUBLIC_ELEMENT") && 
					$arResult["ELEMENT"]["PROPERTIES"]["PUBLIC_ELEMENT"]["VALUE"] != $_REQUEST["PUBLIC_ELEMENT"]):
					CIBlockElement::SetPropertyValues($arParams["ELEMENT_ID"], $arParams["IBLOCK_ID"], $_REQUEST["PUBLIC_ELEMENT"], "PUBLIC_ELEMENT"); 
					if ($arParams["ABS_PERMISSION"] < "U" && $_REQUEST["PUBLIC_ELEMENT"] == "Y"):
						CIBlockElement::SetPropertyValues($arParams["ELEMENT_ID"], $arParams["IBLOCK_ID"], 'X', "APPROVE_ELEMENT"); 
					endif;
				endif;
				
				if ($arParams["ABS_PERMISSION"] >= "U" && is_set($arResult["ELEMENT"]["PROPERTIES"], "APPROVE_ELEMENT") && 
					$arResult["ELEMENT"]["PROPERTIES"]["APPROVE_ELEMENT"]["VALUE"] != $_REQUEST["APPROVE_ELEMENT"]):
					CIBlockElement::SetPropertyValues($arParams["ELEMENT_ID"], $arParams["IBLOCK_ID"], $_REQUEST["APPROVE_ELEMENT"], "APPROVE_ELEMENT"); 
				endif;
			endif;
			
			if ($arParams["SECTION_ID"] != $_REQUEST["TO_SECTION_ID"]):
				CIBlockElement::RecalcSections($arParams["SECTION_ID"]);
				CIBlockElement::RecalcSections($_REQUEST["TO_SECTION_ID"]);
			endif;
			
			if ($arParams["AJAX_CALL"] != "Y")
			{}
			elseif ($arParams["SECTION_ID"] != $_REQUEST["TO_SECTION_ID"])
			{
				$result = array(
					"url" => CComponentEngine::MakePathFromTemplate($arParams["~DETAIL_URL"], array("USER_ALIAS" => $arParams["USER_ALIAS"], 
						"SECTION_ID" => $_REQUEST["TO_SECTION_ID"], "ELEMENT_ID" => $arResult["ELEMENT"]["ID"])));
			}
			else 
			{
				$arSelect = array("ID", "NAME", "DETAIL_TEXT", "DETAIL_TEXT_TYPE", "TAGS", "DATE_CREATE", "CREATED_BY" );
				$db_res = CIBlockElement::GetList(array(), array("ID" => $arParams["ELEMENT_ID"]), false, false, $arSelect);
				if ($db_res && $res = $db_res->GetNext())
				{
					$result = array(
						"TAGS" => $res["TAGS"],
						"TITLE" => $res["NAME"],
						"DESCRIPTION" => $res["DETAIL_TEXT"],
						"DATE" => $res["DATE_CREATE"]);
				}
				else 
				{
					$result = array(
						"TAGS" => htmlspecialcharsEx($_REQUEST["TAGS"]),
						"TITLE" => htmlspecialcharsEx($_REQUEST["TITLE"]),
						"DESCRIPTION" => htmlspecialcharsEx($_REQUEST["DESCRIPTION"]),
						"DATE" => htmlspecialcharsEx($_REQUEST["DATE_CREATE"]));
				}
			}
			$arResult["URL"] = CComponentEngine::MakePathFromTemplate($arParams["~DETAIL_URL"], array("USER_ALIAS" => $arParams["USER_ALIAS"], 
				"SECTION_ID" => $_REQUEST["TO_SECTION_ID"], "ELEMENT_ID" => $arResult["ELEMENT"]["ID"]));
		}
	}
	
	if (empty($arError))
	{
			PClearComponentCache(array(
				"search.page",
				"search.tags.cloud", 
				"photogallery.detail/".$arParams["IBLOCK_ID"]."/detail/".$_REQUEST["TO_SECTION_ID"]."/", 
				"photogallery.detail/".$arParams["IBLOCK_ID"]."/detail/".$arResult["SECTION"]["ID"]."/", 
				"photogallery.detail.comment", 
//				"photogallery.detail.edit", 
				"photogallery.detail.list/".$arParams["IBLOCK_ID"]."/detaillist/0", 
				"photogallery.detail.list/".$arParams["IBLOCK_ID"]."/detaillist/".$_REQUEST["TO_SECTION_ID"], 
				"photogallery.detail.list/".$arParams["IBLOCK_ID"]."/detaillist/".$arResult["SECTION"]["ID"], 
//				"photogallery.gallery.edit", 
//				"photogallery.gallery.list", 
				"photogallery.section/".$arParams["IBLOCK_ID"]."/section".$arResult["SECTION"]["ID"], 
				"photogallery.section/".$arParams["IBLOCK_ID"]."/section".$arResult["SECTION"]["IBLOCK_SECTION_ID"], 
//				"photogallery.section.edit", 
//				"photogallery.section.edit.icon", 
				"photogallery.section.list/".$arParams["IBLOCK_ID"]."/section".$arResult["SECTION"]["ID"], 
				"photogallery.section.list/".$arParams["IBLOCK_ID"]."/sections".$arResult["SECTION"]["IBLOCK_SECTION_ID"], 
//				"photogallery.upload", 
//				"photogallery.user"
				));
		
		if ($arParams["AJAX_CALL"] == "Y")
		{
			$APPLICATION->RestartBuffer();
			$result["DATE"] = PhotoDateFormat($arParams["DATE_TIME_FORMAT"], MakeTimeStamp($result["DATE"], CSite::GetDateFormat()));
			?><?=CUtil::PhpToJSObject($result);?><?
			die();
		}
		else 
		{
			LocalRedirect($arResult["URL"]);
		}
	}
	else 
	{
		$bVarsFromForm = true;
		$e = new CAdminException($arError);
		$arResult["ERROR_MESSAGE"] = $e->GetString();
	}
}
elseif ($_REQUEST["edit"] == "cancel")
{
	LocalRedirect($arResult["~DETAIL_LINK"]);
}
/********************************************************************
				/Action
********************************************************************/

/********************************************************************
				Data
********************************************************************/
$arResult["ELEMENT"]["NAME"] = htmlspecialcharsEx($arResult["ELEMENT"]["~NAME"]);
$arResult["ELEMENT"]["DETAIL_TEXT"] = htmlspecialcharsEx($arResult["ELEMENT"]["~DETAIL_TEXT"]);
$arResult["ELEMENT"]["TAGS"] = htmlspecialcharsEx($arResult["ELEMENT"]["~TAGS"]);
if ($bVarsFromForm)
{
	$arResult["ELEMENT"]["NAME"] = htmlspecialcharsEx($_REQUEST["TITLE"]);
	$arResult["ELEMENT"]["DETAIL_TEXT"] = htmlspecialcharsEx($_REQUEST["DESCRIPTION"]);
	$arResult["ELEMENT"]["TAGS"] = htmlspecialcharsEx($_REQUEST["TAGS"]);
	$arResult["ELEMENT"]["IBLOCK_SECTION_ID"] = htmlspecialcharsEx($_REQUEST["TO_SECTION_ID"]);
	$arResult["ELEMENT"]["DATE_CREATE"] = htmlspecialcharsEx($_REQUEST["DATE"]);
}
	
/********************************************************************
				Sections list
********************************************************************/
$arResult["SECTION_LIST"] = array();
$arFilter = array(
	"ACTIVE" => "Y",
	"IBLOCK_ID" => $arParams["IBLOCK_ID"],
	"IBLOCK_ACTIVE" => "Y");
if ($arParams["BEHAVIOUR"] == "USER")
{
	$arFilter["!ID"] = $arResult["GALLERY"]["ID"];
	$arFilter["RIGHT_MARGIN"] = $arResult["GALLERY"]["RIGHT_MARGIN"];
	$arFilter["LEFT_MARGIN"] = $arResult["GALLERY"]["LEFT_MARGIN"];
}
$rsIBlockSectionList = CIBlockSection::GetTreeList($arFilter);
while ($arSection = $rsIBlockSectionList->GetNext())
{
	$len = ($arSection["DEPTH_LEVEL"] - 1); 
	$arSection["NAME"] = ($len > 0 ? str_repeat(" . ", $len) : "").$arSection["NAME"];
	$arResult["SECTION_LIST"][$arSection["ID"]] = $arSection["NAME"];
}
$arResult["I"] = array(
	"PERMISSION" => $arParams["PERMISSION"], 
	"ABS_PERMISSION" => $arParams["ABS_PERMISSION"]);
/********************************************************************
				/Data
********************************************************************/

$this->IncludeComponentTemplate();

/********************************************************************
				Standart
********************************************************************/
/************** Title **********************************************/
if ($arParams["SET_TITLE"] == "Y")
	$APPLICATION->SetTitle($arResult["ELEMENT"]["NAME"]);
/************** BreadCrumb *****************************************/
if ($arParams["SET_NAV_CHAIN"] == "Y")
{
	$bFounded = ($arParams["BEHAVIOUR"] != "USER");
	foreach($arResult["SECTION"]["PATH"] as $arPath)
	{
		if (!$bFounded):
			$bFounded = ($arResult["GALLERY"]["ID"] == $arPath["ID"]);
			continue;
		endif;
		
		$GLOBALS["APPLICATION"]->AddChainItem($arPath["NAME"], 
			CComponentEngine::MakePathFromTemplate($arParams["~SECTION_URL"], 
				array("USER_ALIAS" => $arParams["USER_ALIAS"], "SECTION_ID" => $arPath["ID"])));
	}
	$APPLICATION->AddChainItem($arResult["ELEMENT"]["NAME"], $arResult["~DETAIL_LINK"]);
}
/************** Admin Panel ****************************************/
// if($arParams["DISPLAY_PANEL"] == "Y" && $USER->IsAuthorized()):
	// CIBlock::ShowPanel($arParams["IBLOCK_ID"], 0, $arParams["SECTION_ID"], $arParams["IBLOCK_TYPE"], false, $this->GetName());
// endif;
/********************************************************************
				/Standart
********************************************************************/
?>