<?php
/* Создаем экземпляр класса магазина (при создании устанавливаем флаг необходимости очистки cookie) */
$shop = new shop(true);

$kernel = & singleton('kernel');

$current_shop_id = to_int($GLOBALS['LA']['shop_id']);

// Обработка скачивания файла электронного товара
if (isset($_GET['download_file']))
{
	$eitem_path = to_str($_GET['download_file']);

	// Получаем заказанный товар с данным путем
	if ($order_item_row = $shop->GetOrderItemByPath($eitem_path))
	{
		// Получаем информацию о заказе
		$order_row = $shop->GetOrder($order_item_row['shop_order_id']);

		if ($order_row)
		{
			$DateClass = new DateClass();

			// Проверяем, доступна ли ссылка (Ссылка доступна в течение суток после оплаты)
			if ($DateClass->DateSqlToUnix($order_row['shop_order_date_of_pay']) > time() - 24 * 60 * 60)
			{
				// Получаем информацию об электронной сущности заказанного товара
				$eitem_row = $shop->GetEitem($order_item_row['shop_eitem_id']);

				if ($eitem_row['shop_eitem_filename'] != '')
				{
					if (class_exists('File'))
					{
						$File = new File();
							
						$ext = $kernel->GetExtension($eitem_row['shop_eitem_filename']);
						$file_path = CMS_FOLDER . UPLOADDIR . "shop_{$current_shop_id}/eitems/item_catalog_{$eitem_row['shop_items_catalog_item_id']}/{$eitem_row['shop_eitem_id']}.{$ext}";

						if (is_file($file_path))
						{
							session_write_close();
							$File->Download($file_path, $eitem_row['shop_eitem_filename'], array('content_disposition' => 'attachment'));
							exit();
						}

						unset($File);
					}
				}
			}
		}
	}
}

if(preg_match("^user-(.*)^u", end($GLOBALS['URL_ARRAY']), $regs))
{
	// Установка cookies для аффилиат-программы
	setcookie('affiliate_name', $regs[1], time() + 31536000, '/');
	$break_if_path_not_found = false;
}
else
{
	$break_if_path_not_found = true;
}

// получаем для пути ассоциативный массив с id группы и id/url элемента
$GLOBALS['shop_item_path'] = $shop->GetItemPath($current_shop_id, '', $break_if_path_not_found);

/* Если путь существует */
if ($GLOBALS['shop_item_path'])
{
	$group_path = '';

	// получаем массив с деревом от текущей группы до корня
	$mas_groups_to_root = $shop->GetShopGroupsToRoot($GLOBALS['shop_item_path']['group'], $current_shop_id);

	// получаем данные о группе
	$row_group = $shop->GetGroup($GLOBALS['shop_item_path']['group']);

	// получаем данные из seo - полей для групп
	$seo_title = trim($row_group['shop_groups_seo_title']);
	$seo_description = trim($row_group['shop_groups_seo_description']);
	$seo_keywords = trim($row_group['shop_groups_seo_keywords']);

	// цикл по массиву с деревом для формирования пути по группам
	$count_groups=count($mas_groups_to_root);

	for ($i = $count_groups - 1; $i >= 0; $i--)
	{
		if ($i < $count_groups-1)
		{
			$group_path .= ' &#151; ';
		}

		if (trim($mas_groups_to_root[$i]['shop_groups_seo_title'])=='')
		{
			$group_path .= $mas_groups_to_root[$i]['shop_groups_name'];
		}
		else
		{
			$group_path .= $mas_groups_to_root[$i]['shop_groups_seo_title'];
		}
	}

	$item_name='';

	// Если вывод информационного элемента
	if ($GLOBALS['shop_item_path']['item'])
	{
		// получаем данные о товаре
		$row_item = $shop->GetItem($GLOBALS['shop_item_path']['item']);

		// имя элемента
		$item_name = $row_item['shop_items_catalog_name'];

		// проверяем если seo_title непустой, то в заголовок страницы подставляем его
		if (trim($row_item['shop_items_catalog_seo_title'])!='')
		{
			$item_name = trim($row_item['shop_items_catalog_seo_title']);
		}

		if ($group_path != '')
		{
			$item_name = ' &#151; '. $item_name;
		}
	}

	if (isset($GLOBALS['shop_item_path']['tag_name']) && class_exists('Tag'))
	{
		$oTag = new Tag();
		$tag_row = $oTag->GetTagByPath($GLOBALS['shop_item_path']['tag_name']);
		
		if ($tag_row)
		{
			$tag_name = "Метка: {$tag_row['tag_name']}. ";
		}
	}
	
	// формируем заголовок страницы
	$new_title = to_str($tag_name) . $group_path . $item_name;
}
else
{
	// Элемент/группа не найдены, возвращаем 404 ошибку.
	ShowHeader404();

	// Запрещаем отдавать 200-й заголовок
	if (!defined('IS_ERROR_404'))
	{
		define('IS_ERROR_404', true);
	}
	
	$site = & singleton('site');
	$site_row = $site->GetSite(CURRENT_SITE);

	if ($site_row['site_error404'])
	{
		$structure = & singleton('Structure');

		$structure_id = intval($site_row['site_error404']);
		$structure_row = $structure->GetStructureItem($structure_id);

		// Если тип - страница
		if ($structure_row['structure_type'] == 0)
		{
			$documents = & singleton('documents');
			$documents_version_row = $documents->GetCurrentDocumentVersion($structure_row['documents_id']);
			$documents_version_id = $documents_version_row['documents_version_id'];

			// Текущая страница
			$kernel->set_current_page($documents->GetDocumentVersionPath($documents_version_id));
$kernel->SetTemplate($documents_version_row['templates_id']);
		}
		elseif ($structure_row['structure_type'] == 1)
		{
			// Текущая страница - модуль
			$kernel->set_current_page($structure->GetStructureFilesPath() . "/Structure{$structure_id}.php");
$kernel->SetTemplate($structure_row['templates_id']);
		}
		else
		{
			// Типовая динамическая страница
			$lib_id = intval($structure_row['lib_id']);

			// Получаем параметры типовой динамической страницы
			$lib = new lib();
			$GLOBALS['LA'] = $lib->LoadLibPropertiesValue($lib_id, $structure_id);

/* Подключаем настройки типовой динамической страницы */
		$LibConfig = $lib->GetLibPath($lib_id) . "/lib_config_{$lib_id}.php";

		if (is_file($LibConfig) && is_readable($LibConfig))
		{
			include ($LibConfig);
		}

			$kernel->set_current_page($lib->GetLibPath($lib_id) . "/lib_{$lib_id}.php");
$kernel->SetTemplate($structure_row['templates_id']);
		}

		// Шаблон вывода для страницы
		$kernel->set_current_page_data_template($structure_row['data_templates_id']);
	}
	elseif (to_str($_SERVER['REQUEST_URI']) != '/')
	{
		header('Location: /');

		// Прекращаем выполнение
		exit();
	}
}

if (!empty($new_title))
{
	// отображаем группу

	if (!isset($row_item))
	{
		// Заголовок для группы задан
		if (!empty($seo_title))
		{
			$kernel->set_title($seo_title);
		}
		else // Описание для группы не задано
		{
			$kernel->set_title($new_title);
		}

		// Описание для группы задано
		if (!empty($seo_description))
		{
			$kernel->set_description($seo_description);
		}
		else // Описание для группы не задано
		{
			$kernel->set_description($new_title);
		}
		// Ключевые слова для группы заданы

		if (!empty($seo_keywords))
		{
			$kernel->set_keywords($seo_keywords);
		}
		else // Ключевые слова для группы не заданы
		{
			$kernel->set_keywords($new_title);
		}
	}
	else // отображаем элемент
	{
		// Описание для элемента задано
		if (!empty($row_item['shop_items_catalog_seo_title']))
		{
			$kernel->set_title(trim($row_item['shop_items_catalog_seo_title']));
		}
		else  // Описание для элемента не задано
		{
			$kernel->set_title($new_title);
		}

		// Описание для элемента задано
		if (!empty($row_item['shop_items_catalog_seo_description']))
		{
			$kernel->set_description(trim($row_item['shop_items_catalog_seo_description']));
		}
		else  // Описание для элемента не задано
		{
			$kernel->set_description($new_title);
		}

		// Ключевые слова для элемента заданы
		if (!empty($row_item['shop_items_catalog_seo_keywords']))
		{
			$kernel->set_keywords(trim($row_item['shop_items_catalog_seo_keywords']));
		}
		else // Ключевые слова для элемента не заданы
		{
			$kernel->set_keywords($new_title);
		}
	}
}

/* Обработка сравнения товаров */
/* Десериализуем массив */
if (isset($_COOKIE['SHOPCOMPARE']))
{
	$compare_items = @unserialize($shop->GetCookie('SHOPCOMPARE'));
	$compare_items = to_array($compare_items);
}
else
{
	$compare_items = array();
}

/* Добавление элементов */
foreach ($_GET as $key => $value)
{
	/* Выбираем из запроса товары, которые нужно добавить в список для сравнения */
	if (preg_match("/compare_id_(\d*)/u", $key, $matches))
	{
		$compare_id = to_int($matches[1]);
		/* Проверяем, есть ли этот товар в кукисах для сравнения */
		if (!in_array($compare_id, $compare_items))
		{
			/*Добавляем в массив кукисов*/
			$compare_items[] = $compare_id;
		}
	}
}

/* Удаление выбранного товара из сравнения */
if (isset($_GET['delete_compare']))
{
	foreach ($_GET as $key => $value)
	{
		/* Извлекаем индекс товара, который нужно удалить из сравнения и кукиса */
		if (preg_match("/del_compare_id_(\d*)/u", $key, $matches))
		{
			$compare_id = to_int($matches[1]);
			$i = array_search($compare_id, $compare_items);
			if ($i !== false)
			{
				unset($compare_items[$i]);
			}
		}
	}
}

/* Удаление всех сравнений */
if (isset($_GET['delete_all_compare']))
{
	$compare_items = array();
}

/* Устанавливаем кукисы */
if (count($compare_items) > 0)
{
	$shop->SetCookie("SHOPCOMPARE", serialize($compare_items), time() + 31536000, '/');
}
else
{
	$shop->SetCookie("SHOPCOMPARE", '', 0, '/');
	unset($_COOKIE['SHOPCOMPARE']);
}
?>