- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/log_tools.php
- Класс: CSocNetLogComponent
- Вызов: CSocNetLogComponent::ConvertPresetToFilters
static function ConvertPresetToFilters($arPreset, $arParams = array())
{
global $USER;
static
$inited = false,
$isExtranetAvailable = false,
$isExtranetSite = false,
$isTasksAvailable = false,
$isCrmAvailable = false,
$isListsAvailable = false,
$isTimemanAvailable = false;
$arFilter = array();
if (!$inited)
{
$isExtranetAvailable = ModuleManager::isModuleInstalled('extranet');
$isExtranetSite = (
$isExtranetAvailable
&& Loader::includeModule('extranet')
&& CExtranet::isExtranetSite()
);
$isTasksAvailable = ModuleManager::isModuleInstalled('tasks');
$isCrmAvailable = ModuleManager::isModuleInstalled('crm');
$isListsAvailable = (ModuleManager::isModuleInstalled('lists') && ModuleManager::isModuleInstalled('bizproc') && ModuleManager::isModuleInstalled('intranet'));
$isTimemanAvailable = ModuleManager::isModuleInstalled('timeman');
$inited = true;
}
foreach ($arPreset as $key => $arPresetFilterTmp)
{
$bCorrect = true;
if (!empty($arPresetFilterTmp["ID"]))
{
if (
$arPresetFilterTmp["ID"] == "extranet"
&& (
!$isExtranetAvailable
|| $isExtranetSite
)
)
{
unset($arPresetFilterTmp["ID"]);
}
elseif
(
$arPresetFilterTmp["ID"] === "work"
&& $isCrmAvailable
&& BitrixMainConfigOption::get("crm", "enable_livefeed_merge", "N") === "Y"
&& !empty($arPresetFilterTmp["FILTER"])
&& is_array($arPresetFilterTmp["FILTER"]["EVENT_ID"])
)
{
$arPreset[$key] = $arPresetFilterTmp["FILTER"]["EVENT_ID"] = array_unique(array_merge($arPresetFilterTmp["FILTER"]["EVENT_ID"], array("crm_activity_add")));
}
if (empty($arPresetFilterTmp["ID"]))
{
continue;
}
}
if (
!empty($arPresetFilterTmp["FILTER"])
&& !empty($arPresetFilterTmp["EVENT_ID"])
)
{
foreach ($arPresetFilterTmp["FILTER"]["EVENT_ID"] as $eventKey => $eventId)
{
if (
($eventId === "tasks" && !$isTasksAvailable)
|| (in_array($eventId, array("timeman_entry", "report")) && !$isTimemanAvailable)
)
{
unset($arPresetFilterTmp["FILTER"]["EVENT_ID"][$eventKey]);
}
}
if (empty($arPresetFilterTmp["FILTER"]["EVENT_ID"]))
{
continue;
}
}
if (
!empty($arPresetFilterTmp["FILTER"])
&& !empty($arPresetFilterTmp["FILTER"]["EXACT_EVENT_ID"])
)
{
if (
(
$arPresetFilterTmp["FILTER"]["EXACT_EVENT_ID"] === "lists_new_element"
&& (
(
isset($arParams["GROUP_ID"])
&& (int)$arParams["GROUP_ID"] > 0
)
|| !$isListsAvailable
|| $isExtranetSite
)
)
)
{
unset($arPresetFilterTmp["FILTER"]["EXACT_EVENT_ID"]);
}
if (empty($arPresetFilterTmp["FILTER"]["EXACT_EVENT_ID"]))
{
continue;
}
}
if (array_key_exists("NAME", $arPresetFilterTmp))
{
switch(mb_strtoupper($arPresetFilterTmp["NAME"]))
{
case "#WORK#":
$arPresetFilterTmp["NAME"] = GetMessage("SONET_INSTALL_LOG_PRESET_WORK"); // lang/include.php
break;
case "#FAVORITES#":
$arPresetFilterTmp["NAME"] = GetMessage("SONET_INSTALL_LOG_PRESET_FAVORITES");
break;
case "#IMPORTANT#":
$arPresetFilterTmp["NAME"] = GetMessage("SONET_INSTALL_LOG_PRESET_IMPORTANT");
break;
case "#MY#":
$arPresetFilterTmp["NAME"] = GetMessage("SONET_INSTALL_LOG_PRESET_MY");
break;
case "#BIZPROC#":
$arPresetFilterTmp["NAME"] = GetMessage("SONET_INSTALL_LOG_PRESET_BIZPROC");
break;
case "#EXTRANET#":
$arPresetFilterTmp["NAME"] = GetMessage("SONET_INSTALL_LOG_PRESET_EXTRANET");
break;
}
}
if (
array_key_exists("FILTER", $arPresetFilterTmp)
&& is_array($arPresetFilterTmp["FILTER"])
)
{
foreach ($arPresetFilterTmp["FILTER"] as $tmp_id_2 => $filterTmp)
{
if (
(
!is_array($filterTmp)
&& $filterTmp === "#CURRENT_USER_ID#"
)
|| (
is_array($filterTmp)
&& in_array("#CURRENT_USER_ID#", $filterTmp, true)
)
)
{
if (!$USER->isAuthorized())
{
$bCorrect = false;
break;
}
elseif (!is_array($filterTmp))
{
$arPresetFilterTmp["FILTER"][$tmp_id_2] = $USER->getId();
}
elseif (is_array($filterTmp))
{
foreach($filterTmp as $tmp_id_3 => $valueTmp)
{
if ($valueTmp === "#CURRENT_USER_ID#")
{
$arPresetFilterTmp["FILTER"][$tmp_id_2][$tmp_id_3] = $USER->getId();
}
}
}
}
elseif (
(
!is_array($filterTmp)
&& $filterTmp === "#EXTRANET_SITE_ID#"
)
|| (
is_array($filterTmp)
&& in_array("#EXTRANET_SITE_ID#", $filterTmp)
)
)
{
if (
!ModuleManager::isModuleInstalled("extranet")
|| !COption::GetOptionString("extranet", "extranet_site", false)
)
{
$bCorrect = false;
break;
}
if (!is_array($filterTmp))
{
$arPresetFilterTmp["FILTER"][$tmp_id_2] = COption::GetOptionString("extranet", "extranet_site");
}
else
{
foreach($filterTmp as $tmp_id_3 => $valueTmp)
{
if ($valueTmp === "#EXTRANET_SITE_ID#")
{
$arPresetFilterTmp["FILTER"][$tmp_id_2][$tmp_id_3] = COption::GetOptionString("extranet", "extranet_site");
}
}
}
}
}
}
if ($bCorrect)
{
$arFilter[$arPresetFilterTmp["ID"]] = $arPresetFilterTmp;
}
}
return $arFilter;
}