Your IP : 18.223.119.139


Current Path : /home/bitrix/ext_www/dev.klimatlend.ua/bitrix/modules/statistic/admin/
Upload File :
Current File : /home/bitrix/ext_www/dev.klimatlend.ua/bitrix/modules/statistic/admin/traffic_graph.php

<?php
define("STOP_STATISTICS", true);
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
/** @var CMain $APPLICATION */
$STAT_RIGHT = $APPLICATION->GetGroupRight("statistic");
if($STAT_RIGHT=="D")
	$APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));

include($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/statistic/colors.php");
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/img.php");

$width = intval($_GET["width"]);
$max_width = COption::GetOptionInt("statistic", "GRAPH_WEIGHT");
if($width <= 0 || $width > $max_width)
	$width = $max_width;

$height = intval($_GET["height"]);
$max_height = COption::GetOptionInt("statistic", "GRAPH_HEIGHT");
if($height <= 0 || $height > $max_height)
	$height = $max_height;

$max_grid = isset($_GET["max_grid"]) && !is_array($_GET["max_grid"]) ? intval($_GET["max_grid"]) : 15;
$min_grid = isset($_GET["min_grid"]) && !is_array($_GET["min_grid"]) ? intval($_GET["min_grid"]) : 10;

// create image canvas
$ImageHandle = CreateImageHandle($width, $height, "FFFFFF", true);

$colorFFFFFF = imagecolorallocate($ImageHandle,255,255,255);
imagefill($ImageHandle, 0, 0, $colorFFFFFF);

$arrX=Array();
$arrY=Array();
$arrayX=Array();
$arrayY=Array();

$M['WEEKDAY_0'] = "Sun";
$M['WEEKDAY_1'] = "Mon";
$M['WEEKDAY_2'] = "Tue";
$M['WEEKDAY_3'] = "Wed";
$M['WEEKDAY_4'] = "Thu";
$M['WEEKDAY_5'] = "Fri";
$M['WEEKDAY_6'] = "Sat";

$M['MONTH_1'] = "Jan";
$M['MONTH_2'] = "Feb";
$M['MONTH_3'] = "Mar";
$M['MONTH_4'] = "Apr";
$M['MONTH_5'] = "May";
$M['MONTH_6'] = "June";
$M['MONTH_7'] = "Jule";
$M['MONTH_8'] = "Aug";
$M['MONTH_9'] = "Sep";
$M['MONTH_10'] = "Oct";
$M['MONTH_11'] = "Nov";
$M['MONTH_12'] = "Dec";

/******************************************************
			Plot data
*******************************************************/
$find_site_id = array();
if(isset($_REQUEST["find_site_id"]))
{
	if(is_array($_REQUEST["find_site_id"]))
		$find_site_id = $_REQUEST["find_site_id"];
	else
		$find_site_id = array($_REQUEST["find_site_id"]);
}

foreach($find_site_id as $k=>$v)
{
	$v = trim($v);
	if(strlen($v) <= 0)
		unset($find_site_id[$k]);
	else
		$find_site_id[$k] = $v;
}


$site_filtered = !empty($find_site_id);
$arFilter = Array(
	"DATE1" => $find_date1,
	"DATE2" => $find_date2,
	"SITE_ID" => $find_site_id
);
$arrTTF_FONT = array();

if ($find_graph_type!="date")
{
	$rs = CTraffic::GetSumList($find_graph_type, $arFilter);
	$ar = $rs->Fetch();

	switch ($find_graph_type)
	{
		case "hour":
			$start = 0; $end = 23; break;
		case "weekday":
			$start = 0; $end = 6;
			if(LANGUAGE_ID != "en")
				$arrTTF_FONT = array(
					"X" => array(
						"FONT_PATH" => "/bitrix/modules/statistic/ttf/verdana.ttf",
						"FONT_SIZE" => 8,
						"FONT_SHIFT" => 12,
					),
				);
			break;
		case "month":
			$start = 1; $end = 12;
			if(LANGUAGE_ID != "en")
				$arrTTF_FONT = array(
					"X" => array(
						"FONT_PATH" => "/bitrix/modules/statistic/ttf/verdana.ttf",
						"FONT_SIZE" => 8,
						"FONT_SHIFT" => 12,
					),
				);
			break;
	}

	$arColors = array();
	if($find_hit == "Y")
		$arColors[] = array($arrColor["HITS"]);
	if($find_host == "Y")
		$arColors[] = array($arrColor["HOSTS"]);
	if($find_session == "Y")
		$arColors[] = array($arrColor["SESSIONS"]);
	if($find_event == "Y")
		$arColors[] = array($arrColor["EVENTS"]);
	if(!$site_filtered)
	{
		if($find_guest == "Y")
			$arColors[] = array($arrColor["GUESTS"]);
		if($find_new_guest == "Y")
			$arColors[] = array($arrColor["NEW_GUESTS"]);
	}

	$dtu = ToUpper($find_graph_type);
	$arData = array();

	$arrY = array();
	$arrX = array();

	for ($i=$start; $i<=$end; $i++)
	{
		$arRec = array();

		if($find_hit == "Y")
			$arrY[] = $arRec[] = $ar[$dtu."_HIT_".$i];
		if($find_host == "Y")
			$arrY[] = $arRec[] = $ar[$dtu."_HOST_".$i];
		if($find_session == "Y")
			$arrY[] = $arRec[] = $ar[$dtu."_SESSION_".$i];
		if($find_event == "Y")
			$arrY[] = $arRec[] = $ar[$dtu."_EVENT_".$i];
		if(!$site_filtered)
		{
			if($find_guest == "Y")
				$arrY[] = $arRec[] = $ar[$dtu."_GUEST_".$i];
			if($find_new_guest == "Y")
				$arrY[] = $arRec[] = $ar[$dtu."_NEW_GUEST_".$i];
		}

		if($find_graph_type == "hour")
			$val = $i;
		elseif(LANGUAGE_ID=="ru" && function_exists("ImageTTFText"))
			$val = GetMessage("STAT_".$dtu."_".$i."_S");
		else
			$val = $M[$dtu."_".$i];

		$arData[$val] = array(
			"DATA" => $arRec,
			"COLORS" => $arColors,
		);
		$arrX[] = $val;
	}

	$arrY = GetArrayY($arrY, $MinY, $MaxY);

	$arrTTF_FONT["type"] = "bar";
	$gridInfo = DrawCoordinatGrid($arrX, $arrY, $width, $height, $ImageHandle, "FFFFFF", "B1B1B1", "000000", 15, 2, $arrTTF_FONT);

	/******************************************************
			data plot
	*******************************************************/
	if(is_array($gridInfo))
		Bar_Diagram($ImageHandle, $arData, $MinY, $MaxY, $gridInfo);
}
else
{
	$rsDays = CTraffic::GetDailyList(($by="s_date"), ($order="asc"), $v1, $arFilter, $v2);
	while($arData = $rsDays->Fetch())
	{
		$date = mktime(0, 0, 0, $arData["MONTH"], $arData["DAY"], $arData["YEAR"]);
		$date_tmp = 0;
		// when dates come not in order
		$next_date = AddTime($prev_date, 1, "D");
		if(($date > $next_date) && (intval($prev_date) > 0))
		{
			// fill date gaps
			$date_tmp = $next_date;
			while($date_tmp < $date)
			{
				$arrX[] = $date_tmp;
				if ($find_hit=="Y") $arrY_hit[] = 0;
				if ($find_host=="Y") $arrY_host[] = 0;
				if ($find_session=="Y") $arrY_session[] = 0;
				if ($find_event=="Y") $arrY_event[] = 0;
				if (!$site_filtered)
				{
					if ($find_guest=="Y") $arrY_guest[] = 0;
					if ($find_new_guest=="Y") $arrY_new_guest[] = 0;
				}
				$date_tmp = AddTime($date_tmp,1,"D");
			}
		}
		$arrX[] = $date;
		if ($find_hit=="Y") $arrY_hit[] = intval($arData["HITS"]);
		if ($find_host=="Y") $arrY_host[] = intval($arData["C_HOSTS"]);
		if ($find_session=="Y") $arrY_session[] = intval($arData["SESSIONS"]);
		if ($find_event=="Y") $arrY_event[] = intval($arData["C_EVENTS"]);
		if (!$site_filtered)
		{
			if ($find_guest=="Y") $arrY_guest[] = intval($arData["GUESTS"]);
			if ($find_new_guest=="Y") $arrY_new_guest[] = intval($arData["NEW_GUESTS"]);
		}
		$prev_date = $date;
	}

	/******************************************************
				axis X
	*******************************************************/

	$arrayX = GetArrayX($arrX, $MinX, $MaxX, $max_grid, $min_grid);

	/******************************************************
				axis Y
	*******************************************************/

	$arrY = array();
	if ($find_hit=="Y") $arrY = array_merge($arrY,$arrY_hit);
	if ($find_host=="Y") $arrY = array_merge($arrY,$arrY_host);
	if ($find_session=="Y") $arrY = array_merge($arrY,$arrY_session);
	if ($find_event=="Y") $arrY = array_merge($arrY,$arrY_event);
	if (!$site_filtered)
	{
		if ($find_guest=="Y") $arrY = array_merge($arrY,$arrY_guest);
		if ($find_new_guest=="Y") $arrY = array_merge($arrY,$arrY_new_guest);
	}

	$arrayY = GetArrayY($arrY, $MinY, $MaxY);

	DrawCoordinatGrid($arrayX, $arrayY, $width, $height, $ImageHandle, "FFFFFF", "B1B1B1", "000000", 15, 2, $arrTTF_FONT);

	/******************************************************
			data plot
	*******************************************************/

	if ($find_hit=="Y")
		Graf($arrX, $arrY_hit, $ImageHandle, $MinX, $MaxX, $MinY, $MaxY, $arrColor["HITS"], "N");

	if ($find_host=="Y")
		Graf($arrX, $arrY_host, $ImageHandle, $MinX, $MaxX, $MinY, $MaxY, $arrColor["HOSTS"], "N");

	if ($find_session=="Y")
		Graf($arrX, $arrY_session, $ImageHandle, $MinX, $MaxX, $MinY, $MaxY, $arrColor["SESSIONS"], "N");

	if ($find_event=="Y")
		Graf($arrX, $arrY_event, $ImageHandle, $MinX, $MaxX, $MinY, $MaxY, $arrColor["EVENTS"], "N");

	if (!$site_filtered)
	{
		if ($find_guest=="Y")
			Graf($arrX, $arrY_guest, $ImageHandle, $MinX, $MaxX, $MinY, $MaxY, $arrColor["GUESTS"], "N");

		if ($find_new_guest=="Y")
			Graf($arrX, $arrY_new_guest, $ImageHandle, $MinX, $MaxX, $MinY, $MaxY, $arrColor["NEW_GUESTS"], "N");
	}
}

/******************************************************
		send image to client
*******************************************************/

ShowImageHeader($ImageHandle);