- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/classes/mysql/log_events.php
- Класс: CSocNetLogEvents
- Вызов: CSocNetLogEvents::GetUserLogEvents
static function GetUserLogEvents($userID, $arFilter = array())
{
global $DB;
$userID = intval($userID);
if ($userID <= 0)
return false;
$strWhere = "";
if (is_array($arFilter) && count($arFilter) > 0)
{
foreach ($arFilter as $key => $value)
{
switch ($key)
{
case "ENTITY_TYPE":
$strWhere .= " AND L.ENTITY_TYPE = '".$DB->ForSql($value, 1)."' ";
break;
case "ENTITY_ID":
$strWhere .= " AND L.ENTITY_ID = ".intval($value)." ";
break;
case "EVENT_ID":
if (!is_array($value))
$strWhere .= " AND L.EVENT_ID = '".$DB->ForSql($value, 50)."' ";
else
{
if (!function_exists('__tmp_str_apos'))
{
function __tmp_str_apos(&$tmpval, $tmpind)
{
if ($tmpval <> '')
$tmpval = "'".$GLOBALS["DB"]->ForSql($tmpval, 50)."'";
}
}
array_walk($value, '__tmp_str_apos');
$strWhere .= " AND L.EVENT_ID IN (".implode(", ", $value).") ";
}
break;
case "LOG_DATE_DAYS":
$strWhere .= " AND L.LOG_DATE >= DATE_SUB(NOW(), INTERVAL ".intval($value)." DAY) ";
break;
case "SITE_ID":
if (!is_array($value)):
$strWhere .= " AND L.SITE_ID = '".$DB->ForSql($value, 2)."' ";
else:
$counter = 0;
$strWhere .= " AND (";
foreach($value as $site_id):
if ($site_id === false)
$strWhere .= ($counter > 0 ? " OR" : "")." L.SITE_ID IS NULL ";
else
$strWhere .= ($counter > 0 ? " OR" : "")." L.SITE_ID = '".$DB->ForSql($site_id, 2)."' ";
$counter++;
endforeach;
$strWhere .= ") ";
endif;
break;
}
}
}
$strSql =
"SELECT L.ID, L.ENTITY_TYPE, L.ENTITY_ID, L.EVENT_ID, L.LOG_DATE, L.SITE_ID as SITE_ID, ".
" ".$DB->DateToCharFunction("L.LOG_DATE", "FULL")." as LOG_DATE_FORMAT, ".
" L.TITLE_TEMPLATE, L.TITLE, L.MESSAGE, L.URL, L.MODULE_ID, L.CALLBACK_FUNC, ".
" G.NAME as GROUP_NAME, G.OWNER_ID as GROUP_OWNER_ID, G.INITIATE_PERMS as GROUP_INITIATE_PERMS, ".
" G.VISIBLE as GROUP_VISIBLE, G.OPENED as GROUP_OPENED, ".
" U.NAME as USER_NAME, U.LAST_NAME as USER_LAST_NAME, U.SECOND_NAME as USER_SECOND_NAME, U.LOGIN as USER_LOGIN ".
"FROM b_sonet_log L ";
if (!Array_Key_Exists("ALL", $arFilter) || mb_strtoupper($arFilter["ALL"]) != "Y")
{
$strSql .=
" INNER JOIN b_sonet_log_events LE ".
" ON (L.ENTITY_TYPE = LE.ENTITY_TYPE AND L.ENTITY_ID = LE.ENTITY_ID AND (L.EVENT_ID = LE.EVENT_ID OR ((L.EVENT_ID = 'blog_post' OR L.EVENT_ID = 'blog_comment' OR L.EVENT_ID = 'blog_post_micro') AND LE.EVENT_ID = 'blog'))) ";
}
$strSql .=
" LEFT JOIN b_sonet_group G ".
" ON (L.ENTITY_TYPE = 'G' AND L.ENTITY_ID = G.ID) ".
" LEFT JOIN b_user U ".
" ON (L.ENTITY_TYPE = 'U' AND L.ENTITY_ID = U.ID) ".
"WHERE 1 = 1 ";
if (!Array_Key_Exists("ALL", $arFilter) || mb_strtoupper($arFilter["ALL"]) != "Y")
$strSql .= " AND LE.USER_ID = ".$userID." ";
$strSql .=
$strWhere.
"ORDER BY L.LOG_DATE DESC";
$dbRes = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__);
return $dbRes;
}