%PDF- %PDF-
Direktori : /proc/self/root/home/bitrix/www/bitrix/components/bitrix/photogallery.user/ |
Current File : //proc/self/root/home/bitrix/www/bitrix/components/bitrix/photogallery.user/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")); /******************************************************************** Input params ********************************************************************/ /***************** BASE ********************************************/ $arParams["IBLOCK_TYPE"] = trim($arParams["IBLOCK_TYPE"]); $arParams["IBLOCK_ID"] = intval($arParams["IBLOCK_ID"]); $arParams["USER_ALIAS"] = preg_replace("/[^a-z0-9\_]+/is" , "", $arParams["USER_ALIAS"]); $arParams["SECTION_ID"] = intVal($arParams["SECTION_ID"]); $arParams["PERMISSION_EXTERNAL"] = trim($arParams["PERMISSION"]); $arParams["ANALIZE_SOCNET_PERMISSION"] = ($arParams["ANALIZE_SOCNET_PERMISSION"] == "Y" ? "Y" : "N"); $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#", "galleries" => "PAGE_NAME=galleries&USER_ID=#USER_ID#", "gallery_edit" => "PAGE_NAME=gallery_edit&USER_ALIAS=#USER_ALIAS#&ACTION=#ACTION#", "section_edit" => "PAGE_NAME=section_edit&USER_ALIAS=#USER_ALIAS#&SECTION_ID=#SECTION_ID#&ACTION=#ACTION#", "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"] = $APPLICATION->GetCurPage()."?".$URL_VALUE; $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"])*1024*1024; $arParams["RETURN_ARRAY"] = ($arParams["RETURN_ARRAY"] == "Y" ? "Y" : "N");// hidden params for custom components $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); /***************** 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"); //Turn off by default /******************************************************************** /Input params ********************************************************************/ if ((empty($arParams["USER_ALIAS"]) || $arParams["USER_ALIAS"] == "empty") && $arParams["SECTION_ID"] > 0) { CModule::IncludeModule("photogallery"); $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"] ) ); $oPhoto->Gallery = ($oPhoto->Gallery ? $oPhoto->Gallery : array("CODE" => "empty")); $res = $oPhoto->GetSection($arParams["SECTION_ID"], $arResult["SECTION"]); if (intval($res) < 400 && intval($res) > 300) { $arGallery = $oPhoto->GetSectionGallery($arResult["SECTION"]); if ($arGallery) { $arParams["USER_ALIAS"] = $arGallery["CODE"]; $oPhoto->Gallery = $arGallery; } } } /******************************************************************** Main Data ********************************************************************/ $arResult["GALLERY"] = array(); $arResult["backurl_encode"] = urlencode($GLOBALS['APPLICATION']->GetCurPageParam()); $arResult["MY_GALLERY"] = array(); $arResult["MY_GALLERIES"] = array(); $arResult["USERS"] = array(); $cache = new CPHPCache; $cache_path_main = "/".SITE_ID."/photogallery/".$arParams["IBLOCK_ID"]; /************** MY GALLERIES ***************************************/ if ($GLOBALS["USER"]->IsAuthorized()) { $cache_id = "gallerylist_".serialize(array( "IBLOCK_ID" => $arParams["IBLOCK_ID"], "USER_ID" => $GLOBALS["USER"]->GetId() )); if (!empty($arParams["USER_ALIAS"])) $cache_id .= '_'.$arParams["USER_ALIAS"]; $cache_path = $cache_path_main."/user".$GLOBALS["USER"]->GetId(); if ($arParams["CACHE_TIME"] > 0 && $cache->InitCache($arParams["CACHE_TIME"], $cache_id, $cache_path)) { $res = $cache->GetVars(); $arResult["MY_GALLERY"] = $res["MY_GALLERY"]; $arResult["MY_GALLERIES"] = $res["MY_GALLERIES"]; } else { CModule::IncludeModule("iblock"); $arFilter = array( "IBLOCK_ID" => $arParams["IBLOCK_ID"], "IBLOCK_ACTIVE" => "Y", "CREATED_BY" => $GLOBALS["USER"]->GetId(), "SOCNET_GROUP_ID" => false, "SECTION_ID" => 0 ); $db_res = CIBlockSection::GetList(array($arParams["SORT_BY"] => $arParams["SORT_ORD"], "ID" => "DESC"), $arFilter, false, array("ID", "ACTIVE", "CREATED_BY", "IBLOCK_SECTION_ID", "NAME", "PICTURE", "DESCRIPTION", "DESCRIPTION_TYPE", "CODE", "SOCNET_GROUP_ID", "PICTURE","UF_DEFAULT", "UF_GALLERY_SIZE", "UF_GALLERY_RECALC", "UF_DATE")); if ($db_res) { while ($res = $db_res->GetNext()) { if (@preg_match("/[^a-z0-9_]/is", $res["~CODE"])) $res["CODE"] = ""; // $res["ELEMENTS_CNT"] = intVal(CIBlockSection::GetSectionElementsCount($res["ID"], Array("CNT_ALL"=>"Y"))); 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["USERS"][$res_user["ID"]] = $res_user; } $res["PICTURE"] = intVal($arResult["USERS"][$res["CREATED_BY"]]["PERSONAL_PHOTO"]); } $res["PICTURE"] = CFile::GetFileArray($res["PICTURE"]); if ($arParams["SHOW_PHOTO_USER"] == "Y" && !empty($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"]; } $res["LINK"] = array(); $url = 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"])), "NEW_ALBUM" => CComponentEngine::MakePathFromTemplate($arParams["~SECTION_EDIT_URL"], array("USER_ALIAS" => $res["~CODE"], "SECTION_ID" => "0", "USER_ID" => $res["CREATED_BY"], "GROUP_ID" => $res["SOCNET_GROUP_ID"], "ACTION" => "new")), "NEW" => CComponentEngine::MakePathFromTemplate($arParams["~SECTION_EDIT_URL"], array("USER_ALIAS" => $res["~CODE"], "SECTION_ID" => "0", "USER_ID" => $res["CREATED_BY"], "GROUP_ID" => $res["SOCNET_GROUP_ID"], "ACTION" => "new")), "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"])), ); foreach ($url as $key => $val): $res["LINK"][$key] = htmlspecialcharsbx($val); $res["LINK"]["~".$key] = $val; endforeach; if ($res["UF_DEFAULT"] == "Y") $arResult["MY_GALLERY"] = $res; $arResult["MY_GALLERIES"][$res["~CODE"]] = $res; } if (empty($arResult["MY_GALLERY"])) { reset($arResult["MY_GALLERIES"]); $arResult["MY_GALLERY"] = current($arResult["MY_GALLERIES"]); } } if ($arParams["CACHE_TIME"] > 0) { $cache->StartDataCache($arParams["CACHE_TIME"], $cache_id, $cache_path); $cache->EndDataCache( array( "MY_GALLERY" => $arResult["MY_GALLERY"], "MY_GALLERIES" => $arResult["MY_GALLERIES"]) ); } } } /************** GALLERY ********************************************/ if (!empty($arParams["USER_ALIAS"])) { $cache_id = 'gallery_user_alias_'.serialize(array( "IBLOCK_ID" => $arParams["IBLOCK_ID"], "USER_ALIAS" => $arParams["USER_ALIAS"] )); $cache_path = $cache_path_main."/gallery".$arParams["USER_ALIAS"]; if ($arParams["CACHE_TIME"] > 0 && $cache->InitCache($arParams["CACHE_TIME"], $cache_id, $cache_path)) { $res = $cache->GetVars(); $arResult["GALLERY"] = $res["GALLERY"]; } elseif (!empty($arResult["MY_GALLERIES"]) && !empty($arResult["MY_GALLERIES"][$arParams["USER_ALIAS"]])) { $arResult["GALLERY"] = $arResult["MY_GALLERIES"][$arParams["USER_ALIAS"]]; } else { CModule::IncludeModule("iblock"); $arFilter = array( "IBLOCK_ID" => $arParams["IBLOCK_ID"], "IBLOCK_ACTIVE" => "Y", "SECTION_ID" => 0, "CODE" => $arParams["USER_ALIAS"] ); $db_res = CIBlockSection::GetList( array($arParams["SORT_BY"] => $arParams["SORT_ORD"], "ID" => "DESC"), $arFilter, false, array( "ID", "CREATED_BY", "ACTIVE", "IBLOCK_SECTION_ID", "NAME", "PICTURE", "DESCRIPTION", "DESCRIPTION_TYPE", "CODE", "SOCNET_GROUP_ID", "PICTURE", "UF_DEFAULT", "UF_GALLERY_SIZE", "UF_GALLERY_RECALC", "UF_DATE" ) ); if ($res = $db_res->GetNext()) { // $res["ELEMENTS_CNT"] = intVal(CIBlockSection::GetSectionElementsCount($res["ID"], array("CNT_ALL"=>"Y"))); 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["USERS"][$res_user["ID"]] = $res_user; } $res["PICTURE"] = intVal($arResult["USERS"][$res["CREATED_BY"]]["PERSONAL_PHOTO"]); if ($res["PICTURE"] > 0) { $image_resize = CFile::ResizeImageGet( $res["PICTURE"], array( "width" => $arParams["GALLERY_AVATAR_SIZE"], "height" => $arParams["GALLERY_AVATAR_SIZE"] ) ); $res["PICTURE"] = array("SRC" => $image_resize["src"]); } } elseif ($res["PICTURE"] > 0) { $res["PICTURE"] = CFile::GetFileArray($res["PICTURE"]); } $url = 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"])), "NEW_ALBUM" => CComponentEngine::MakePathFromTemplate($arParams["~SECTION_EDIT_URL"], array("USER_ALIAS" => $res["~CODE"], "SECTION_ID" => "0", "USER_ID" => $res["CREATED_BY"], "GROUP_ID" => $res["SOCNET_GROUP_ID"], "ACTION" => "new")), "NEW" => CComponentEngine::MakePathFromTemplate($arParams["~SECTION_EDIT_URL"], array("USER_ALIAS" => $res["~CODE"], "SECTION_ID" => "0", "USER_ID" => $res["CREATED_BY"], "GROUP_ID" => $res["SOCNET_GROUP_ID"], "ACTION" => "new")), "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"] = array(); foreach ($url as $key => $val): $res["LINK"][$key] = htmlspecialcharsbx($val); $res["LINK"]["~".$key] = $val; endforeach; $arResult["GALLERY"] = $res; } if (!empty($arResult["GALLERY"]) && $arParams["CACHE_TIME"] > 0) { $cache->StartDataCache($arParams["CACHE_TIME"], $cache_id, $cache_path); $cache->EndDataCache(array("GALLERY" => $arResult["GALLERY"])); } } } /************** PERMISSION *****************************************/ $cache_id = serialize(array( "IBLOCK_ID" => $arParams["IBLOCK_ID"], "USER_GROUPS" => $GLOBALS["USER"]->GetGroups() )); $cache_path = $cache_path_main."/permission"; 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"]; if (!empty($arParams["PERMISSION_EXTERNAL"])): $arParams["PERMISSION"] = $arParams["PERMISSION_EXTERNAL"]; elseif ($arParams["PERMISSION"] < "R"): // empty block elseif ($arParams["ANALIZE_SOCNET_PERMISSION"] == "Y" && !empty($arResult["GALLERY"]) && CModule::IncludeModule("socialnetwork")): if (intVal($arResult["GALLERY"]["SOCNET_GROUP_ID"]) > 0) { if (CSocNetFeaturesPerms::CanPerformOperation($USER->GetID(), SONET_ENTITY_GROUP, $arResult["GALLERY"]["SOCNET_GROUP_ID"], "photo", "write")) $arParams["PERMISSION"] = "W"; elseif (!CSocNetFeaturesPerms::CanPerformOperation($USER->GetID(), SONET_ENTITY_GROUP, $arResult["GALLERY"]["SOCNET_GROUP_ID"], "photo", "view")) $arParams["PERMISSION"] = "D"; } else { if (CSocNetFeaturesPerms::CanPerformOperation($USER->GetID(), SONET_ENTITY_USER, $arResult["GALLERY"]["CREATED_BY"], "photo", "write")) $arParams["PERMISSION"] = "W"; elseif (!CSocNetFeaturesPerms::CanPerformOperation($USER->GetID(), SONET_ENTITY_USER, $arResult["GALLERY"]["CREATED_BY"], "photo", "view")) $arParams["PERMISSION"] = "D"; } endif; if ($arParams["PERMISSION"] < "R"): ShowError(GetMessage("P_DENIED_ACCESS")); return false; elseif (!empty($arResult["GALLERY"]) && $arResult["GALLERY"]["ACTIVE"] != "Y"): ShowError(GetMessage("P_GALLERY_IS_BLOCKED")); if ($arParams["ABS_PERMISSION"] < "W"): if ($arParams["SET_TITLE"] == "Y") $GLOBALS["APPLICATION"]->SetTitle($arResult["GALLERY"]["NAME"]); if ($arParams["SET_NAV_CHAIN"] == "Y") $APPLICATION->AddChainItem($arResult["GALLERY"]["NAME"]); return false; endif; endif; /******************************************************************** /Main Data ********************************************************************/ /******************************************************************** Data ********************************************************************/ /************** ACTIONS PERMISSSION ********************************/ $arResult["I"] = array("ACTIONS" => array("CREATE_GALLERY" => "N", "EDIT_GALLERY" => "N")); if (!$GLOBALS["USER"]->IsAuthorized()): elseif ($arParams["ABS_PERMISSION"] >= "W"): $arResult["I"] = array("ACTIONS" => array("CREATE_GALLERY" => "Y", "EDIT_GALLERY" => "Y", "UPLOAD" => "Y")); else: $arResult["I"]["ACTIONS"]["CREATE_GALLERY"] = "Y"; $res = array_intersect($GLOBALS["USER"]->GetUserGroupArray(), $arParams["GALLERY_GROUPS"]); if (empty($res)): $arResult["I"]["ACTIONS"]["CREATE_GALLERY"] = "N"; elseif ($arParams["ONLY_ONE_GALLERY"] == "Y" && !empty($arResult["MY_GALLERIES"])): $arResult["I"]["ACTIONS"]["CREATE_GALLERY"] = "N"; endif; if ($arResult["GALLERY"]["CREATED_BY"] == $GLOBALS["USER"]->GetId()): $arParams["PERMISSION"] = "W"; $arResult["I"]["ACTIONS"]["EDIT_GALLERY"] = "Y"; $arResult["I"]["ACTIONS"]["UPLOAD"] = "Y"; endif; endif; /************** URL ************************************************/ $USER_ID = $GLOBALS["USER"]->GetID(); $res = array( "INDEX" => CComponentEngine::MakePathFromTemplate($arParams["~INDEX_URL"], array( "USER_ID" => $USER_ID, "GROUP_ID" => $arResult["MY_GALLERY"]["SOCNET_GROUP_ID"])), "NEW" => CComponentEngine::MakePathFromTemplate($arParams["~GALLERY_EDIT_URL"], array("USER_ALIAS" => "NEW_ALIAS", "ACTION" => "CREATE", "USER_ID" => $USER_ID, "GROUP_ID" => $arResult["MY_GALLERY"]["SOCNET_GROUP_ID"])), "GALLERIES" => CComponentEngine::MakePathFromTemplate($arParams["~GALLERIES_URL"], array( "USER_ID" => $USER_ID, "GROUP_ID" => $arResult["MY_GALLERY"]["SOCNET_GROUP_ID"]))); $arResult["LINK"] = array(); foreach ($res as $key => $val) { $arResult["LINK"]["~".$key] = $val; $arResult["LINK"][$key] = htmlspecialcharsEx($val); } /******************************************************************** /Data ********************************************************************/ CUtil::InitJSCore(array('window', 'ajax')); $this->IncludeComponentTemplate(); /******************************************************************** Standart ********************************************************************/ /************** Title **********************************************/ if ($arParams["SET_TITLE"] == "Y" && !empty($arResult["GALLERY"])) { $APPLICATION->SetTitle($arResult["GALLERY"]["NAME"]); } /************** BreadCrumb *****************************************/ if ($arParams["SET_NAV_CHAIN"] == "Y" && !empty($arResult["GALLERY"])) { $GLOBALS["APPLICATION"]->AddChainItem($arResult["GALLERY"]["NAME"], CComponentEngine::MakePathFromTemplate($arParams["~GALLERY_URL"], array("USER_ALIAS" => $arResult["GALLERY"]["CODE"]))); } /************** Returns ********************************************/ if ($arParams["RETURN_ARRAY"] == "N") // For custom component return $arResult["GALLERY"]["CODE"]; else return array( "USER_ALIAS" => (!empty($arResult["GALLERY"]) ? $arResult["GALLERY"]["CODE"] : $arParams["USER_ALIAS"]), "ACTIVE" => $arResult["GALLERY"]["ACTIVE"], "SECTION_ID" => $arParams["SECTION_ID"], "PERMISSION" => $arParams["PERMISSION"], "ALL" => $arResult); /******************************************************************** /Standart ********************************************************************/ ?>