<?php 

/**
 * Система управления сайтом HostCMS v. 5.xx
 * Copyright © 2005-2008 ООО "Хостмэйк" (Hostmake LLC), http://www.hostcms.ru
 *
 * Построение графиков SEO-модуля.
 * 
 * Файл: /admin/seo/seo_grap.php
 * 
 * @author Hostmake LLC
 * @version 5.2
 */

// Подключаем основные классы
require_once('../../main_classes.php');

$admin = new Admin();

$admin->admin_session_valid('seo'); //Проверка авторизации пользователя

$kernel = & singleton('kernel');

// Инсталяция всех модулей ядра
$kernel->LoadModules(!isset($_REQUEST['JsHttpRequest']));

// Инициализация CURRENT_SITE и констант
$admin->admin_init();

/**
 * Построение графика
 *
 * @param array $report Массив значений
 * @param int $query_id Идентификатор поискового запроса
 * @param int $id_return Идентификатор данных, для которых строится график
 * - $id_return = 0 Пустой рисунок
 * - $id_return = 1 ТИЦ
 * - $id_return = 2 Ссылающиеся страницы
 * - $id_return = 3 Проиндексированно страниц
 * - $id_return = 4 Позиции по поисковым запросам
 * - $id_return = 5 PR
 * @param str $select_pos_search Строка запроса
 * @param array $param_array Массив дополнительных параметров
 * - str $param_array['date_start'] Дата начала отчетного периода
 * - str $param_array['date_end'] Дата окончания отчетного периода
 * @return bool
 */
function write_graphic ($report = array(), $query_id = -1, $id_return, $select_pos_search, $param_array = array())
{
	$DATA = array();
	$LEGEND = array();

	$id_return = to_int($id_return);
	$graph = new graphic();
	$date = new DateClass();

	// Кол-во элементов массива
	$count = 0;

	$param = array();

	switch ($id_return)
	{
		default:
		case 0:
			{
				// Нарисуем пустое изображение
				$im=imagecreate(100, 100);

				$white = imagecolorallocate($im, 255, 255, 255);
				imagefill($im, 0, 0, $white);

				// Генерация изображения
				ImagePNG($im);

				imagedestroy($im);

				break;
			}
		case 1:
			{
				// тИЦ
				foreach ($report as $key => $arr_val)
				{
					// Определяем кол-во элементов для массива
					$count = count($report);

					if (isset($report[$key]['seo_characteristic_yc']))
					{
						$DATA[0][] = $report[$key]['seo_characteristic_yc'];
					}

					if (isset($report[$key]['seo_characteristic_date_time']))
					{
						$DATA['x'][] = $date->date_format($report[$key]['seo_characteristic_date_time']);
					}
				}
				$LEGEND[0] = 'тИЦ';

				// Дополнительные параметры
				$param['cheakpoint'] = true;
				$param['null'] = true;
				//$param['divis'] = 5;

				if ($count > 0 && isset($DATA[0]) && count($DATA[0]) > 1 && isset($DATA['x']) && count($DATA['x']) > 1)
				{
					// Строим график
					$graph->Graphic_Linear($DATA, $LEGEND, $param);
				}

				break;
			}
		case 2:
			{
				// Ссылающиеся страницы
				$count = count($report);
				foreach ($report as $key => $arr_val)
				{
					$i = 0;

					// По данным Google
					if (isset($report[$key]['seo_characteristic_links_google']))
					{
						$DATA[$i][] = $report[$key]['seo_characteristic_links_google'];
						$LEGEND[$i++] = 'Google.com';
					}

					// По данным Yandex
					if (isset($report[$key]['seo_characteristic_links_yandex']))
					{
						$DATA[$i][] = $report[$key]['seo_characteristic_links_yandex'];
						$LEGEND[$i++] = 'Yandex.ru';
					}

					// По данным Yahoo
					if (isset($report[$key]['seo_characteristic_links_yahoo']))
					{
						$DATA[$i][] = $report[$key]['seo_characteristic_links_yahoo'];
						$LEGEND[$i++] = 'Yahoo.com';
					}

					// По данным MSN
					if (isset($report[$key]['seo_characteristic_links_msn']))
					{
						$DATA[$i][] = $report[$key]['seo_characteristic_links_msn'];
						$LEGEND[$i++] = 'MSN.com';
					}

					// Дата
					if (isset($report[$key]['seo_characteristic_date_time']))
					{
						$DATA['x'][] = $date->date_format($report[$key]['seo_characteristic_date_time']);											}
				}

				// Дополнительные параметры
				$param['cheakpoint'] = true;
				$param['null'] = true;
				//$param['divis'] = 5;

				if ($count > 0 && isset($DATA[0]) && count($DATA[0]) > 1 && isset($DATA['x']) && count($DATA['x']) > 1)
				{
					// Строим график
					$graph->Graphic_Linear($DATA, $LEGEND, $param);
				}

				break;
			}
		case 3:
			{
				// Проиндексированно страниц
				$count = count($report);

				foreach ($report as $key => $arr_val)
				{
					$i = 0;

					// Сервисом Yandex
					if (isset($report[$key]['seo_characteristic_indexed_yandex']))
					{
						$DATA[$i][] = $report[$key]['seo_characteristic_indexed_yandex'];
						$LEGEND[$i++] = 'Yandex.ru';
					}

					// Сервисом Rambler
					if (isset($report[$key]['seo_characteristic_indexed_rambler']))
					{
						$DATA[$i][] = $report[$key]['seo_characteristic_indexed_rambler'];
						$LEGEND[$i++] = 'Rambler.ru';

					}

					// Сервисом Google
					if (isset($report[$key]['seo_characteristic_indexed_google']))
					{
						$DATA[$i][] = $report[$key]['seo_characteristic_indexed_google'];
						$LEGEND[$i++] = 'Google.com';

					}

					// Сервисом Aport
					if (isset($report[$key]['seo_characteristic_indexed_aport']))
					{
						$DATA[$i][] = $report[$key]['seo_characteristic_indexed_aport'];
						$LEGEND[$i++] = 'Aport.ru';
					}

					// Сервисом Yahoo
					if (isset($report[$key]['seo_characteristic_indexed_yahoo']))
					{
						$DATA[$i][] = $report[$key]['seo_characteristic_indexed_yahoo'];
						$LEGEND[$i++] = 'Yahoo.com';
					}

					// Сервисом MSN
					if (isset($report[$key]['seo_characteristic_indexed_msn']))
					{
						$DATA[$i][] = $report[$key]['seo_characteristic_indexed_msn'];
						$LEGEND[$i++] = 'MSN.com';
					}

					// Дата
					if (isset($report[$key]['seo_characteristic_date_time']))
					{
						$DATA['x'][] = $date->date_format($report[$key]['seo_characteristic_date_time']);
					}
				}

				// Дополнительные параметры
				$param['cheakpoint'] = true;
				$param['null'] = true;
				//$param['divis'] = 5;

				if ($count > 0 && isset($DATA[0]) && count($DATA[0]) > 1 && isset($DATA['x']) && count($DATA['x']) > 1)
				{
					// Строим график
					$graph->Graphic_Linear($DATA, $LEGEND, $param);
				}

				break;
			}
		case 4:
			{
				// Позиции по поисковым запросам
				if ($select_pos_search !== "")
				{
					$DataBase = & singleton('DataBase');

					$query_id = intval($query_id);

					$date = '';

					// Начальная дата
					if (isset($param_array['date_start']))
					{
						$date_start = quote_smart(to_str($param_array['date_start']));
					}
					else
					{
						// Ставим равной месяц назад от текущей даты
						$date_start = date("Y-m-d H:i:s", time() - 60*60*24*31);
					}

					$date .= " AND `seo_position_search_query_date_time` > '$date_start'";

					// Дата конечная
					if (isset($param_array['date_end']))
					{
						$date_end = quote_smart(to_str($param_array['date_end']));
					}
					else
					{
						// Ставим равной Текущей дате
						$date_end = date("Y-m-d H:i:s");
					}

					$date .= " AND `seo_position_search_query_date_time` < '$date_end'";

					$query = "SELECT ".$select_pos_search." `seo_position_search_query_date_time`
					FROM `seo_position_search_query_table`
					WHERE `seo_search_query_id` = '$query_id'
					{$date}
					ORDER BY `seo_position_search_query_date_time` ASC";

					$result = $DataBase->query($query);

					$j = 0;

					while ($row = mysql_fetch_assoc($result))
					{
						$report[] = $row;

						$i = 0;

						// В Yandex
						if (isset($report[$j]['seo_position_search_query_yandex']))
						{
							$DATA[$i][] = $report[$j]['seo_position_search_query_yandex'];
							$LEGEND[$i++] = 'Yandex.ru';

						}

						// В Rambler
						if (isset($report[$j]['seo_position_search_query_rambler']))
						{
							$DATA[$i][] = $report[$j]['seo_position_search_query_rambler'];
							$LEGEND[$i++] = 'Rambler.ru';

						}

						// В Google
						if (isset($report[$j]['seo_position_search_query_google']))
						{
							$DATA[$i][] = $report[$j]['seo_position_search_query_google'];
							$LEGEND[$i++] = 'Google.com';

						}

						// В Aport
						if (isset($report[$j]['seo_position_search_query_aport']))
						{
							$DATA[$i][] = $report[$j]['seo_position_search_query_aport'];
							$LEGEND[$i++] = 'Aport.ru';

						}

						// В GoGo
						if (isset($report[$j]['seo_position_search_query_gogo']))
						{
							$DATA[$i][] = $report[$j]['seo_position_search_query_gogo'];
							$LEGEND[$i++] = 'GoGo.ru';

						}

						// В Yahoo
						if (isset($report[$j]['seo_position_search_query_yahoo']))
						{
							$DATA[$i][] = $report[$j]['seo_position_search_query_yahoo'];
							$LEGEND[$i++] = 'Yahoo.com';

						}

						// В LiveSearch
						if (isset($report[$j]['seo_position_search_query_livesearch']))
						{
							$DATA[$i][] = $report[$j]['seo_position_search_query_livesearch'];
							$LEGEND[$i++] = 'LiveSearch.ru';

						}
						
						$date = & singleton('DateClass');

						// Дата
						if (isset($report[$j]['seo_position_search_query_date_time']))
						{
							$DATA['x'][] = $date->date_format($report[$j]['seo_position_search_query_date_time']);
						}

						$j++;
					}

					$count = count($report);

					/*
					foreach ($report as $key => $arr_val)
					{

					}
					*/

					// Дополнительные параметры
					$param['cheakpoint'] = true;
					$param['null'] = true;
					//$param['divis'] = 2;
					$param['invers'] = true;

					if ($count > 0 && isset($DATA[0]) && count($DATA[0]) > 1 && isset($DATA['x']) && count($DATA['x']) > 1)
					{
						// Строим график
						$graph->Graphic_Linear($DATA, $LEGEND, $param);
					}
				}
				else
				{
					return false;
				}

				break;
			}
		case 5:
			{
				// PageRank
				foreach ($report as $key => $arr_val)
				{
					// Определяем кол-во элементов для массива
					$count = count($report);

					if (isset($report[$key]['seo_characteristic_pr']))
					{
						$DATA[0][] = $report[$key]['seo_characteristic_pr'];
					}

					if (isset($report[$key]['seo_characteristic_date_time']))
					{
						$DATA['x'][] = $date->date_format($report[$key]['seo_characteristic_date_time']);
					}
				}

				$LEGEND[0] = 'PageRank';

				// Дополнительные параметры
				$param['cheakpoint'] = true;
				$param['null'] = true;
				//				$param['divis'] = 5;

				if ($count > 0 && isset($DATA[0]) && count($DATA[0]) > 1 && isset($DATA['x']) && count($DATA['x']) > 1)
				{
					// Строим график
					$graph->Graphic_Linear($DATA, $LEGEND, $param);
				}

				break;
			}
	}

	return true;
}

$DataBase = & singleton('DataBase');

$report = array();
$report_quer = array();

$date = "";
$select = "";
$select_pos_search = "";

// Идентификатор данных, для которых строится график

if (isset($_REQUEST["id_return"]))
{
	$id_return = to_int($_REQUEST["id_return"]);
}
else
{
	$id_return = 0;
}

// Начальная дата
if (isset($_REQUEST['date_start']))
{
	$date_start = quote_smart(to_str($_REQUEST['date_start']));
}
else
{
	// Ставим равной месяц назад от текущей даты
	$date_start = date("Y-m-d H:i:s", time() - 60*60*24*31);
}

$date .= " AND `seo_characteristic_date_time` > '$date_start'";

// Дата конечная
if (isset($_REQUEST['date_end']))
{
	$date_end = quote_smart(to_str($_REQUEST['date_end']));
}
else
{
	// Ставим равной Текущей дате
	$date_end = date("Y-m-d H:i:s");
}

$date .= " AND `seo_characteristic_date_time` < '$date_end'";

$param = array();
$param['date_end'] = $date_end;
$param['date_start'] = $date_start;

// Идентификатор поискового запроса
if (isset($_REQUEST['query_id']) && $_REQUEST['query_id'])
{
	$query_id = to_int($_REQUEST['query_id']);
}
else
{
	$query_id = -1;
}

// PR
if (isset($_REQUEST['pr']) && $_REQUEST['pr'] == 1)
{
	// Включаем в запрос
	$select .= " `seo_characteristic_pr`,";
}

// тИЦ
if (isset($_REQUEST['tyc']) && $_REQUEST['tyc'] == 1)
{
	// Включаем в запрос
	$select .= " `seo_characteristic_yc`,";
}

// Позиция по поисковым запросам в сервисе Yandex
if (isset($_REQUEST['position_yandex']) && $_REQUEST['position_yandex'] == 1)
{
	// Включаем в запрос
	$select_pos_search .= " `seo_position_search_query_yandex`,";
}

// Позиция по поисковым запросам в сервисе Google
if (isset($_REQUEST['position_google']) && $_REQUEST['position_google'] == 1)
{
	// Включаем в запрос
	$select_pos_search .= " `seo_position_search_query_google`,";
}

// Позиция по поисковым запросам в сервисе Rambler
if (isset($_REQUEST['position_rambler']) && $_REQUEST['position_rambler'] == 1)
{
	// Включаем в запрос
	$select_pos_search .= " `seo_position_search_query_rambler`,";
}

// Позиция по поисковым запросам в сервисе Aport
if (isset($_REQUEST['position_aport']) && $_REQUEST['position_aport'] == 1)
{
	// Включаем в запрос
	$select_pos_search .= " `seo_position_search_query_aport`,";
}

// Позиция по поисковым запросам в сервисе GoGo
if (isset($_REQUEST['position_gogo']) && $_REQUEST['position_gogo'] == 1)
{
	// Включаем в запрос
	$select_pos_search .= " `seo_position_search_query_gogo`,";
}

// Позиция по поисковым запросам в сервисе Yahoo
if (isset($_REQUEST['position_yahoo']) && $_REQUEST['position_yahoo'] == 1)
{
	// Включаем в запрос
	$select_pos_search .= " `seo_position_search_query_yahoo`,";
}

// Позиция по поисковым запросам в сервисе LiveSearch
if (isset($_REQUEST['position_livesearch']) && $_REQUEST['position_livesearch'] == 1)
{
	// Включаем в запрос
	$select_pos_search .= " `seo_position_search_query_livesearch`,";
}

// Количество ссылающихся страниц по данным Google
if (isset($_REQUEST['links_google']) && $_REQUEST['links_google'] == 1)
{
	// Включаем в запрос
	$select .= " `seo_characteristic_links_google`,";
}

// Количество ссылающихся страниц по данным Yandex
if (isset($_REQUEST['links_yandex']) && $_REQUEST['links_yandex'] == 1)
{
	// Включаем в запрос
	$select .= " `seo_characteristic_links_yandex`,";
}

// Количество ссылающихся страниц по данным Yahoo
if (isset($_REQUEST['links_yahoo']) && $_REQUEST['links_yahoo'] == 1)
{
	// Включаем в запрос
	$select .= " `seo_characteristic_links_yahoo`,";
}

// Количество ссылающихся страниц по данным MSN
if (isset($_REQUEST['links_msn']) && $_REQUEST['links_msn'] == 1)
{
	// Включаем в запрос
	$select .= " `seo_characteristic_links_msn`,";
}

// Количество индексированных страниц сервисом Aport
if (isset($_REQUEST['indexed_aport']) && $_REQUEST['indexed_aport'] == 1)
{
	// Включаем в запрос
	$select .= " `seo_characteristic_indexed_aport`,";
}

// Количество индексированных страниц сервисом Yandex
if (isset($_REQUEST['indexed_yandex']) && $_REQUEST['indexed_yandex'] == 1)
{
	// Включаем в запрос
	$select .= " `seo_characteristic_indexed_yandex`,";
}

// Количество индексированных страниц сервисом Yahoo
if (isset($_REQUEST['indexed_yahoo']) && $_REQUEST['indexed_yahoo'] == 1)
{
	// Включаем в запрос
	$select .= " `seo_characteristic_indexed_yahoo`,";
}

// Количество индексированных страниц сервисом MSN
if (isset($_REQUEST['indexed_msn']) && $_REQUEST['indexed_msn'] == 1)
{
	// Включаем в запрос
	$select .= " `seo_characteristic_indexed_msn`,";
}

// Количество индексированных страниц сервисом Rambler
if (isset($_REQUEST['indexed_rambler']) && $_REQUEST['indexed_rambler'] == 1)
{
	// Включаем в запрос
	$select .= " `seo_characteristic_indexed_rambler`,";
}

// Количество индексированных страниц сервисом Google
if (isset($_REQUEST['indexed_google']) && $_REQUEST['indexed_google'] == 1)
{
	// Включаем в запрос
	$select .= " `seo_characteristic_indexed_google`,";
}

// Наличие в каталоге Yandex
if (isset($_REQUEST['catalog_yandex']) && $_REQUEST['catalog_yandex'] == 1)
{
	// Включаем в запрос
	$select .= " `seo_characteristic_catalog_yandex`,";
}

// Наличие в каталоге Rambler
if (isset($_REQUEST['catalog_rambler']) && $_REQUEST['catalog_rambler'] == 1)
{
	// Включаем в запрос
	$select .= " `seo_characteristic_catalog_rambler`,";
}

// Наличие в каталоге Mail
if (isset($_REQUEST['catalog_mail']) && $_REQUEST['catalog_mail'] == 1)
{
	// Включаем в запрос
	$select .= " `seo_characteristic_catalog_mail`,";
}

// Наличие в каталоге Dmoz
if (isset($_REQUEST['catalog_dmoz']) && $_REQUEST['catalog_dmoz'] == 1)
{
	// Включаем в запрос
	$select .= " `seo_characteristic_catalog_dmoz`,";
}

// Наличие в каталоге Aport
if (isset($_REQUEST['catalog_aport'])  && $_REQUEST['catalog_aport'] == 1)
{
	// Включаем в запрос
	$select .= " `seo_characteristic_catalog_aport`,";
}

// Наличие счетчика Rambler
if (isset($_REQUEST['counter_rambler']) && $_REQUEST['counter_rambler'] == 1)
{
	// Включаем в запрос
	$select .= " `seo_characteristic_counter_rambler`,";
}

// Наличие счетчика SpyLog
if (isset($_REQUEST['counter_spylog']) && $_REQUEST['counter_spylog'] == 1)
{
	// Включаем в запрос
	$select .= " `seo_characteristic_counter_spylog`,";
}

// Наличие счетчика HotLog
if (isset($_REQUEST['counter_hotlog']) && $_REQUEST['counter_hotlog'] == 1)
{
	// Включаем в запрос
	$select .= " `seo_characteristic_counter_hotlog`,";
}

// Наличие счетчика Mail
if (isset($_REQUEST['counter_mail']) && $_REQUEST['counter_mail'] == 1)
{
	// Включаем в запрос
	$select .= " `seo_characteristic_counter_mail`,";
}

// Наличие счетчика LiveSearch
if (isset($_REQUEST['counter_liveinternet']) && $_REQUEST['counter_liveinternet'] == 1)
{
	// Включаем в запрос
	$select .= " `seo_characteristic_counter_liveinternet`";
}

// Запрос по основным характеристикам не пустой
if ($select !== "")
{
	$query = "SELECT ".$select." `seo_characteristic_date_time`
	FROM `seo_characteristic_table`
	WHERE `site_id` = '".CURRENT_SITE."' ".$date."	
	ORDER BY `seo_characteristic_date_time` ASC";

	$result = $DataBase->query($query);
	$count = mysql_num_rows($result);

	while ($row = mysql_fetch_assoc($result))
	{
		$report[] = $row;
	}

	header("Content-type: image/gif");
	write_graphic($report, $query_id, $id_return, $select_pos_search);
}
// Запрос по позициям по поисковым запросам не пустой
elseif ($select_pos_search !== 0)
{
	$report = array();

	header("Content-type: image/gif");
	write_graphic($report, $query_id, $id_return, $select_pos_search, $param);
}
// Ошибка
else
{
	return false;
}

?>