• Модуль: 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; }