%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/components/bitrix/photogallery.gallery.list/ |
| Current File : /home/bitrix/www/bitrix/components/bitrix/photogallery.gallery.list/component.php |
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
if (!IsModuleInstalled("photogallery"))
return ShowError(GetMessage("P_MODULE_IS_NOT_INSTALLED"));
elseif (!IsModuleInstalled("iblock"))
return ShowError(GetMessage("IBLOCK_MODULE_NOT_INSTALLED"));
CPageOption::SetOptionString("main", "nav_page_in_session", "N");
/********************************************************************
Input params
********************************************************************/
/***************** BASE ********************************************/
$arParams["IBLOCK_TYPE"] = trim($arParams["IBLOCK_TYPE"]);
$arParams["IBLOCK_ID"] = intval($arParams["IBLOCK_ID"]);
$arParams["USER_ID"] = intVal(intVal($arParams["USER_ID"]) > 0 ? $arParams["USER_ID"] : $_REQUEST["USER_ID"]);
$arParams["PERMISSION_EXTERNAL"] = trim($arParams["PERMISSION"]);
$arParams["SORT_BY"] = (!empty($arParams["SORT_BY"]) ? $arParams["SORT_BY"] : "ID");
$arParams["SORT_ORD"] = ($arParams["SORT_ORD"] != "ASC" ? "DESC" : "ASC");
/***************** URL *********************************************/
$URL_NAME_DEFAULT = array(
"index" => "",
"gallery" => "PAGE_NAME=gallery&USER_ALIAS=#USER_ALIAS#",
"gallery_edit" => "PAGE_NAME=gallery_edit&USER_ALIAS=#USER_ALIAS#&ACTION=#ACTION#",
"section" => "PAGE_NAME=section&USER_ALIAS=#USER_ALIAS#&SECTION_ID=#SECTION_ID#",
"upload" => "PAGE_NAME=upload&USER_ALIAS=#USER_ALIAS#&SECTION_ID=#SECTION_ID#&ACTION=upload"
);
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"] = $GLOBALS["APPLICATION"]->GetCurPageParam($URL_VALUE,
array("PAGE_NAME", "USER_ALIAS", "GALLERY_ID", "ACTION", "AJAX_CALL", "USER_ID", "sessid", "save", "login", "order", "group_by"));
$arParams["~".strToUpper($URL)."_URL"] = $arParams[strToUpper($URL)."_URL"];
$arParams[strToUpper($URL)."_URL"] = htmlspecialcharsbx($arParams["~".strToUpper($URL)."_URL"]);
}
/***************** ADDITIONAL **************************************/
$arParams["ONLY_ONE_GALLERY"] = ($arParams["ONLY_ONE_GALLERY"] == "N" ? "N" : "Y");
$arParams["GALLERY_GROUPS"] = (is_array($arParams["GALLERY_GROUPS"]) ? $arParams["GALLERY_GROUPS"] : array());
$arParams["GALLERY_SIZE"] = intVal($arParams["GALLERY_SIZE"]);
$arParams["PAGE_ELEMENTS"] = intVal($arParams["PAGE_ELEMENTS"]);
$arParams["PAGE_NAVIGATION_TEMPLATE"] = trim($arParams["PAGE_NAVIGATION_TEMPLATE"]);
$arParams["PAGE_NAVIGATION_WINDOW"] = intVal(intVal($arParams["PAGE_NAVIGATION_WINDOW"]) > 0 ? $arParams["PAGE_NAVIGATION_WINDOW"] : 5);
$arParams["DATE_TIME_FORMAT"] = trim(empty($arParams["DATE_TIME_FORMAT"]) ? $GLOBALS["DB"]->DateFormatToPHP(CSite::GetDateFormat("FULL")) : $arParams["DATE_TIME_FORMAT"]);
$arParams["SHOW_PHOTO_USER"] = ($arParams["SHOW_PHOTO_USER"] == "Y" ? "Y" : "N");// hidden params for custom components
$arParams["GALLERY_AVATAR_SIZE"] = intVal(intVal($arParams["GALLERY_AVATAR_SIZE"]) > 0 ? $arParams["GALLERY_AVATAR_SIZE"] : 50);
$arParams["SECTION_SELECT_FIELDS"] = (is_array($arParams["SECTION_SELECT_FIELDS"]) ? $arParams["SECTION_SELECT_FIELDS"] : array());
$arParams["SECTION_FILTER"] = (is_array($arParams["SECTION_FILTER"]) ? $arParams["SECTION_FILTER"] : array()); // hidden params
$arParams["SET_STATUS_404"] = ($arParams["SET_STATUS_404"] == "Y" ? "Y" : "N");
/***************** STANDART ****************************************/
if(!isset($arParams["CACHE_TIME"]))
$arParams["CACHE_TIME"] = 3600;
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;
$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
********************************************************************/
$arResult["USER"] = array();
$arResult["USERS"] = array();
$arResult["GALLERIES"] = array();
/********************************************************************
USER Not from cache (!important)
********************************************************************/
if ($arParams["USER_ID"] > 0)
{
$db_res = CUser::GetByID($arParams["USER_ID"]);
if (!($db_res && $arResult["USER"] = $db_res->GetNext()))
{
ShowError(GetMessage("P_USER_NOT_FOUND"));
if ($arParams["SET_STATUS_404"] == "Y")
CHTTP::SetStatus("404 Not Found");
return 0;
}
else
{
$arResult["USER"]["SHOW_NAME"] = trim($arResult["USER"]["NAME"]." ".$arResult["USER"]["LAST_NAME"]);
if (empty($arResult["USER"]["SHOW_NAME"]))
$arResult["USER"]["SHOW_NAME"] = $arResult["USER"]["LOGIN"];
}
}
/********************************************************************
Main Data
********************************************************************/
$cache = new CPHPCache;
$cache_path = str_replace(array(":", "//"), "/", "/".SITE_ID."/".$componentName."/".$arParams["IBLOCK_ID"]);
/************** PERMISSION *****************************************/
$cache_id = "permission".serialize(array(
"USER_GROUP" => $GLOBALS["USER"]->GetGroups(),
"IBLOCK_ID" => $arParams["IBLOCK_ID"]
));
if(($tzOffset = CTimeZone::GetOffset()) <> 0)
$cache_id .= "_".$tzOffset;
if ($arParams["CACHE_TIME"] > 0 && $cache->InitCache($arParams["CACHE_TIME"], $cache_id, $cache_path))
{
$arParams["PERMISSION"] = $cache->GetVars();
}
else
{
CModule::IncludeModule("iblock");
$arParams["PERMISSION"] = CIBlock::GetPermission($arParams["IBLOCK_ID"]);
if ($arParams["CACHE_TIME"] > 0)
{
$cache->StartDataCache($arParams["CACHE_TIME"], $cache_id, $cache_path);
$cache->EndDataCache($arParams["PERMISSION"]);
}
}
$arParams["ABS_PERMISSION"] = $arParams["PERMISSION"];
$arParams["PERMISSION"] = (!empty($arParams["PERMISSION_EXTERNAL"]) ? $arParams["PERMISSION_EXTERNAL"] : $arParams["PERMISSION"]);
if ("R" <= $arParams["PERMISSION"] && $arParams["PERMISSION"] < "W" && $arParams["BEHAVIOUR"] == "USER" && $arParams["USER_ID"] == $GLOBALS["USER"]->GetId())
$arParams["PERMISSION"] = "W";
elseif ($arParams["PERMISSION"] < "R")
return ShowError(GetMessage("P_DENIED_ACCESS"));
/************** GALLERIES ******************************************/
//PAGENAVIGATION
$arNavParams = false; $arNavigation = false;
if ($arParams["PAGE_ELEMENTS"] > 0)
{
$arNavParams = array("nPageSize" => $arParams["PAGE_ELEMENTS"], "bShowAll" => false);
$arNavigation = CDBResult::GetNavParams($arNavParams);
}
//CACHE
$cache_id = "gallerylist".serialize(array(
"IBLOCK_ID" => $arParams["IBLOCK_ID"],
"USER_ID" => $arParams["USER_ID"],
"SECTION_FILTER" => $arParams["SECTION_FILTER"],
"SHOW_PHOTO_USER" => $arParams["SHOW_PHOTO_USER"],
"GALLERY_AVATAR_SIZE" => $arParams["GALLERY_AVATAR_SIZE"],
"PAGE_NAVIGATION_TEMPLATE" => $arParams["PAGE_NAVIGATION_TEMPLATE"],
"PERMISSION" => $arParams["PERMISSION"],
"NAV1" => $arNavParams,
"NAV2" => $arNavigation
));
if ($arParams["CACHE_TIME"] > 0 && $cache->InitCache($arParams["CACHE_TIME"], $cache_id, $cache_path))
{
$res = $cache->GetVars();
$arResult["GALLERIES"] = $res["GALLERIES"];
$arResult["NAV_STRING"] = $res["NAV_STRING"];
$arResult["NAV_RESULT"] = $res["NAV_RESULT"];
$GLOBALS['NavNum'] = intVal($GLOBALS['NavNum']) + 1;
}
else
{
CModule::IncludeModule("iblock");
$arFilter = array(
"IBLOCK_ID" => $arParams["IBLOCK_ID"],
"IBLOCK_ACTIVE" => "Y",
"ACTIVE" => "Y",
"SECTION_ID" => 0
);
if ($arParams["USER_ID"] > 0)
$arFilter["CREATED_BY"] = $arParams["USER_ID"];
if (!empty($arParams["SECTION_FILTER"]))
{
if ($arParams["SECTION_FILTER"][">ELEMENTS_CNT"] == 0)
{
unset($arParams["SECTION_FILTER"][">ELEMENTS_CNT"]);
$arFilter[">UF_GALLERY_SIZE"] = "0";
}
$arFilter = $arFilter + $arParams["SECTION_FILTER"];
}
$arSelect = array("ID", "CODE", "NAME", "CREATED_BY", "RIGHT_MARGIN", "LEFT_MARGIN", "PICTURE", "UF_GALLERY_SIZE", "UF_DEFAULT", "UF_GALLERY_RECALC", "UF_DATE", "SOCNET_GROUP_ID");
$db_res = CIBlockSection::GetList(
array($arParams["SORT_BY"] => $arParams["SORT_ORD"], "ID" => "DESC"),
$arFilter,
false,
$arSelect
);
if ($db_res)
{
if ($arParams["PAGE_ELEMENTS"] > 0)
{
$db_res->NavStart($arParams["PAGE_ELEMENTS"], false);
$db_res->nPageWindow = $arParams["PAGE_NAVIGATION_WINDOW"];
$arResult["NAV_STRING"] = $db_res->GetPageNavStringEx($navComponentObject, GetMessage("P_GALLERIES"), $arParams["PAGE_NAVIGATION_TEMPLATE"]);
$arResult["NAV_RESULT"] = $db_res;
}
while ($res = $db_res->GetNext())
{
if (preg_match("/[^a-z0-9_]/is", $res["~CODE"]))
$res["CODE"] = "";
if ($arParams["SHOW_PHOTO_USER"] == "Y")
{
if (empty($arResult["USERS"][$res["CREATED_BY"]]))
{
$db_user = CUser::GetByID($res["CREATED_BY"]);
$res_user = $db_user->Fetch();
$arResult["USER"][$res_user["ID"]] = $res_user;
}
$res["PICTURE"] = intVal($arResult["USER"][$res["CREATED_BY"]]["PERSONAL_PHOTO"]);
$res["PICTURE"] = CFile::GetFileArray($res["PICTURE"]);
$image_resize = CFile::ResizeImageGet($res["PICTURE"],
array("width" => $arParams["GALLERY_AVATAR_SIZE"], "height" => $arParams["GALLERY_AVATAR_SIZE"]));
$res["PICTURE"]["SRC"] = $image_resize["src"];
}
else
{
$res["PICTURE"] = CFile::GetFileArray($res["PICTURE"]);
}
$res["ALBUMS"] = array();
if (doubleval($res["UF_GALLERY_SIZE"]) > 0 && in_array("ALBUMS", $arParams["SECTION_SELECT_FIELDS"]))
{
$db_res2 = CIBlockSection::GetList(
array("ID" => "DESC"),
array("ACTIVE" => "Y", "SECTION_ID" => $res["ID"]),
false,
array("ID", "NAME", "DESCRIPTION", "PICTURE", "UF_PASSWORD"));
if ($db_res2 && $res2 = $db_res2->GetNext())
{
$iCount = 1;
do
{
$res2["PASSWORD"] = $res2["UF_PASSWORD"];
$res2["~PASSWORD"] = $res2["~UF_PASSWORD"];
$res2["URL"] = array(
"VIEW" => CComponentEngine::MakePathFromTemplate($arParams["~SECTION_URL"],
array("USER_ALIAS" => $res["~CODE"], "SECTION_ID" => $res2["ID"],
"USER_ID" => $res["CREATED_BY"], "GROUP_ID" => $res["SOCNET_GROUP_ID"])));
if (!empty($res2["PICTURE"]))
{
$res2["~PICTURE"] = $res2["PICTURE"];
$res2["PICTURE"] = CFile::GetFileArray($res2["PICTURE"]);
}
$res["ALBUMS"][$res2["ID"]] = $res2;
$iCount++;
if ($iCount > 2)
break;
} while ($res2 = $db_res2->GetNext());
}
}
$res["LINK"] = array(
"VIEW" => CComponentEngine::MakePathFromTemplate($arParams["~GALLERY_URL"],
array("USER_ALIAS" => $res["~CODE"], "USER_ID" => $res["CREATED_BY"], "GROUP_ID" => $res["SOCNET_GROUP_ID"])),
"EDIT" => CComponentEngine::MakePathFromTemplate($arParams["~GALLERY_EDIT_URL"],
array("USER_ALIAS" => $res["~CODE"], "ACTION" => "EDIT",
"USER_ID" => $res["CREATED_BY"], "GROUP_ID" => $res["SOCNET_GROUP_ID"])),
"DROP" => CComponentEngine::MakePathFromTemplate($arParams["~GALLERY_EDIT_URL"],
array("USER_ALIAS" => $res["~CODE"], "ACTION" => "DROP",
"USER_ID" => $res["CREATED_BY"], "GROUP_ID" => $res["SOCNET_GROUP_ID"])),
"UPLOAD" => CComponentEngine::MakePathFromTemplate($arParams["~UPLOAD_URL"],
array("USER_ALIAS" => $res["~CODE"], "SECTION_ID" => "0",
"USER_ID" => $res["CREATED_BY"], "GROUP_ID" => $res["SOCNET_GROUP_ID"])));
$res["LINK"]["EDIT"] .= (strpos($res["LINK"]["EDIT"], "?") === false ? "?" : "&")."GALLERY_ID=".$res["ID"];
$res["LINK"]["DROP"] .= (strpos($res["LINK"]["DROP"], "?") === false ? "?" : "&")."GALLERY_ID=".$res["ID"];
foreach ($res["LINK"] as $key => $val)
{
$res["LINK"]["~".$key] = $val;
$res["LINK"][$key] = htmlspecialcharsbx($val);
}
$arResult["GALLERIES"][$res["ID"]] = $res;
}
if ($arParams["CACHE_TIME"] > 0)
{
$cache->StartDataCache($arParams["CACHE_TIME"], $cache_id, $cache_path);
$cache->EndDataCache(array(
"GALLERIES" => $arResult["GALLERIES"],
"NAV_STRING" => $arResult["NAV_STRING"],
"NAV_RESULT" => $arResult["NAV_RESULT"]
));
}
}
}
/********************************************************************
/Main Data
********************************************************************/
/********************************************************************
Data
********************************************************************/
/************** GALLERIES ******************************************/
$arResult["GALLERIES"] = (!is_array($arResult["GALLERIES"]) ? array() : $arResult["GALLERIES"]);
if ($arParams["PERMISSION"] >= "U")
{
foreach ($arResult["GALLERIES"] as $key => $res)
{
$arResult["GALLERIES"][$key]["LINK"]["~DROP"] .= "&".bitrix_sessid_get();
$arResult["GALLERIES"][$key]["LINK"]["DROP"] = htmlspecialcharsbx($arResult["GALLERIES"][$key]["LINK"]["~DROP"]);
}
}
/************** PERMISSION *****************************************/
$arResult["I"] = array(
"ACTIONS" => array(
"CREATE_GALLERY" => "N",
"EDIT_GALLERY" => "N",
"UPLOAD" => "N"),
"PERMISSION" => $arParams["PERMISSION"],
"ABS_PERMISSION" => $arParams["ABS_PERMISSION"]);
if (!$GLOBALS["USER"]->IsAuthorized() || $arParams["PERMISSION"] < "U")
{
// no changes
}
elseif ($arParams["ABS_PERMISSION"] >= "U")
{
$arResult["I"]["ACTIONS"]["CREATE_GALLERY"] = "Y";
$arResult["I"]["ACTIONS"]["EDIT_GALLERY"] = "Y";
$arResult["I"]["ACTIONS"]["UPLOAD"] = "Y";
}
elseif ($GLOBALS["USER"]->GetID() == $arParams["USER_ID"])
{
if ($arParams["ONLY_ONE_GALLERY"] == "Y" && !empty($arResult["GALLERIES"])):
$arResult["I"]["ACTIONS"]["CREATE_GALLERY"] = "N";
else:
$res = array_intersect($GLOBALS["USER"]->GetUserGroupArray(), $arParams["GALLERY_GROUPS"]);
$arResult["I"]["ACTIONS"]["CREATE_GALLERY"] = (empty($res) ? "N" : "Y");
endif;
$arResult["I"]["ACTIONS"]["EDIT_GALLERY"] = "Y";
$arResult["I"]["ACTIONS"]["UPLOAD"] = "Y";
}
/************** URLS ***********************************************/
$arResult["LINK"] = array(
"INDEX" => CComponentEngine::MakePathFromTemplate($arParams["INDEX_URL"], array()),
"NEW" => CComponentEngine::MakePathFromTemplate($arParams["GALLERY_EDIT_URL"], array("USER_ALIAS" => "NEW_ALIAS", "ACTION" => "CREATE",
"USER_ID" => $USER->GetID(), "GROUP_ID" => 0)),
"GALLERIES" => CComponentEngine::MakePathFromTemplate($arParams["GALLERIES_URL"], array("USER_ID" => $arParams["USER_ID"])));
/********************************************************************
/Data
********************************************************************/
CUtil::InitJSCore(array('window', 'ajax'));
$this->IncludeComponentTemplate();
/********************************************************************
Standart
********************************************************************/
/************** Title **********************************************/
if ($arParams["SET_TITLE"] == "Y")
{
$sTitle = ($arParams["USER_ID"] > 0 ? GetMessage("P_GALLERIES_BY_USER")." ".$arResult["USER"]["SHOW_NAME"] : GetMessage("P_GALLERIES"));
$GLOBALS['APPLICATION']->SetTitle($sTitle);
}
if ($arParams["SET_NAV_CHAIN"] == "Y")
{
$sTitle = ($arParams["USER_ID"] > 0 ? $arResult["USER"]["SHOW_NAME"] : GetMessage("P_GALLERIES"));
$GLOBALS['APPLICATION']->AddChainItem($sTitle);
}
/************** Admin Panel ****************************************/
// if($arParams["DISPLAY_PANEL"] == "Y" && $USER->IsAuthorized() && CModule::IncludeModule("iblock"))
// CIBlock::ShowPanel($arParams["IBLOCK_ID"], 0, $arParams["SECTION_ID"], $arParams["IBLOCK_TYPE"], false, $this->GetName());
/************** Returns ********************************************/
return $arResult;
/********************************************************************
/Standart
********************************************************************/
?>