<?php

/**
 * Пример вызова:
 * /usr/bin/php /var/www/site.ru/httpdocs/cron/getposition.php
 * 
 * Пример вызова с передачей php.ini (например, если бинарный php по умолчанию не видит ZendOptimizer)
 * /usr/bin/php --php-ini /etc/php.ini /var/www/site.ru/httpdocs/cron/getposition.php
 * 
 * Реальный путь на сервере к корневой директории сайта уточните в службе поддержки хостинга.
 * 
 */

@set_time_limit(90000);

// Подключаем основные классы с учетов размещения в директории ./cron/
// При размещении в корневой директории '/../' заменить на '/'
require_once(dirname(__FILE__) . '/../' . 'main_classes.php');

$kernel = & singleton('kernel');

// Загрузка модулей
$kernel->LoadModules();

$Seo = new Seo();

// Получаем список сайтов
$site = new site();
$site_result = $site->SelectSites();

// Если запрещено определение позиций Аопрта
if (defined('SEO_APORT') && !SEO_APORT)
{
	$SEO_APORT = false;
}
else 
{
	$SEO_APORT = true;
}

// Запрашиваем позиции для запросов каждого сайта и характеристики
while($row = mysql_fetch_assoc($site_result))
{
	// Сайт активный
	if ($row['site_is_active'])
	{
		$param = array();

		if (isset($row['site_id']))
		{
			$site_alias = $site->GetCurrentAlias($row['site_id']);

			if ($site_alias)
			{
				// Характеристики
				if ($info = $Seo->GetYandexCatalog($site_alias))
				{
					$param['seo_characteristic_yc_rubric'] = $info['topic'];
					$param['seo_characteristic_yc'] = $info['tyc'];
				}
				else
				{
					$param['seo_characteristic_yc_rubric'] = '';
					$param['seo_characteristic_yc'] = '';
				}

				if (trim($param['seo_characteristic_yc_rubric']) == '')
				{
					$param['seo_characteristic_catalog_yandex'] = 0;
				}
				else
				{
					$param['seo_characteristic_catalog_yandex'] = 1;
				}

				$param['seo_characteristic_date_time'] = date("d.m.Y H:i:s");
				$param['seo_characteristic_links_yandex'] = $Seo->GetLinksYandex($site_alias);
				$param['seo_characteristic_pr'] = $Seo->GetPageRank($site_alias);
				$param['seo_characteristic_links_google'] = $Seo->GetLinksGoogle($site_alias);
				$param['seo_characteristic_links_yandex'] = $Seo->GetLinksYandex($site_alias);
				$param['seo_characteristic_links_yahoo'] = $Seo->GetLinksYahoo($site_alias);
				$param['seo_characteristic_links_msn'] = $Seo->GetLinksMsn($site_alias);
				
				if ($SEO_APORT)
				{
					$param['seo_characteristic_indexed_aport'] = $Seo->GetIndexAport($site_alias);
					$param['seo_characteristic_catalog_aport'] = $Seo->GetAportCatalog($site_alias);
				}

				$param['seo_characteristic_indexed_yandex'] = $Seo->GetIndexYandex($site_alias);

				$param['seo_characteristic_indexed_msn'] = $Seo->GetIndexMsn($site_alias);
				$param['seo_characteristic_indexed_rambler'] = $Seo->GetIndexRambler($site_alias);
				$param['seo_characteristic_indexed_google'] = $Seo->GetIndexGoogle($site_alias);
				$param['seo_characteristic_catalog_rambler'] = $Seo->GetRamblerCatalog($site_alias);
				$param['seo_characteristic_catalog_mail'] = $Seo->GetMailCatalog($site_alias);
				$param['seo_characteristic_catalog_dmoz'] = $Seo->GetDmozCatalog($site_alias);
				

				if ($Seo->GetCounterRambler($site_alias))
				{
					$param['seo_characteristic_counter_rambler'] = 1;
				}
				else
				{
					$param['seo_characteristic_counter_rambler'] = 0;
				}

				if ($Seo->GetCounterSpyLog($site_alias))
				{
					$param['seo_characteristic_counter_spylog'] = 1;
				}
				else
				{
					$param['seo_characteristic_counter_spylog'] = 0;
				}

				if ($Seo->GetCounterHotLog($site_alias))
				{
					$param['seo_characteristic_counter_hotlog'] = 1;
				}
				else
				{
					$param['seo_characteristic_counter_hotlog'] = 0;
				}

				if ($Seo->GetCounterMail($site_alias))
				{
					$param['seo_characteristic_counter_mail'] = 1;
				}
				else
				{
					$param['seo_characteristic_counter_mail'] = 0;
				}

				if ($Seo->GetCounterLiveInternet($site_alias))
				{
					$param['seo_characteristic_counter_liveinternet'] = 1;
				}
				else
				{
					$param['seo_characteristic_counter_liveinternet'] = 0;
				}

				// Вынесено ниже для защиты от блокировки Yahoo запросов.
				$param['seo_characteristic_indexed_yahoo'] = $Seo->GetIndexYahoo($site_alias);

				$param['site_id'] = $row['site_id'];

				//Передаем характеристики методу для вставки в БД
				$Seo->InsertCharacteristic($param);

				// Очищаем кэш запрошенных страниц
				$Seo->ClearCachePage();

				// Характеристика добавлена успешно
				echo sprintf("Характеристика сайта '%s' рассчитана\n", $site_alias);

				sleep(1);

				// Получаем список запросов
				$result = $Seo->GetAllQuery($row['site_id']);

				//Найдена хотя бы одна запись в БД, удовлетворяющая условиям запроса
				if (mysql_num_rows($result) > 0)
				{
					$params = array();

					// Расчитываем позиции по всем запросам данного сайта
					while ($data = mysql_fetch_assoc($result))
					{
						$params['seo_search_query_id'] = $data['seo_search_query_id'];
						$params['seo_position_search_query_date_time'] = date("d.m.Y H:i:s");
						$params['seo_position_search_query_yandex'] = $Seo->GetPosYandex($site_alias, $data['seo_search_query_value']);
						$params['seo_position_search_query_rambler'] = $Seo->GetPosRambler($site_alias, $data['seo_search_query_value']);
						$params['seo_position_search_query_google'] = $Seo->GetPosGoogle($site_alias, $data['seo_search_query_value']);
						
						if ($SEO_APORT)
						{
							$params['seo_position_search_query_aport'] = $Seo->GetPosAport($site_alias, $data['seo_search_query_value']);
						}
						
						$params['seo_position_search_query_gogo'] = $Seo->GetPosGogo($site_alias, $data['seo_search_query_value']);
						$params['seo_position_search_query_yahoo'] = $Seo->GetPosYahoo($site_alias, $data['seo_search_query_value']);
						$params['seo_position_search_query_livesearch'] = $Seo->GetPosLivesearch($site_alias, $data['seo_search_query_value']);

						$Seo->InsertPositionSearch($params);

						echo sprintf("Позиции для сайта '%s' по запросу '%s' определены\n", $site_alias, $data['seo_search_query_value']);
					}

					sleep(1);
				}
			}
			else
			{
				// Ошибка, основной домен сайта не найден
				show_message("Основной алиас сайта не найден");
			}
		}
	}
}
?>