%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/components/bitrix/photogallery.detail.comment/ |
| Current File : //home/bitrix/www/bitrix/components/bitrix/photogallery.detail.comment/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 (!IsModuleInstalled("iblock"))
return ShowError(GetMessage("IBLOCK_MODULE_NOT_INSTALLED"));
/********************************************************************
Input params
********************************************************************/
//***************** BASE *******************************************/
$arParams["IBLOCK_TYPE"] = trim($arParams["IBLOCK_TYPE"]);
$arParams["IBLOCK_ID"] = intval($arParams["IBLOCK_ID"]);
$arParams["ELEMENT_ID"] = intVal($arParams["ELEMENT_ID"]);
$arParams["COMMENTS_TYPE"] = ($arParams["COMMENTS_TYPE"] == "forum" ? "forum" : "blog");
$arParams["IS_SOCNET"] = ($arParams["IS_SOCNET"] == "Y" ? "Y" : "N");
// For blog
$arParams["BLOG_URL"] = trim($arParams["BLOG_URL"]);
//***************** URL ********************************************/
$URL_NAME_DEFAULT = array("detail" => "PAGE_NAME=detail&SECTION_ID=#SECTION_ID#&ELEMENT_ID=#ELEMENT_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->GetCurPageParam($URL_VALUE, array("PAGE_NAME", "SECTION_ID", "ELEMENT_ID", "ACTION", "AJAX_CALL"));
$arParams["~".strToUpper($URL)."_URL"] = $arParams[strToUpper($URL)."_URL"];
$arParams[strToUpper($URL)."_URL"] = htmlspecialcharsbx($arParams["~".strToUpper($URL)."_URL"]);
}
$arParams["DETAIL_URL"] = CComponentEngine::MakePathFromTemplate($arParams["DETAIL_URL"], array("USER_ALIAS" => isset($arParams["USER_ALIAS"]) ? $arParams["USER_ALIAS"] : 'empty'));
//***************** CACHE ******************************************/
if ($arParams["CACHE_TYPE"] == "Y" || ($arParams["CACHE_TYPE"] == "A" && COption::GetOptionString("main", "component_cache_on", "Y") == "Y"))
$arParams["CACHE_TIME"] = intval($arParams["CACHE_TIME"]);
else
$arParams["CACHE_TIME"] = 0;
if (intVal($_REQUEST['ELEMENT_ID']) > 0 && $_REQUEST['save_photo_comment'] == 'Y')
PClearComponentCacheEx($arParams["IBLOCK_ID"], array(0, $arParams["SECTION_ID"]));
/********************************************************************
/Input params
********************************************************************/
/********************************************************************
Default values
********************************************************************/
if (!IsModuleInstalled($arParams["COMMENTS_TYPE"]))
return ShowError("Module is not installed (".$arParams["COMMENTS_TYPE"].")");
elseif ($arParams["COMMENTS_TYPE"] == "blog" && empty($arParams["BLOG_URL"]))
return ShowError(GetMessage("P_EMPTY_BLOG_URL"));
elseif ($arParams["ELEMENT_ID"] <= 0)
return;
$cache_path = str_replace(array(":", "//"), "/", "/".SITE_ID."/".$componentName."/".$arParams["IBLOCK_ID"]);
$arParams['NAME_TEMPLATE'] = empty($arParams['NAME_TEMPLATE']) ? CSite::GetNameFormat(false) : str_replace(array("#NOBR#","#/NOBR#"), array("",""), $arParams["NAME_TEMPLATE"]);
/********************************************************************
/Default values
********************************************************************/
if ($arParams["COMMENTS_TYPE"] == "forum")
{
if ($arParams["IS_SOCNET"] == "Y")
{
$cache = new CPHPCache;
$cache_id = serialize(
array(
"TYPE" => $arParams["COMMENTS_TYPE"],
"ELEMENT_ID" => $arParams["ELEMENT_ID"],
"USER_ALIAS" => $arParams["USER_ALIAS"]
)
);
if ($arParams["CACHE_TIME"] > 0 && $cache->InitCache(3600*24, $cache_id, $cache_path))
{
$res = $cache->GetVars();
if (intval($res["FORUM_ID"]) > 0)
$arParams["FORUM_ID"] = $res["FORUM_ID"];
}
else
{
CModule::IncludeModule("iblock");
//SELECT
$arSelect = array(
"ID",
"IBLOCK_ID",
"PROPERTY_FORUM_TOPIC_ID",
);
//WHERE
$arFilter = array(
"ID" => $arParams["ELEMENT_ID"],
"IBLOCK_ID" => $arParams["IBLOCK_ID"],
);
//EXECUTE
$rsElement = CIBlockElement::GetList(array(), $arFilter, false, false, $arSelect);
if ($obElement = $rsElement->GetNextElement())
{
$arElement = $obElement->GetFields();
if (intval($arElement["PROPERTY_FORUM_TOPIC_ID_VALUE"]) > 0 && CModule::IncludeModule("forum"))
if ($arForumTopic = CForumTopic::GetByID($arElement["PROPERTY_FORUM_TOPIC_ID_VALUE"]))
$arParams["FORUM_ID"] = $arForumTopic["FORUM_ID"];
}
$cache->StartDataCache(3600*24, $cache_id, $cache_path);
$cache->EndDataCache(array("FORUM_ID" => $arParams["FORUM_ID"]));
}
}
if (class_exists('CSocNetPhotoCommentEvent'))
{
$obPhotoCommentEventHandler = new CSocNetPhotoCommentEvent;
$obPhotoCommentEventHandler->SetVars($arParams, $arResult);
if (method_exists($obPhotoCommentEventHandler, "OnAfterPhotoCommentAddForum"))
AddEventHandler("forum", "onAfterMessageAdd", array($obPhotoCommentEventHandler, "OnAfterPhotoCommentAddForum"));
}
}
elseif ($arParams["COMMENTS_TYPE"] == "blog")
{
/*************************************************************************
Caching
*************************************************************************/
/*************************************************************************
Before caching
*************************************************************************/
// Clear cache.
if (isset($_REQUEST["parentId"]) || $_REQUEST["save_product_review"] == "Y" || isset($_REQUEST["delete_comment_id"]))
PClearComponentCacheEx($arParams["IBLOCK_ID"], array(0, $arParams["SECTION_ID"]), array($arParams["USER_ALIAS"]));
/*************************************************************************
/Before caching
*************************************************************************/
$arResult["ELEMENT"] = array();
$cache = new CPHPCache;
$cache_id = serialize(
array(
"TYPE" => $arParams["COMMENTS_TYPE"],
"USER" => $USER->GetGroups(),
"ELEMENT_ID" => $arParams["ELEMENT_ID"],
"USER_ALIAS" => $arParams["USER_ALIAS"]
)
);
if(($tzOffset = CTimeZone::GetOffset()) <> 0)
$cache_id .= "_".$tzOffset;
if ($arParams["CACHE_TIME"] > 0 && $cache->InitCache($arParams["CACHE_TIME"], $cache_id, $cache_path))
{
$res = $cache->GetVars();
$arResult["ELEMENT"] = $res["ELEMENT"];
$arResult["COMMENT_ID"] = $res["COMMENT_ID"];
}
else
{
CModule::IncludeModule("iblock");
CModule::IncludeModule("blog");
//SELECT
$arSelect = array(
"ID",
"CODE",
"IBLOCK_ID",
"IBLOCK_SECTION_ID",
"SECTION_PAGE_URL",
"NAME",
"ACTIVE",
"DETAIL_PICTURE",
"PREVIEW_PICTURE",
"PREVIEW_TEXT",
"DETAIL_TEXT",
"DETAIL_PAGE_URL",
"PREVIEW_TEXT_TYPE",
"DETAIL_TEXT_TYPE",
"TAGS",
"DATE_CREATE",
"CREATED_BY",
"PROPERTY_REAL_PICTURE",
"PROPERTY_BLOG_POST_ID",
"PROPERTY_BLOG_COMMENTS_CNT"
);
//WHERE
$arFilter = array(
"ID" => $arParams["ELEMENT_ID"],
"IBLOCK_ACTIVE" => "Y",
"IBLOCK_ID" => $arParams["IBLOCK_ID"],
"ACTIVE_DATE" => "Y",
"CHECK_PERMISSIONS" => "Y"
);
//EXECUTE
$rsElement = CIBlockElement::GetList(array(), $arFilter, false, false, $arSelect);
if (!$obElement = $rsElement->GetNextElement())
{
ShowError(GetMessage("PHOTO_ELEMENT_NOT_FOUND"));
@define("ERROR_404", "Y");
CHTTP::SetStatus("404 Not Found");
return false;
}
$arResult["ELEMENT"] = $obElement->GetFields();
if ($arResult["ELEMENT"]["ACTIVE"] != "Y")
return false;
$arResult["ELEMENT"]["PROPETIES"] = array();
foreach ($arResult["ELEMENT"] as $key => $val)
{
if ((substr($key, 0, 9) == "PROPERTY_" && substr($key, -6, 6) == "_VALUE"))
$arResult["ELEMENT"]["PROPERTIES"][substr($key, 9, intVal(strLen($key)-15))] = array("VALUE" => $val);
}
$arGallery = array("CODE" => "");
if (strpos($arParams["~DETAIL_URL"], "#USER_ALIAS#") !== false)
{
CModule::IncludeModule("iblock");
$arFilter = array(
"IBLOCK_ID" => $arParams["IBLOCK_ID"],
"ID" => $arResult["ELEMENT"]["IBLOCK_SECTION_ID"]);
$db_res = CIBlockSection::GetList(
array(),
$arFilter,
false,
array("ID", "ACTIVE", "CODE", "RIGHT_MARGIN", "LEFT_MARGIN")
);
if ($db_res && $arSection = $db_res->Fetch())
{
$db_res = CIBlockSection::GetList(
array(),
array(
"IBLOCK_ID" => $arSection["IBLOCK_ID"],
"SECTION_ID" => 0,
"!LEFT_MARGIN" => $arSection["LEFT_MARGIN"],
"!RIGHT_MARGIN" => $arSection["RIGHT_MARGIN"],
"!ID" => $arSection["ID"]),
false,
array("ID", "CODE", "RIGHT_MARGIN", "LEFT_MARGIN"));
if ($db_res)
{
$arGallery = $db_res->Fetch();
}
}
}
$arResult["ELEMENT"]["~DETAIL_PAGE_URL"] = CComponentEngine::MakePathFromTemplate($arParams["~DETAIL_URL"], array("USER_ALIAS" => $arGallery["CODE"],"SECTION_ID" => $arResult["ELEMENT"]["IBLOCK_SECTION_ID"], "ELEMENT_ID" =>$arResult["ELEMENT"]["ID"]));
$arResult["ELEMENT"]["DETAIL_PAGE_URL"] = htmlspecialcharsbx($arResult["ELEMENT"]["~DETAIL_PAGE_URL"]);
$obProperty = false;
$iCommentID = 0;
/************** BLOG *****************************************************/
$obProperty = new CIBlockProperty;
if (is_set($arResult["ELEMENT"]["PROPERTIES"], "BLOG_POST_ID"))
{
$iCommentID = intVal($arResult["ELEMENT"]["PROPERTIES"]["BLOG_POST_ID"]["VALUE"]);
}
else
{
$res = $obProperty->Add(array(
"IBLOCK_ID" => $arParams["IBLOCK_ID"],
"ACTIVE" => "Y",
"PROPERTY_TYPE" => "N",
"MULTIPLE" => "N",
"NAME" => (strLen(GetMessage("P_BLOG_POST_ID")) <= 0 ? "BLOG_POST_ID" : GetMessage("P_BLOG_POST_ID")),
"CODE" => "BLOG_POST_ID"
)
);
}
if (!is_set($arResult["ELEMENT"], "PROPERTY_BLOG_COMMENTS_CNT_VALUE"))
{
$res = $obProperty->Add(array(
"IBLOCK_ID" => $arParams["IBLOCK_ID"],
"ACTIVE" => "Y",
"PROPERTY_TYPE" => "N",
"MULTIPLE" => "N",
"NAME" => (strLen(GetMessage("P_BLOG_COMMENTS_CNT")) <= 0 ? "P_BLOG_COMMENTS_CNT" : GetMessage("P_BLOG_COMMENTS_CNT")),
"CODE" => "BLOG_COMMENTS_CNT"
)
);
}
if ($iCommentID > 0)
{
$arPost = CBlogPost::GetByID($iCommentID);
if (!$arPost)
$iCommentID = 0;
elseif (intVal($arPost["NUM_COMMENTS"]) > 0 && $arPost["NUM_COMMENTS"] != $arResult["ELEMENT"]["PROPERTIES"]["BLOG_COMMENTS_CNT"]["VALUE"])
CIBlockElement::SetPropertyValues($arParams["ELEMENT_ID"], $arParams["IBLOCK_ID"], intVal($arPost["NUM_COMMENTS"]), "BLOG_COMMENTS_CNT");
}
if (!$iCommentID && isset($_REQUEST["parentId"]))
{
$arCategory = array();
$arBlog = CBlog::GetByUrl($arParams["BLOG_URL"]);
if (!empty($arResult["ELEMENT"]["TAGS"]))
{
$arCategoryVal = explode(",", $arResult["ELEMENT"]["TAGS"]);
foreach($arCategoryVal as $k => $v)
{
if ($id = CBlogCategory::Add(array("BLOG_ID"=>$arBlog["ID"],"NAME"=>$v)))
$arCategory[] = $id;
}
}
$arResult["ELEMENT"]["DETAIL_PICTURE"] = CFile::GetFileArray($arResult["ELEMENT"]["DETAIL_PICTURE"]);
$arResult["ELEMENT"]["REAL_PICTURE"] = CFile::GetFileArray($arResult["ELEMENT"]["PROPERTIES"]["REAL_PICTURE"]["VALUE"]);
$arFields=array(
"TITLE" => $arResult["ELEMENT"]["NAME"],
"DETAIL_TEXT" =>
"[IMG]http://".$_SERVER['HTTP_HOST'].$arResult["ELEMENT"]["DETAIL_PICTURE"]["SRC"]."[/IMG]\n".
"[URL=http://".$_SERVER['HTTP_HOST'].$arResult["ELEMENT"]["~DETAIL_PAGE_URL"]."]".$arResult["ELEMENT"]["NAME"]."[/URL]\n".
(!empty($arResult["ELEMENT"]["TAGS"]) ? $arResult["ELEMENT"]["TAGS"]."\n" : "").
$arResult["ELEMENT"]["~DETAIL_TEXT"]."\n".
"[URL=http://".$_SERVER['HTTP_HOST'].$arResult["ELEMENT"]["REAL_PICTURE"]["SRC"]."]".GetMessage("P_ORIGINAL")."[/URL]",
"CATEGORY_ID" => implode(",", $arCategory),
"PUBLISH_STATUS" => "P",
"PERMS_POST" => array(),
"PERMS_COMMENT" => array(),
"=DATE_CREATE" => $DB->GetNowFunction(),
"=DATE_PUBLISH" => $DB->GetNowFunction(),
"AUTHOR_ID" => (!empty($arResult["ELEMENT"]["CREATED_BY"]) ? $arResult["ELEMENT"]["CREATED_BY"] : 1),
"BLOG_ID" => $arBlog["ID"],
"ENABLE_TRACKBACK" => "N");
$newID = CBlogPost::Add($arFields);
if ($newID > 0)
{
foreach($arCategory as $key)
CBlogPostCategory::Add(Array("BLOG_ID" => $arBlog["ID"], "POST_ID" => $newID, "CATEGORY_ID"=>$key));
BXClearCache(True, "/".SITE_ID."/blog/".$arBlog["URL"]);
BXClearCache(True, "/".SITE_ID."/blog/last_messages/");
BXClearCache(True, "/".SITE_ID."/blog/groups/".$arBlog["GROUP_ID"]."/");
$iCommentID = $newID;
CIBlockElement::SetPropertyValues($arResult["ELEMENT"]["ID"], $arParams["IBLOCK_ID"], $iCommentID, "BLOG_POST_ID");
}
}
$arResult["COMMENT_ID"] = $iCommentID;
if ($arParams["CACHE_TIME"] > 0)
{
$cache->StartDataCache($arParams["CACHE_TIME"], $cache_id, $cache_path);
$cache->EndDataCache(array("COMMENT_ID" => $arResult["COMMENT_ID"], "ELEMENT" => $arResult["ELEMENT"]));
}
}
/*************************************************************************
/Caching
*************************************************************************/
if (class_exists('CSocNetPhotoCommentEvent'))
{
$obPhotoCommentEventHandler = new CSocNetPhotoCommentEvent;
$obPhotoCommentEventHandler->SetVars($arParams, $arResult);
if (method_exists($obPhotoCommentEventHandler, "OnAfterPhotoCommentAddBlog"))
AddEventHandler("blog", "OnCommentAdd", array($obPhotoCommentEventHandler, "OnAfterPhotoCommentAddBlog"));
if (method_exists($obPhotoCommentEventHandler, "OnAfterPhotoCommentDeleteBlog"))
AddEventHandler("blog", "OnCommentDelete", array($obPhotoCommentEventHandler, "OnAfterPhotoCommentDeleteBlog"));
}
}
CUtil::InitJSCore(array('window', 'ajax'));
$this->IncludeComponentTemplate();
?>