%PDF- %PDF-
Direktori : /proc/self/root/home/bitrix/www/bitrix/components/bitrix/photogallery.detail.edit/ |
Current File : //proc/self/root/home/bitrix/www/bitrix/components/bitrix/photogallery.detail.edit/component.php |
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die(); if (!CModule::IncludeModule("photogallery")) return ShowError(GetMessage("P_MODULE_IS_NOT_INSTALLED")); elseif (!CModule::IncludeModule("iblock")) return ShowError(GetMessage("IBLOCK_MODULE_NOT_INSTALLED")); elseif ($arParams["BEHAVIOUR"] == "USER" && empty($arParams["USER_ALIAS"])) return ShowError(GetMessage("P_GALLERY_EMPTY")); // ************************************************************************************** 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["IS_SOCNET"] = ($arParams["IS_SOCNET"] == "Y" ? "Y" : "N"); $bParseTags = CModule::IncludeModule("search"); $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"] = htmlspecialcharsbx($arParams["~".strToUpper($URL)."_URL"]); } //***************** ADDITTIONAL ************************************/ $arParams["SHOW_TITLE"] = ($arParams["SHOW_TITLE"] == "N" ? "N" : "Y"); // Used to hide element name in the form $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" && $arParams["~RESTART_BUFFER"] !== false) $GLOBALS['APPLICATION']->RestartBuffer(); $arResult["ELEMENT"] = array(); $arResult["ERROR_MESSAGE"] = ""; $arParams["PERMISSION"] = "D"; $arParams["ABS_PERMISSION"] = "D"; /************** 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_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; } $arResult["ELEMENT"] = $obElement->GetFields(); $arResult["ELEMENT"]["PROPERTIES"] = $obElement->GetProperties(); if ($arResult["ELEMENT"]["DETAIL_TEXT"] == "" && $arResult["ELEMENT"]["NAME"] != "" && !preg_match('/\d{3,}/', $arResult["ELEMENT"]["NAME"])) { $arResult["ELEMENT"]["~NAME"] = preg_replace(array('/\.jpg/i','/\.jpeg/i','/\.gif/i','/\.png/i','/\.bmp/i'), '', $arResult["ELEMENT"]["~NAME"]); $arResult["ELEMENT"]["~DETAIL_TEXT"] = $arResult["ELEMENT"]["~NAME"]; $arResult["ELEMENT"]["DETAIL_TEXT"] = htmlspecialcharsbx($arResult["ELEMENT"]["~DETAIL_TEXT"]); } 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; } /************** 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"], "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") { @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."); } else { $events = GetModuleEvents("photogallery", "OnAfterPhotoDrop"); $arEventFields = array("ID" => $arParams["ELEMENT_ID"], "SECTION_ID" => $arParams["SECTION_ID"]); while ($arEvent = $events->Fetch()) ExecuteModuleEventEx($arEvent, array($arEventFields, $arParams)); $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"], "PREVIEW_TEXT" => $_REQUEST["DESCRIPTION"], "DETAIL_TEXT" => $_REQUEST["DESCRIPTION"], "DATE_CREATE" => $_REQUEST["DATE_CREATE"], "DETAIL_TEXT_TYPE" => "text", "PREVIEW_TEXT_TYPE" => "text" ); if ($arParams['SHOW_TITLE'] == "Y") $arFields["NAME"] = $_REQUEST["TITLE"]; 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"]; } $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"); } 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"); } if ($arParams["SECTION_ID"] != $_REQUEST["TO_SECTION_ID"]) { CIBlockElement::RecalcSections($arParams["SECTION_ID"]); CIBlockElement::RecalcSections($_REQUEST["TO_SECTION_ID"]); } if ($arParams["AJAX_CALL"] != "Y") {} elseif ($arParams["SECTION_ID"] != $_REQUEST["TO_SECTION_ID"]) { $result = array( "SECTION_ID" => intVal($_REQUEST["TO_SECTION_ID"]), "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", "PROPERTY_PUBLIC_ELEMENT", "PROPERTY_APPROVE_ELEMENT"); $db_res = CIBlockElement::GetList(array(), array("ID" => $arParams["ELEMENT_ID"]), false, false, $arSelect); if ($db_res && $res = $db_res->GetNext()) { $result = array( "SECTION_ID" => intVal($_REQUEST["TO_SECTION_ID"]), "TAGS" => $res["TAGS"], "TITLE" => $res["NAME"], "DESCRIPTION" => $res["DETAIL_TEXT"], "_DESCRIPTION" => $res["~DETAIL_TEXT"], "PUBLIC" => $res["PROPERTY_PUBLIC_ELEMENT_VALUE"], "APPROVED" => $res["PROPERTY_APPROVE_ELEMENT_VALUE"], "DATE" => $res["DATE_CREATE"], "DATE_STR" => FormatDate('x', MakeTimeStamp($res["DATE_CREATE"], CSite::GetDateFormat())) ); //TAGS $result["TAGS_LIST"] = array(); if (!empty($result["TAGS"]) && $bParseTags) { $ar = tags_prepare($result["TAGS"], SITE_ID); if (!empty($ar)) { foreach ($ar as $name => $tags) { $arr = array( "TAG_NAME" => $tags, "TAG_URL" => CComponentEngine::MakePathFromTemplate($arParams["~SEARCH_URL"], array()) ); $arr["TAG_URL"] .= (strpos($arr["TAG_URL"], "?") === false ? "?" : "&")."tags=".$tags; $result["TAGS_LIST"][] = $arr; } } } } else { $result = array( "SECTION_ID" => intVal($_REQUEST["TO_SECTION_ID"]), "TAGS" => htmlspecialcharsEx($_REQUEST["TAGS"]), "TITLE" => htmlspecialcharsEx($_REQUEST["TITLE"]), "DESCRIPTION" => htmlspecialcharsEx($_REQUEST["DESCRIPTION"]), "_DESCRIPTION" => htmlspecialcharsEx($_REQUEST["DESCRIPTION"]), "DATE_STR" => FormatDate('x', MakeTimeStamp($_REQUEST["DATE_CREATE"], CSite::GetDateFormat())) ); } } $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)) { PClearComponentCacheEx($arParams["IBLOCK_ID"], array(0, $_REQUEST["TO_SECTION_ID"], $arParams["SECTION_ID"])); if ($arParams["AJAX_CALL"] == "Y") { if ($arParams["~RESTART_BUFFER"] !== false) $APPLICATION->RestartBuffer(); $result["DATE"] = PhotoDateFormat($arParams["DATE_TIME_FORMAT"], MakeTimeStamp($result["DATE"], CSite::GetDateFormat())); echo CUtil::PhpToJSObject($result); if ($arParams["~RESTART_BUFFER"] !== false) die(); return; } 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) { if ($arParams['SHOW_TITLE'] == "Y") $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 ********************************************************************/ CUtil::InitJSCore(array('window', 'ajax')); $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 ********************************************************************/ ?>