Your IP : 18.117.230.170


Current Path : /home/bitrix/ext_www/dev.klimatlend.ua/bitrix/modules/socialnetwork/classes/general/
Upload File :
Current File : /home/bitrix/ext_www/dev.klimatlend.ua/bitrix/modules/socialnetwork/classes/general/log_pages.php

<?
class CSocNetLogPages
{
	function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
	{
		if (func_num_args() <= 2)
		{
			$arSelectFields = $arFilter;
			$arFilter = $arOrder;
			$arOrder = array();
		}

		global $DB;

		if (count($arSelectFields) <= 0)
		{
			$arSelectFields = array("USER_ID", "SITE_ID", "GROUP_CODE", "PAGE_SIZE", "PAGE_NUM", "PAGE_LAST_DATE", "TRAFFIC_AVG", "TRAFFIC_CNT", "TRAFFIC_LAST_DATE");
		}

		// FIELDS -->
		$arFields = array(
			"USER_ID" => Array("FIELD" => "SLP.USER_ID", "TYPE" => "int"),
			"SITE_ID" => Array("FIELD" => "SLP.SITE_ID", "TYPE" => "string"),
			"GROUP_CODE" => Array("FIELD" => "SLP.GROUP_CODE", "TYPE" => "string"),
			"PAGE_SIZE" => array("FIELD" => "SLP.PAGE_SIZE", "TYPE" => "int"),
			"PAGE_NUM" => array("FIELD" => "SLP.PAGE_NUM", "TYPE" => "int"),
			"PAGE_LAST_DATE" => Array("FIELD" => "SLP.PAGE_LAST_DATE", "TYPE" => "datetime"),
			"TRAFFIC_AVG" => array("FIELD" => "SLP.TRAFFIC_AVG", "TYPE" => "int"),
			"TRAFFIC_CNT" => array("FIELD" => "SLP.TRAFFIC_CNT", "TYPE" => "int"),
			"TRAFFIC_LAST_DATE" => Array("FIELD" => "SLP.TRAFFIC_LAST_DATE", "TYPE" => "datetime"),
		);
		// <-- FIELDS

		$arSqls = CSocNetGroup::PrepareSql($arFields, $arOrder, $arFilter, false, $arSelectFields);

		$arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);

		$strSql =
			"SELECT ".$arSqls["SELECT"]." ".
			"FROM b_sonet_log_page SLP ".
			"	".$arSqls["FROM"]." ";
		if (strlen($arSqls["WHERE"]) > 0)
		{
			$strSql .= "WHERE ".$arSqls["WHERE"]." ";
		}
		if (strlen($arSqls["ORDERBY"]) > 0)
		{
			$strSql .= "ORDER BY ".$arSqls["ORDERBY"]." ";
		}

		$dbRes = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);

		return $dbRes;
	}

	public static function DeleteEx($user_id, $site_id = '**', $page_size = false, $group_code = '**')
	{
		global $DB;

		$user_id = intval($user_id);

		if ($user_id <= 0)
		{
			return false;
		}

		$strWhere = " USER_ID = ".$user_id;
		if (
			strlen($site_id) > 0
			&& $site_id != "**"
		)
		{
			$strWhere .= " AND SITE_ID = '".$DB->ForSQL($site_id)."'";
		}

		if (
			strlen($group_code) > 0
			&& $group_code != "**"
		)
		{
			$strWhere .= " AND GROUP_CODE = '".$DB->ForSQL($group_code)."'";
		}

		if (intval($page_size) > 0)
		{
			$strWhere .= " AND PAGE_SIZE = ".$page_size;
		}

		$strSQL = "DELETE FROM b_sonet_log_page WHERE ".$strWhere;
		if ($DB->Query($strSQL, false, "FILE: ".__FILE__."<br> LINE: ".__LINE__))
		{
			return true;
		}
		else
		{
			return false;
		}
	}

	public static function Set($user_id, $page_last_date, $page_size, $page_num = 1, $site_id = SITE_ID, $group_code = '**', $traffic_avg = false, $traffic_cnt = false)
	{
		global $DB;

		$user_id = intval($user_id);
		$page_size = intval($page_size);
		$page_num = intval($page_num);
		$traffic_avg = intval($traffic_avg);
		$traffic_cnt = intval($traffic_cnt);

		if (
			$user_id <= 0
			|| $page_size <= 0
			|| strlen($page_last_date) <= 0
		)
		{
			return false;
		}

		$page_last_date = new \Bitrix\Main\Type\DateTime($page_last_date);

		$connection = \Bitrix\Main\Application::getConnection();
		$helper = $connection->getSqlHelper();

		$arInsertFields = array(
			"USER_ID" => $user_id,
			"SITE_ID" => $DB->ForSQL($site_id),
			"GROUP_CODE" => $DB->ForSQL($group_code),
			"PAGE_SIZE" => $page_size,
			"PAGE_NUM" => $page_num,
			"PAGE_LAST_DATE" => $page_last_date
		);

		$arUpdateFields = array(
			"PAGE_LAST_DATE" => $page_last_date
		);

		if ($traffic_cnt)
		{
			$arInsertFields["TRAFFIC_AVG"] = $arUpdateFields["TRAFFIC_AVG"] = $traffic_avg;
			$arInsertFields["TRAFFIC_CNT"] = $arUpdateFields["TRAFFIC_CNT"] = $traffic_cnt;
			$arInsertFields["TRAFFIC_LAST_DATE"] = $arUpdateFields["TRAFFIC_LAST_DATE"] = new \Bitrix\Main\DB\SqlExpression($helper->getCurrentDateTimeFunction());
		}

		$merge = $helper->prepareMerge(
			"b_sonet_log_page",
			array("USER_ID", "SITE_ID", "GROUP_CODE", "PAGE_SIZE", "PAGE_NUM"),
			$arInsertFields,
			$arUpdateFields
		);

		if ($merge[0] != "")
		{
			$connection->query($merge[0]);
			if ($traffic_cnt)
			{
				CSocNetLogFollow::checkAutoUnfollow($traffic_cnt, $traffic_avg, $user_id);
			}
		}
	}
}
?>