%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/components/bitrix/blog.groups/ |
| Current File : /home/bitrix/www/bitrix/components/bitrix/blog.groups/component.php |
<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
if (!CModule::IncludeModule("blog"))
{
ShowError(GetMessage("BLOG_MODULE_NOT_INSTALL"));
return;
}
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["GROUPS_COUNT"] = intval($arParams["GROUPS_COUNT"]);
$arParams["COLS_COUNT"] = (IntVal($arParams["COLS_COUNT"])>0 ? IntVal($arParams["COLS_COUNT"]) : 2);
$arParams["SORT_BY1"] = (strlen($arParams["SORT_BY1"])>0 ? $arParams["SORT_BY1"] : "DATE_CREATE");
$arParams["SORT_ORDER1"] = (strlen($arParams["SORT_ORDER1"])>0 ? $arParams["SORT_ORDER1"] : "DESC");
$arParams["SORT_BY2"] = (strlen($arParams["SORT_BY2"])>0 ? $arParams["SORT_BY2"] : "ID");
$arParams["SORT_ORDER2"] = (strlen($arParams["SORT_ORDER2"])>0 ? $arParams["SORT_ORDER2"] : "DESC");
if(!is_array($arParams["GROUP_ID"]))
$arParams["GROUP_ID"] = array($arParams["GROUP_ID"]);
foreach($arParams["GROUP_ID"] as $k=>$v)
if(IntVal($v) <= 0)
unset($arParams["GROUP_ID"][$k]);
if(strLen($arParams["GROUP_VAR"])<=0)
$arParams["GROUP_VAR"] = "id";
if(strLen($arParams["PAGE_VAR"])<=0)
$arParams["PAGE_VAR"] = "page";
$arParams["PATH_TO_GROUP"] = trim($arParams["PATH_TO_GROUP"]);
if(strlen($arParams["PATH_TO_GROUP"])<=0)
$arParams["PATH_TO_GROUP"] = htmlspecialcharsbx($APPLICATION->GetCurPageParam($arParams["PAGE_VAR"]."=group&".$arParams["GROUP_VAR"]."=#group_id#", Array($arParams["PAGE_VAR"], $arParams["GROUP_VAR"])));
$cache = new CPHPCache;
$cache_id = "blog_blog_groups_".serialize($arParams);
$cache_path = "/".SITE_ID."/blog/blog_groups/";
if ($arParams["CACHE_TIME"] > 0 && $cache->InitCache($arParams["CACHE_TIME"], $cache_id, $cache_path))
{
$Vars = $cache->GetVars();
foreach($Vars["arResult"] as $k=>$v)
$arResult[$k] = $v;
CBitrixComponentTemplate::ApplyCachedData($Vars["templateCachedData"]);
$cache->Output();
}
else
{
if ($arParams["CACHE_TIME"] > 0)
$cache->StartDataCache($arParams["CACHE_TIME"], $cache_id, $cache_path);
$SORT = Array($arParams["SORT_BY1"]=>$arParams["SORT_ORDER1"], $arParams["SORT_BY2"]=>$arParams["SORT_ORDER2"]);
$arFilter = Array("SITE_ID"=>SITE_ID);
if(!empty($arParams["GROUP_ID"]))
$arFilter["ID"] = $arParams["GROUP_ID"];
$arSelectFields = false;
// if($arParams["GROUPS_COUNT"]>0)
// $COUNT = Array("nTopCount" => $arParams["GROUPS_COUNT"]*2);
// else
$COUNT = false;
$arResult["GROUPS"] = Array();
$arResult["GROUPS_TABLE"] = Array();
$dbGroups = CBlogGroup::GetList(
$SORT,
$arFilter,
false,
$COUNT,
$arSelectFields);
$itemCnt = 0;
while($arGroups = $dbGroups->Fetch())
{
$dbBlog = CBlog::GetList(Array(), Array("GROUP_ID"=>$arGroups["ID"]), false, false, Array("ID", "GROUP_ID"));
if($arBlog = $dbBlog->Fetch())
{
$url = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP"], array("group_id" => $arGroups["ID"]));
$arResult["GROUPS"][] = array("ID"=>$arGroups["ID"], "NAME"=>htmlspecialcharsex($arGroups["NAME"]), "URL" => $url);
$itemCnt++;
if ($itemCnt >= $arParams["GROUPS_COUNT"] && $arParams["GROUPS_COUNT"] > 0)
break;
}
}
$cnt = count($arResult["GROUPS"]);
$row1 = ceil($cnt/$arParams["COLS_COUNT"]);
$all = $cnt-$row1;
for($i=1; $i<$arParams["COLS_COUNT"]; $i++)
{
if(($arParams["COLS_COUNT"]-$i)>1)
${"row".($i+1)} = ceil($all/($arParams["COLS_COUNT"]-$i));
else
${"row".($i+1)} = $all;
$all = $all - ${"row".($i+1)};
}
$showed = 0;
for($j=0; $j<$row1; $j++)
{
$index_old = 0;
for($k=0; $k<$arParams["COLS_COUNT"]; $k++)
{
if($k==0)
$index = $j;
else
$index = $index_old+${'row'.$k};
if(!empty($arResult["GROUPS"][$index]))
$arResult["GROUPS_TABLE"][$j][$k] = $arResult["GROUPS"][$index];
$index_old = $index;
$showed++;
if($showed==$cnt)
$k = $arParams["COLS_COUNT"];
}
}
if ($arParams["CACHE_TIME"] > 0)
$cache->EndDataCache(array("templateCachedData" => $this->GetTemplateCachedData(), "arResult" => $arResult));
}
$this->IncludeComponentTemplate();
?>