<?php 
/**
 * Система управления сайтом HostCMS v. 5.xx
 * Copyright © 2005-2010 ООО "Хостмэйк" (Hostmake LLC), http://www.hostcms.ru
 *
 * Ajax загрузчик формы списка поисковых запросов сайта.
 * 
 * Файл: /admin/seo/action/load_manage_query.php
 * 
 * @author Hostmake LLC
 * @version 5.x
 */
function LoadAjaxData(&$admin_forms)
{
	$on_page = $admin_forms->GetOnPageCount();
	$page = to_int($_REQUEST['limit']);
	$begin = ($page == 0) ? 0 : ($page - 1) * $on_page;

	$param = array();

	$param['limit'][0] = array('begin' => $begin, 'count' => $on_page);

	// Выборка нужных записей.
	$param['data'][] = "SELECT seo_search_query_id AS seo_search_query_id,
	site_id AS site_id, seo_search_query_value AS seo_search_query_value
	FROM `seo_search_query_table`
	WHERE `site_id` = '".CURRENT_SITE."'
	{FILTER_STRING} {ORDER_STRING} {LIMIT}";

	// Число нужных записей.
	$count = "SELECT count(seo_search_query_id) AS count
	FROM `seo_search_query_table`
	WHERE `site_id` = '".CURRENT_SITE."'
	{FILTER_STRING}";

	//Хлебные крошки
	$param['path_array'] = array(
	array (
	'link' => $admin_forms->GetHtmlCallDoLoadAjax('/admin/seo/seo.php', '', 141, 'load_data'),
	'onclick' => $admin_forms->GetOnClickCallDoLoadAjax('/admin/seo/seo.php', '', 141, 'load_data'),
	'name' => $GLOBALS['MSG_seo']['header_admin_characteristic_forms']),
	array(
	'link' => $admin_forms->GetHtmlCallDoLoadAjax('/admin/seo/seo.php', '', 142, 'load_data'),
	'onclick' => $admin_forms->GetOnClickCallDoLoadAjax('/admin/seo/seo.php', '', 142, 'load_data'),
	'name' => $GLOBALS['MSG_seo']['menu_search_query']));

	// Формируем верхнее меню.
	$menu = array();

	// Запрос
	$menu[$k = 0]['name'] = $GLOBALS['MSG_seo']['menu_query'];
	$menu[$k]['link'] = '';

	// Добавить
	$sub_menu = array();
	$sub_menu[$p = 0]['name'] = $GLOBALS['MSG_seo']['menu_query_add'];
	$sub_menu[$p]['link'] =  $admin_forms->GetHtmlCallTrigerSingleAction('edit_query', 'check_0_0', 142, 0, 0);
	$sub_menu[$p]['onclick'] = $admin_forms->GetOnClickCallTrigerSingleAction('edit_query', 'check_0_0', 142, 0, 0);
	$sub_menu[$p]['icon'] = '/admin/images/query_add.gif';
	$p++;

	//Определить позиции
	$sub_menu[$p]['name'] = $GLOBALS['MSG_seo']['menu_query_get_position'];
	$sub_menu[$p]['link'] =  $admin_forms->GetHtmlCallDoLoadAjax('/admin/seo/seo.php', '&calc_positions=1', 142, 'load_data');
	$sub_menu[$p]['onclick'] = $admin_forms->GetOnClickCallDoLoadAjax('/admin/seo/seo.php', '&calc_positions=1', 142, 'load_data');
	$sub_menu[$p]['icon'] = '/admin/images/query_go.gif';
	$p++;

	// Добавляем подэлементы.
	$menu[$k]['sub_items'] = $sub_menu;
	$param['menus'] = array($menu);
	$param['total_count'][] = $count;
	$param['current_page'] = $page;
	$param['on_page'] = $on_page;

	// Статистика
	$param['field_params'][0]['statist_field']['admin_forms_field_type'] = 7;// картинка-ссылка
	$param['field_params'][0]['statist_field']['admin_forms_field_link'] =  $admin_forms->GetHtmlCallDoLoadAjax('/admin/seo/seo.php', "&seo_search_query_id={seo_search_query_id}", 144, 'load_data');
	$param['field_params'][0]['statist_field']['admin_forms_field_onclick'] =  $admin_forms->GetOnClickCallDoLoadAjax('/admin/seo/seo.php', "&seo_search_query_id={seo_search_query_id}", 144, 'load_data');
	$param['field_params'][0]['statist_field']['admin_forms_field_image'] = "=/admin/images/chart_bar.gif";
	$param['field_params'][0]['statist_field']['admin_forms_field_alt'] = "=".$GLOBALS['MSG_seo']['statistic'];
	$param['field_params'][0]['statist_field']['admin_forms_field_title'] = "=".$GLOBALS['MSG_seo']['statistic'];

	//Заголовок формы
	$param['title'] = $GLOBALS['MSG_seo']['search_query'];

	// Число просматриваемых страниц в поисковых системах для определения позиции по поисковым запросам
	if (defined('SEO_SEARCH_PAGE_COUNT'))
	{
		$count_search_page = intval(SEO_SEARCH_PAGE_COUNT);
	}
	else
	{
		$count_search_page = 5;
	}

	// Вызвано событие "Определить позиции"
	if (isset($_REQUEST['calc_positions']))
	{
		//Установлен режим "только для чтения"
		if (defined('READ_ONLY') && READ_ONLY)
		{
			$kernel = & singleton('kernel');
			$kernel->ReadMode();
		}
		else
		{
			$site = new site();

			//Если счетчик уже существует
			if (isset($_REQUEST['counter']))
			{
				$counter = to_int($_REQUEST['counter']);
			}
			//Создаем новый счетчик
			else
			{
				$counter = 0;
			}

			$DataBase = & singleton('DataBase');
			$query = "SELECT *
			FROM `seo_search_query_table`
			WHERE `site_id` = '".CURRENT_SITE."' LIMIT $counter, 1";

			$result = $DataBase->query($query);
			$domain = $site->GetCurrentAlias(CURRENT_SITE);

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

				$data = mysql_fetch_assoc($result);
				$Seo_search_query_value = $data['seo_search_query_value'];
				$params['seo_search_query_id'] = $data['seo_search_query_id'];
				$params['seo_position_search_query_date_time'] = date("d.m.Y H:i:s");

				$kernel = & singleton('kernel');

				// Если запрещено определение позиций Аопрта
				if (defined('SEO_APORT') && !SEO_APORT)
				{
					$SEO_APORT = false;
				}
				else 
				{
					$SEO_APORT = true;
				}
				
				$params['seo_position_search_query_yandex'] = $Seo->GetPosYandex($domain, $Seo_search_query_value, array('page_count' => $count_search_page));
				$params['seo_position_search_query_rambler'] = $Seo->GetPosRambler($domain, $Seo_search_query_value, array('page_count' => $count_search_page));
				$params['seo_position_search_query_google'] = $Seo->GetPosGoogle($domain, $Seo_search_query_value, array('page_count' => $count_search_page));

				if ($SEO_APORT)
				{
					$params['seo_position_search_query_aport'] = $Seo->GetPosAport($domain, $Seo_search_query_value, array('page_count' => $count_search_page));
				}

				$params['seo_position_search_query_gogo'] = $Seo->GetPosGogo($domain, $Seo_search_query_value, array('page_count' => $count_search_page));
				$params['seo_position_search_query_yahoo'] = $Seo->GetPosYahoo($domain, $Seo_search_query_value, array('page_count' => $count_search_page));
				$params['seo_position_search_query_livesearch'] = $Seo->GetPosLivesearch($domain, $Seo_search_query_value, array('page_count' => $count_search_page));

				$Seo->InsertPositionSearch($params);

				//Увеличиваем значение счетчика
				$counter++;
				?>
				<script type="text/javascript">
				function set_location()
				{
					<?php echo $admin_forms->GetOnClickCallDoLoadAjax('/admin/seo/seo.php', "&calc_positions=1&counter=$counter", 142, 'load_data')?>
				}
				setTimeout ('set_location()', <?php echo 1 * 1000?>);
				</script>
				<?php 		
				//Сообщение о текущем состоянии функции
				show_message(sprintf($GLOBALS['MSG_seo']['get_position_query_success'], $counter));
			}

			if ($counter > 0)
			{
				if ($counter == 1)
				{
					show_message($GLOBALS['MSG_seo']['get_position_query_succ_one']);
				}
				else
				{
					show_message($GLOBALS['MSG_seo']['get_position_query_succ_many']);
				}
			}
			else
			{
				show_error_message($GLOBALS['MSG_seo']['get_position_query_error']);
			}
		}
	}
	return $param;
}

//Обработчик действий

/**
 * Обработчик события "Редактировать запрос"
 *
 * @param array $param 
 * @return boolean
 */
function edit_query(&$param)
{
	ob_start();

	//Установлен режим "только для чтения"
	if (defined('READ_ONLY') && READ_ONLY)
	{
		$kernel = & singleton('kernel');
		$kernel->ReadMode();
	}
	else
	{
		$Seo = & singleton('Seo');

		if (isset($param['data']))
		{
			//Редактирование данных первого источника
			if (isset($param['data'][0]))
			{
				foreach ($param['data'][0] as $key => $value)
				{
					// Определяем режим доступа пользователя и принадлежит ли объект пользователю
					$user_access = new user_access();

					// Определяем информацию об объекте
					$object_row = $Seo->GetQuery($key);

					if ($object_row)
					{
						$object_user_id = $object_row['users_id'];
					}
					else
					{
						$object_user_id = 0;
					}

					if ($user_access->IssetUserAccessForObject($object_user_id))
					{
						$edit_query_id = intval($key);

						include(CMS_FOLDER . 'admin/seo/action/form_edit_add_query.php');

						//Устанавливаем <title> для страницы
						$param['title'] = $edit_query_id == 0
						? $GLOBALS['MSG_seo']['query_add_form_title']
						: $GLOBALS['MSG_seo']['query_edit_form_title'];

						break;
					}
					else
					{
						$user_access->MessageOnlyOwn();
						$param['error'] = ob_get_clean();
						return ;
					}
				}
			}
		}
		$param['result'] = ob_get_clean();

		return true;
	}
}

/**
 * Обработчик события "Удалить запрос"
 *
 * @param array $param
 * @return boolean
 */
function delete_query(&$param)
{
	ob_start();

	//Установлен режим "только для чтения"
	if (defined('READ_ONLY') && READ_ONLY)
	{
		$kernel = & singleton('kernel');
		$kernel->ReadMode();
	}
	else
	{
		$count_deleted_query = 0;

		$Seo = new Seo();

		if (isset($param['data']))
		{
			foreach ($param['data'] as $dataset)
			{
				foreach ($dataset as $key => $value)
				{
					// Определяем режим доступа пользователя и принадлежит ли объект пользователю
					$user_access = new user_access();

					// Определяем информацию об объекте
					$object_row = $Seo->GetQuery($key);

					if ($object_row)
					{
						$object_user_id = $object_row['users_id'];
					}
					else
					{
						$object_user_id = 0;
					}

					if ($user_access->IssetUserAccessForObject($object_user_id))
					{
						if (!$Seo->DeleteQuery($key))
						{
							$flag_deleted_query_access = false;
						}
						else
						{
							$count_deleted_query++;

							$flag_deleted_query_access = true;
						}
					}
					else
					{
						$user_access->MessageOnlyOwn();

						$flag_deleted_query_access = false;
					}
				}

				if ($flag_deleted_query_access)
				{
					if ($count_deleted_query == 1)
					{
						//Удаление характеристики успешно завершено
						show_message($GLOBALS['MSG_seo']['delete_query_success']);
					}
					else
					{
						//Удаление характеристик успешно завершено
						show_message($GLOBALS['MSG_seo']['delete_queryes_success']);
					}
				}
				else
				{
					//Ошибка удаления
					show_error_message($GLOBALS['MSG_seo']['delete_query_error']);
				}
			}
		}
	}
	$param['error'] = ob_get_clean();
}

?>