<?php

@ini_set('display_errors', 1);

error_reporting(E_ALL);

@set_time_limit(90000);

$kernel = & singleton('kernel');

if (defined('READ_ONLY') && READ_ONLY)
{
	$kernel->ReadMode();
	exit();
}

function bom()
{
	if(strtoupper(SITE_CODING) == "UTF-8")
	{
		echo $bom = chr(0xEF).chr(0xBB).chr(0xBF);
	}
}

// Директория для хранения временных файлов при обмене
$tmp_dir = CMS_FOLDER . TMP_DIR . "1c_exchange_files/";

$DateClass = new DateClass();

$DataBase = & singleton('DataBase');

$shop = & singleton('shop');

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

$row_shop = $shop->GetShop($shop_shops_id);

// 100 мБ
//$file_limit = 100000000;

// 1 мБ
$file_limit = 1000000;

// bugfix
usleep(10);

// См. http://www.hostcms.ru/support/faq/modules/shop/1c-php-cgi/

// Решение проблемы авторизации при PHP в режиме CGI
if (isset($_REQUEST['authorization'])
|| (isset($_SERVER['argv'][0]) && empty($_SERVER['PHP_AUTH_USER']) && empty($_SERVER['PHP_AUTH_PW'])))
{
	if (isset($_REQUEST['authorization']))
	{
		$authorization_base64 = $_REQUEST['authorization'];
	}
	else
	{
		$authorization_base64 = mb_substr($_SERVER['argv'][0], 14);
	}

	$authorization = base64_decode(mb_substr($authorization_base64, 6));
	$authorization_explode = explode(':', $authorization);

	if (count($authorization_explode) == 2)
	{
		list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = $authorization_explode;
	}
	unset($authorization);
}

if (!isset($_SERVER['PHP_AUTH_USER']))
{
	header('WWW-Authenticate: Basic realm="HostCMS"');
	header('HTTP/1.0 401 Unauthorized');
	exit;
}
elseif (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW']))
{
	$Admin = new Admin();

	// авторизация
	$answr = $Admin->UserAuth($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']);

	if($answr !== true)
	{
		// авторизация не пройдена
		exit;
	}
}
else
{
	exit();
}

$data = '';

if (isset($_GET['type']) && $_GET['type'] == 'catalog' && isset($_GET['mode']) && $_GET['mode'] == 'checkauth')
{
	// генерируем GUID-ID
	$guid = $kernel->Guid();

	setcookie("1c_exchange", $guid);

	bom();
	
	// Возвращаем ответ 1С
	echo "success" . "\n";
	echo "1c_exchange" . "\n";
	echo "$guid" . "\n";
}
elseif (isset($_GET['type']) && $_GET['type'] == 'catalog'
&& isset($_GET['mode']) && $_GET['mode'] == 'init')
{
	bom();
	
	// file_limit = 1 мегабайт
	echo "zip=no" . "\n";
	echo "file_limit=$file_limit" . "\n";

	$old_import_files = array(0 => md5("import.xml"), 1 => md5("offers.xml"));

	// Необходимо удалить файлы старого импорта (если таковые остались)
	foreach($old_import_files as $old_filename)
	{
		$file = $tmp_dir . $old_filename;

		if(file_exists($file))
		{
			@unlink($file);
		}
	}
}
elseif (isset($_GET['type']) && $_GET['type'] == 'catalog'
&& isset($_GET['mode']) && $_GET['mode'] == 'file'
&& isset($_GET['filename']))
{
	bom();
	
	// Нам передали картинку, инициируем импорт данных до обработки картинки
	$import_file = $tmp_dir . md5("import.xml");

	// Необходимо проимпортировать файл "import.xml", созданный ранее
	if(file_exists($import_file) && $_GET['filename'] != 'import.xml' && $_GET['filename'] != 'offers.xml')
	{
		// Получаем структурированный массив данных из CommerceML файла
		$array_of_cml_data = $kernel->Xml2Array(file_get_contents($import_file));

		// Отправляем данные на обработку, $shop_shops_id - идентификатор интернет-магазина, 1 - флаг, указывающий что делать с товарами уже существующими в магазине (Обновить информацию для существующих товаров), 0 - идентификатор группы товаров, в которую необходимо выгружать товары (корневая группа)
		$shop->ImportCML($array_of_cml_data, $shop_shops_id, 1, 0, "", FALSE);

		// Удаляем файл после импорта
		@unlink($import_file);
	}
	
	if(isset($GLOBALS['HTTP_RAW_POST_DATA']))
	{
		// Получаем тип переданного файла
		$array_data = explode("/", $_GET['filename']);
	
		//Считываем файл в строку
		$data = $GLOBALS['HTTP_RAW_POST_DATA'];

		if($_GET['filename'] == "import.xml")
		{
			if(!is_dir($tmp_dir))
			{
				if (@mkdir($tmp_dir, CHMOD))
				{
					@chmod($tmp_dir, CHMOD);
				}
			}

			// Открываем файл для дозаписи в бинарном режиме
			$import_file = fopen($tmp_dir . md5($_GET['filename']), "a");
				
			if($import_file)
			{
				fwrite($import_file, $data);

				fclose($import_file);
			}
		}
		elseif($_GET['filename'] == "offers.xml")
		{
			if(!is_dir($tmp_dir))
			{
				if (@mkdir($tmp_dir, CHMOD))
				{
					@chmod($tmp_dir, CHMOD);
				}
			}

			// Открываем файл для дозаписи в бинарном режиме
			$offers_file = fopen($tmp_dir . md5($_GET['filename']), "a");
				
			if($offers_file)
			{
				fwrite($offers_file, $data);

				fclose($offers_file);
			}
		}

		if(count($array_data) > 1)
		{
			// Файл изображения для товара/группы
			$item_big_image = end($array_data);
			
			if(($addUrl = to_str($_SERVER['REQUEST_URI'])) != '' 
			&& mb_strpos($addUrl, '#') !== false)
			{
				$addUrl = explode('#', $addUrl);
				
				$item_big_image .= '#' . $addUrl[1];
			}
			
			$item_import_guid = basename($item_big_image, '.'.$kernel->GetExtension($item_big_image));
				
			if(mb_strpos($item_import_guid, '#') !== false)	
			{
				$item_import_guid = explode('#', $item_import_guid);
				$item_import_guid = explode('_', $item_import_guid[1]);
				$item_import_guid = $item_import_guid[0];
			}
			
			// Если гуид содержит два GUID, соед. "_", значит Guid слева от символа "_" - это Guid товара/группы, а справа - дополнительного свойства типа изображение
			if (mb_strpos($item_import_guid, '_') !== false)
			{
				$item_import_guid_explode = explode('_', $item_import_guid);
				$item_import_guid = $item_import_guid_explode[0];
				$property_import_guid = $item_import_guid_explode[1]; 
			}
			else
			{
				// Дополнительное свойство не указано
				$property_import_guid = false;
			}
				
			$item_import_guid = quote_smart($item_import_guid);
			
			if(strlen($item_import_guid) == 32)
			{
				$item_import_guid = substr($item_import_guid, 0, 8) . '-' .
					substr($item_import_guid, 8, 4) . '-' .
					substr($item_import_guid, 12, 4) . '-' .
					substr($item_import_guid, 16, 4) . '-' .
					substr($item_import_guid, 20, 12);
			}
			
			//$property_import_guid = quote_smart($property_import_guid);
				
			$item_res = $shop->GetItemByParam(array('shop_items_cml_id' => $item_import_guid, 'shop_shops_id' => $shop_shops_id));
			
			// Если нашли товар по $item_import_guid и свойство $property_import_guid задано, тогда начинаем обработку 
			if($item_res && mysql_num_rows($item_res) > 0)
			{
				if($property_import_guid != '')
				{
					$property_row = $shop->GetItemPropertyIdByCmlId($property_import_guid, $shop_shops_id);
				}
				else
				{
					$property_row = false;
				}
			
				$item_data = mysql_fetch_assoc($item_res);

				// Найден товар, которому принадлежит изображение
				$item_id = $item_data['shop_items_catalog_item_id'];

				$uploaddir = $shop->GetItemDir($item_id);
				
				
				$kernel->PathMkdir($uploaddir);

				// Константа UPLOADDIR не определена
				if (!defined('UPLOADDIR'))
				{
					$site_row = $site->GetSite($row_shop['site_id']);

					$uploaddir_root_directory = $site_row['site_uploaddir'];
				}
				else
				{
					$uploaddir_root_directory = UPLOADDIR;
				}

				// Получаем путь к файлу ватермарка
				$watermark_file_path = CMS_FOLDER . $uploaddir_root_directory . 'shop_' . $shop_shops_id . '/watermarks/' .$row_shop['shop_watermark_file'];
				
				if(!is_file($watermark_file_path))
				{
					// Если файл не существует, затираем путь к нему, во избежание ошибок по инциденту 49408
					$watermark_file_path = '';
				}

				$big_image_watermark_x_position = to_str($row_shop['shop_watermark_default_position_x']);
					
				$big_image_watermark_y_position = to_str($row_shop['shop_watermark_default_position_y']);

				$small_image_watermark_x_position = $big_image_watermark_x_position;

				$small_image_watermark_y_position = $big_image_watermark_y_position;

				if ($data != '')
				{
					// Нам передали файл большого изображения, получаем настройки размера изображения и водяного знака из магазина
					
					if($property_row === false)
					{
						$maximal_width_big_image = to_int($row_shop['shop_image_big_max_width']);
						$maximal_height_big_image = to_int($row_shop['shop_image_big_max_height']);				
					}
					else
					{
						$maximal_width_big_image = to_int($property_row['shop_list_of_properties_default_big_width']);
						$maximal_height_big_image = to_int($property_row['shop_list_of_properties_default_big_height']);
					}
					
					$big_image_use_watermark = to_int($row_shop['shop_watermark_default_use_big']);
						
					// Если малое изображение не задано, создаем его из большого
					$create_small_image_from_big_image = true;

					$small_image_is_defined = false;

					$item_small_image = $item_big_image;
						
					// Если указано создавать малое изображение из большого, либо малое изображение передано, получаем его настройки
					
					if($property_row === false)
					{
						$maximal_width_small_image = to_int($row_shop['shop_image_small_max_width']);
						$maximal_height_small_image = to_int($row_shop['shop_image_small_max_height']);					
					}
					else
					{	
						$maximal_width_small_image = to_int($property_row['shop_list_of_properties_default_small_width']);
						$maximal_height_small_image = to_int($property_row['shop_list_of_properties_default_small_height']);
					}
					
					
					
					$small_image_use_watermark = to_int($row_shop['shop_watermark_default_use_small']);

					
					// Генерируем путь для малой картинки. Если в настройках магазина указано "Изменять названия загружаемых файлов", название генерируем согласно стандарту
					if ($row_shop['shop_shops_file_name_conversion'] == 1)
					{
						// Определяем расширение файла
						$ext = mb_strtolower($kernel->GetExtension($item_small_image));
					
						// Если $property_row равен false, значит идет добавление основного свойства
						if($property_row === false)
						{
							$small_image_path = CMS_FOLDER . $uploaddir . 'small_shop_items_catalog_image' . $item_id . '.' . $ext;
							$small_image_name = 'small_shop_items_catalog_image' . $item_id . '.' . $ext;
						}
						// иначе идет добавление дополнительного свойства
						else
						{
							$small_image_path = CMS_FOLDER . $uploaddir . 'small_shop_property_file_' . $property_row['shop_list_of_properties_id'] . '_' . $item_id . '.' . $ext;
							$small_image_name = 'small_shop_property_file_' . $property_row['shop_list_of_properties_id'] . '_' . $item_id . '.' . $ext;
						}
					}
					else
					{
						// Иначе оставляем оригинальное название
						$small_image_path = CMS_FOLDER . $uploaddir . 'small_'. $item_big_image;
						$small_image_name = 'small_'. $item_big_image;
					}

					// Для создания файла-источника используем функцию работы с временными файлами
					$tmp_file_name = tempnam(CMS_FOLDER . $uploaddir, '');

					// Пишем данные в временный файл
					$new_fp = fopen($tmp_file_name, "w");

					if($new_fp)
					{
						fwrite($new_fp, $data);
						fclose($new_fp);
					}

					$small_image_source_file = $tmp_file_name;

					// Генерируем путь для большой картинки. Если в настройках магазина указано "Изменять названия загружаемых файлов", название генерируем согласно стандарту
					if ($row_shop['shop_shops_file_name_conversion'] == 1)
					{
						// Определяем расширение файла
						$ext = mb_strtolower($kernel->GetExtension($item_big_image));

						// Если $property_row равен false, значит идет добавление основного свойства
						if($property_row === false)
						{
							$big_image_path = CMS_FOLDER . $uploaddir . 'shop_items_catalog_image' . $item_id . '.' . $ext;
							$big_image_name = 'shop_items_catalog_image' . $item_id . '.' . $ext;						
						}
						else
						{
							$big_image_path = CMS_FOLDER . $uploaddir . 'shop_property_file_' . $property_row['shop_list_of_properties_id'] . '_' . $item_id . '.' . $ext;
							$big_image_name = 'shop_property_file_' . $property_row['shop_list_of_properties_id'] . '_' . $item_id . '.' . $ext; 
						}
					}
					else
					{
						// Иначе оставляем оригинальное название
						$big_image_path = CMS_FOLDER . $uploaddir . $item_big_image;
						$big_image_name = $item_big_image;
					}
						
					// Заполняем массив настроек метода AdminLoadFiles
					$param_download_files = array();
					
					if($property_row === false)
					{
						$param_download_files['max_width_big_image'] = to_int($row_shop['shop_image_big_max_width']);
						$param_download_files['max_height_big_image'] = to_int($row_shop['shop_image_big_max_height']);						
					}
					else
					{	
						$param_download_files['max_width_big_image'] = to_int($property_row['shop_list_of_properties_default_big_width']);
						$param_download_files['max_height_big_image'] = to_int($property_row['shop_list_of_properties_default_big_height']);			
					}
					

					if(!isset($small_image_path))
					{	
						$param_download_files['max_width_small_image'] = 0;
						$param_download_files['max_height_small_image'] = 0;
					}
					else
					{
						if($property_row === false)
						{
							$param_download_files['max_width_small_image'] = $maximal_width_small_image;
							$param_download_files['max_height_small_image'] = $maximal_height_small_image;
						}
						else
						{
							$param_download_files['max_width_small_image'] = to_int($property_row['shop_list_of_properties_default_small_width']);
							$param_download_files['max_height_small_image'] = to_int($property_row['shop_list_of_properties_default_small_height']);
						}
					}

					$param_download_files['isset_big_image'] = true;

					// Для получения файла-источника генерируем временный файл
					$tmp_file_name2 = tempnam(CMS_FOLDER . $uploaddir, '');

					// Пишем данные в временный файл
					$new_fp = fopen($tmp_file_name2, "w");

					if($new_fp)
					{
						fwrite($new_fp, $data);
						fclose($new_fp);
					}

					$param_download_files['path_source_big_image'] = $tmp_file_name2;

					if(isset($small_image_source_file) && $small_image_source_file != '')
					{
						$param_download_files['path_source_small_image'] = $small_image_source_file;
					}

					$param_download_files['original_file_name_big_image'] = $item_big_image;
					$param_download_files['path_target_big_image'] = $big_image_path;
					$param_download_files['path_target_small_image'] = $small_image_path;
					$param_download_files['original_file_name_small_image'] = $item_small_image;
					$param_download_files['use_big_image'] = $create_small_image_from_big_image;
					$param_download_files['watermark_file_path'] = $watermark_file_path;
					$param_download_files['watermark_position_x'] = $big_image_watermark_x_position;
					$param_download_files['watermark_position_y'] = $big_image_watermark_y_position;
					$param_download_files['used_watermark_big_image'] = $big_image_use_watermark;

					if(isset($small_image_use_watermark))
					{
						$param_download_files['used_watermark_small_image'] = $small_image_use_watermark;
					}
					else
					{
						$param_download_files['used_watermark_small_image'] = 0;
					}

					if($property_row === false)
					{
						// Проверяем, есть ли у данного товара старые файлы
						$item_row = $shop->GetItem($item_id);
						
						$prop_row = false;
					}
					else
					{
						// Проверяем, есть ли у этого свойства старые файлы
						$prop_row = $shop->GetValueItemProperty($item_id, $property_row['shop_list_of_properties_id']);
						$item_row = false;
					}
					
					if($item_row || $prop_row)
					{
						if($item_row['shop_items_catalog_image'] != '' || $prop_row['shop_properties_items_value'] != '')
						{
							
							if($property_row === false)
							{
								$old_big_file_path = CMS_FOLDER . $uploaddir . $item_row['shop_items_catalog_image'];
							}
							else
							{
								$old_big_file_path = CMS_FOLDER . $uploaddir . $prop_row['shop_properties_items_value'];
							}
								
							if(file_exists($old_big_file_path))
							{
								@unlink($old_big_file_path);
							}
						}

						if($item_row['shop_items_catalog_small_image'] != '' || $prop_row['shop_properties_items_value_small'] != '')
						{
							if($property_row === false)
							{
								$old_small_file_path = CMS_FOLDER . $uploaddir . $item_row['shop_items_catalog_small_image'];
							}
							else
							{
								$old_small_file_path = CMS_FOLDER . $uploaddir . $prop_row['shop_properties_items_value_small'];
							}
							
							if(file_exists($old_small_file_path) && ($create_small_image_from_big_image || $small_image_is_defined))
							{
								@unlink($old_small_file_path);
							}
						}
					}

				  $result_download_files = $kernel->AdminLoadFiles($param_download_files);
					
					// Удаляем временный файл большого изображения
					@unlink($tmp_file_name2);

					// Удаляем временный файл малого изображения
					@unlink($tmp_file_name);

					if ($result_download_files['big_image'])
					{
						if($property_row === false)
						{	
							// Необходимо получить размеры получившегося изображения
							$size = getimagesize($big_image_path);
						
							if($size)
							{
								$width = $size[0];
								$height = $size[1];
							}
							else
							{
								$width = '';
								$height = '';
							}
						
							// Операции с файлами успешно завершены, необходимо обновить данные в базе
							$query = "UPDATE `shop_items_catalog_table` SET `shop_items_catalog_image`='$big_image_name', `shop_items_catalog_big_image_width`='$width', `shop_items_catalog_big_image_height`='$height' WHERE `shop_items_catalog_item_id`='$item_id'";
							$DataBase->query($query);
						}
						else
						{
							if($prop_value = $shop->GetValueItemProperty($item_id, $property_row['shop_list_of_properties_id']))
							{
								$prop_value['shop_items_catalog_item_id'] = $item_id;
								$prop_value['shop_list_of_properties_id'] = $property_row['shop_list_of_properties_id'];
								$prop_value['shop_properties_items_file'] = $big_image_name;
							
								$shop->UpdatePropertiesItem($prop_value);
							}
							else
							{
								$shop->InsertPropertiesItem(array(
								'shop_items_catalog_item_id' => $item_id,
								'shop_list_of_properties_id' => $property_row['shop_list_of_properties_id'],
								'shop_properties_items_file' => $big_image_name
								));
							}
						} 
					}

					if ($result_download_files['small_image'])
					{
						if($property_row === false)
						{
							// Необходимо получить размеры получившегося изображения
							$size = getimagesize($small_image_path);
						
							if($size)
							{
								$width = $size[0];
								$height = $size[1];
							}
							else
							{
								$width = '';
								$height = '';
							}
							
							// Операции с файлами успешно завершены, необходимо обновить данные в базе
							$query = "UPDATE `shop_items_catalog_table` SET `shop_items_catalog_small_image`='$small_image_name', `shop_items_catalog_small_image_width`='$width', `shop_items_catalog_small_image_height`='$height' WHERE `shop_items_catalog_item_id`='$item_id'";
							$DataBase->query($query);						
						}
					  else
						{
							if($prop_value = $shop->GetValueItemProperty($item_id, $property_row['shop_list_of_properties_id']))
							{
								$prop_value['shop_items_catalog_item_id'] = $item_id;
								$prop_value['shop_list_of_properties_id'] = $property_row['shop_list_of_properties_id'];
								$prop_value['shop_properties_items_file_small'] = $small_image_name;
							
								$shop->UpdatePropertiesItem($prop_value);
							}
							else
							{
								$shop->InsertPropertiesItem(array(
								'shop_items_catalog_item_id' => $item_id,
								'shop_list_of_properties_id' => $property_row['shop_list_of_properties_id'],
								'shop_properties_items_file_small' => $small_image_name
								));
							}
						} 
					} 
				}
			}
			// Товар с таким GUID не обнаружен, пробуем найти группу
			elseif(
			($result = $DataBase->query("SELECT * FROM `shop_groups_table` WHERE `shop_groups_cml_id`='$item_import_guid'")) 
			&& (mysql_num_rows($result) > 0)
			)
			{
			
				$group_row = mysql_fetch_assoc($result);
				
				$group_id = $group_row['shop_groups_id'];
				
				$group_dir = $shop->GetGroupDir($group_id);
				
				$kernel->PathMkdir($group_dir);
				
				// Для создания файла-источника используем функцию работы с временными файлами
				$tmp_file_name = tempnam(CMS_FOLDER . $group_dir, '');

				// Пишем данные в временный файл
				$new_fp = fopen($tmp_file_name, "w");

				if($new_fp)
				{
					fwrite($new_fp, $data);
					fclose($new_fp);
				}
				
				$admin_load_files_array = array();
				
				// Получаем настройки изображений для групп из настроек магазина
				$admin_load_files_array['max_width_big_image'] = $row_shop['shop_image_big_max_width_group'];
				
				$admin_load_files_array['max_height_big_image'] = $row_shop['shop_image_big_max_height_group'];
				
				$admin_load_files_array['max_width_small_image'] = $row_shop['shop_image_small_max_width_group'];
				
				$admin_load_files_array['max_height_small_image'] = $row_shop['shop_image_small_max_height_group'];
				
				// Большое изображение всегда задано
				$admin_load_files_array['isset_big_image'] = 1;
				
				// Путь к большому изображению
				$admin_load_files_array['path_source_big_image'] = $tmp_file_name;
				
				$admin_load_files_array['original_file_name_big_image'] = $item_big_image;
				
				// Настройки водяного знака														
				$admin_load_files_array['watermark_file_path'] = CMS_FOLDER . UPLOADDIR . "shop_" . $shop_shops_id . "/watermarks/" . $row_shop['shop_watermark_file'];
				
				if(!is_file($admin_load_files_array['watermark_file_path']))
				{
					// Инцидент 49408
					$admin_load_files_array['watermark_file_path'] = '';
				}
				
				$admin_load_files_array['used_watermark_big_image'] = $row_shop['shop_watermark_default_use_big'];
				$admin_load_files_array['used_watermark_small_image'] = $row_shop['shop_watermark_default_use_small'];
				
				// Флаг "использовать большую картинку для создания малой"
				$admin_load_files_array['use_big_image'] = 1;
				
				$admin_load_files_array['path_source_small_image'] = $admin_load_files_array['path_source_big_image'];
				
				// Необходимо сгенерировать целевой путь к результирующему файлу
				/////////////////////////////
				
				$file_extension = $kernel->GetExtension($admin_load_files_array['original_file_name_big_image']);
					
				if($file_extension != '')
				{	
					$file_extension = "." . $file_extension;
				}
				
				/* // Оригинальное имя большого изображения
				$admin_load_files_array['original_file_name_big_image'] = basename($final_group_property_picture);*/
				$admin_load_files_array['original_file_name_small_image'] = $admin_load_files_array['original_file_name_big_image']; 
					
				if($property_import_guid !== false)
				{
					$property_import_guid = quote_smart($property_import_guid);
					
					// Ищем дополнительное свойство группы по его CML_ID
					$result = $DataBase->query("SELECT * FROM `shop_properties_group_table` WHERE `shop_properties_group_cml`='$property_import_guid'");
					
					if(mysql_num_rows($result) > 0)
					{
						$property_row = mysql_fetch_assoc($result);

						$group_property_id = $property_row['shop_properties_group_id'];

						// Необходимо проверить, существуют ли старые изображения
						$property_value_row = $shop->GetPropertiesGroupValue(array(
							'shop_properties_group_id' => $group_property_id,
							'shop_groups_id' => $group_id
						));

						if($property_value_row)
						{	
							$big_image_old_path = CMS_FOLDER . $group_dir . $property_value_row['shop_properties_group_value_value'];
							
							if(is_file($big_image_old_path))
							{
								@unlink($big_image_old_path);
							}
							
							$small_image_old_path = CMS_FOLDER . $group_dir . $property_value_row['shop_properties_group_value_value_small'];
							
							if(is_file($small_image_old_path))
							{
								@unlink($small_image_old_path);
							}
						}
					}
					else
					{
						$group_property_id = $shop->InsertPropretyOfGroup(array(
							'shop_shops_id' => $shop_shops_id,
							'shop_properties_group_name' => $property_cml_id,
							'shop_properties_groups_dir_id' => 0,
							'shop_properties_group_type' => 1,
							'shop_properties_group_cml' => $property_import_guid,
							'shop_properties_group_xml_name' => $property_import_guid,
							'shop_properties_group_default_big_width' => $row_shop['shop_image_big_max_width_group'],
							'shop_properties_group_default_big_height' => $row_shop['shop_image_big_max_height_group'],
							'shop_properties_group_default_small_width' => $row_shop['shop_image_small_max_width_group'],
							'shop_properties_group_default_small_height' => $row_shop['shop_image_small_max_height_group']
						));
					}
					
					// Необходимо сгенерировать целевой путь к результирующему файлу
				
					$admin_load_files_array['original_file_name_small_image'] = $admin_load_files_array['original_file_name_big_image']; 
					
					if(to_int($row_shop['shop_shops_file_name_conversion']))
					{
						// Необходимо создавать свои названия для файлов
						$property_name = "shop_property_file_$group_id"."_" . "$group_property_id" . $file_extension;
					}
					else
					{	
						// Название файлов не нужно изменять
						$property_name = $admin_load_files_array['original_file_name_big_image'];
					}
					
					$property_name_small = "small_" . $property_name;
					
					$target_big_image_name = CMS_FOLDER . $group_dir . $property_name;
					
					$target_small_image_name = CMS_FOLDER . $group_dir . $property_name_small;
					
					/////////////////////////////
					
					$admin_load_files_array['path_target_big_image'] = $target_big_image_name;
					$admin_load_files_array['path_target_small_image'] = $target_small_image_name;
					
					
					
					$result_download_files = $kernel->AdminLoadFiles($admin_load_files_array);
					
					@unlink($tmp_file_name);
					
					if($result_download_files['big_image'] && $result_download_files['small_image'])
					{
						// Добавляем информацию в БД
						$shop->InsertPropertiesGroupValue(array(
							'shop_groups_id' => $group_id,
							'shop_properties_group_id' => $group_property_id,
							'shop_properties_group_value_value' => $property_name,
							'shop_properties_group_value_value_small' => $property_name_small,
							'shop_properties_group_value_file' => $property_name,
							'shop_properties_group_value_file_small' => $property_name_small
						)); 
					}
				}
				else
				{
					// Проверяем, остались ли у группы старые картинки, которые необходимо удалить
					if($group_row['shop_groups_image'] != '')
					{
						$old_group_file_big = CMS_FOLDER . $group_dir . $group_row['shop_groups_image'];
						
						if(is_file($old_group_file_big))
						{
							@unlink($old_group_file_big);
						}
					}
					
					if($group_row['shop_groups_small_image'] != '')
					{
						$old_group_file_small = CMS_FOLDER . $group_dir . $group_row['shop_groups_small_image'];
						
						if(is_file($old_group_file_small))
						{
							@unlink($old_group_file_small);
						}
					}
				
					if(to_int($row_shop['shop_shops_file_name_conversion']))
					{
						// Необходимо создавать свои названия для файлов
						$property_name = "shop_group_image$group_id" . $file_extension;
					}
					else
					{	
						// Название файлов не нужно изменять
						$property_name = $admin_load_files_array['original_file_name_big_image'];
					}
					
					$property_name_small = "small_" . $property_name;
					
					$target_big_image_name = CMS_FOLDER . $group_dir . $property_name;
					
					$target_small_image_name = CMS_FOLDER . $group_dir . $property_name_small;
					
					/////////////////////////////
					
					$admin_load_files_array['path_target_big_image'] = $target_big_image_name;
					$admin_load_files_array['path_target_small_image'] = $target_small_image_name;
					
					$result_download_files = $kernel->AdminLoadFiles($admin_load_files_array);
					
					@unlink($tmp_file_name);
					
					if($result_download_files['big_image'] && $result_download_files['small_image'])
					{
						/* // Добавляем информацию в БД
						$shop->InsertPropertiesGroupValue(array(
							'shop_groups_id' => $group_id,
							'shop_properties_group_id' => $group_property_id,
							'shop_properties_group_value_value' => $property_name,
							'shop_properties_group_value_value_small' => $property_name_small,
							'shop_properties_group_value_file' => $property_name,
							'shop_properties_group_value_file_small' => $property_name_small
						));  */
						
						// Необходимо замерить размеры конечных файлов
						$big_sizes = getimagesize($target_big_image_name);
						$small_sizes = getimagesize($target_small_image_name);
						
						$DataBase->query("UPDATE `shop_groups_table` SET `shop_groups_image`='$property_name', `shop_groups_small_image`='$property_name_small', `shop_groups_big_image_width`='{$big_sizes[0]}', `shop_groups_big_image_height`='{$big_sizes[1]}', `shop_groups_small_image_width`='{$small_sizes[0]}', `shop_groups_small_image_height`='{$small_sizes[1]}' WHERE `shop_groups_id`='$group_id'");
					} 
				}
			}
				
			// После сохранения данных обнуляем переменную, файл изображения не нужно парсить
			$data = '';
		}
	}

	echo "success" . "\n";
} 
elseif (isset($_GET['type']) && $_GET['type'] == 'catalog'
&& isset($_GET['mode']) && $_GET['mode'] == 'import'
&& isset($_GET['filename']))
{
	bom();
	
	echo "success" . "\n";
}

if (isset($_GET['type']) && $_GET['type'] == 'sale'
&& isset($_GET['mode']) && $_GET['mode'] == 'checkauth')
{
	// генерируем куки
	$guid = $kernel->Guid();

	setcookie("1c_exchange", $guid);

	// Возвращаем ответ 1С
	echo "success" . "\n";
	echo "1c_exchange" . "\n";
	echo "$guid" . "\n";
}
elseif (isset($_GET['type']) && $_GET['type'] == 'sale' && isset($_GET['mode']) && $_GET['mode'] == 'init')
{
	// file_limit = 1 мегабайт
	echo "zip=no" . "\n";
	echo "file_limit=1000000" . "\n";
}
elseif (isset($_GET['type']) && $_GET['type'] == 'sale'
&& isset($_GET['mode']) && $_GET['mode'] == 'query')
{
	// Генерируем данные о заказах CMS системы магазина, используя запрос вместо метода, ибо нужно выбрать только не отправленные еще заказы
	//$orders_data_res = $shop->GetAllOrders($shop_shops_id);
	$sql = "SELECT * FROM `shop_order_table` WHERE `shop_shops_id`='$shop_shops_id' AND `shop_order_unload`='0'";
	
	$orders_data_res = $DataBase->query($sql);
	
	bom();
	
	$cml_data = '<?xml version="1.0" encoding="'.str_for_xml(SITE_CODING).'"?>' . "\r\n";
	$cml_data .= '<КоммерческаяИнформация ВерсияСхемы="2.03" ДатаФормирования="' . date("Y-m-d") . '">' . "\r\n";


	if($orders_data_res)
	{
		while($orders_data_row = mysql_fetch_assoc($orders_data_res))
		{
			// Получаем имя валюты
			$currency_row = $shop->GetCurrency($orders_data_row['shop_currency_id']);

			$cml_data .= '<Документ>' . "\r\n";

			$cml_data .= '<Ид>' . str_for_xml($orders_data_row['shop_order_id']) . '</Ид>' . "\r\n";
			$cml_data .= '<Номер>' . str_for_xml($orders_data_row['shop_order_id']) . '</Номер>' . "\r\n";
			$cml_data .= '<Дата>' . str_for_xml($DateClass->date_format($orders_data_row['shop_order_date_time'], "%Y-%m-%d")) . '</Дата>' . "\r\n";
			$cml_data .= '<ХозОперация>Заказ товара</ХозОперация>' . "\r\n";
			$cml_data .= '<Роль>Продавец</Роль>' . "\r\n";
			$cml_data .= '<Валюта>' . str_for_xml($currency_row['shop_currency_international_name']) . '</Валюта>' . "\r\n";
				
			$cml_data .= '<Курс>' . str_for_xml($currency_row['shop_currency_value_in_basic_currency']) . '</Курс>' . "\r\n";

			// Получаем сумму заказа
			$order_sum = $shop->GetOrderSum($orders_data_row['shop_order_id']);

			$cml_data .= '<Сумма>' . str_for_xml($order_sum) . '</Сумма>' . "\r\n";

			$cml_data .= '<Контрагенты>' . "\r\n";

			$cml_data .= '<Контрагент>' . "\r\n";
			
			// Получаем информацию о контрагенте из заказа
			$site_users_name = $orders_data_row['shop_order_users_name'];
			$site_users_surname = $orders_data_row['shop_order_users_surname'];
			$shop_order_users_patronymic = $orders_data_row['shop_order_users_patronymic'];
			
		/* 	$SiteUsers = new SiteUsers();
			
			$SiteUserRow = $SiteUsers->GetSiteUser($orders_data_row['site_users_id']);
			 */
			
			if(class_exists('SiteUsers'))
			{
				$sql = "
				SELECT site_users_property_value FROM `site_users_properties_table` 
				LEFT JOIN `site_users_extra_properties_table` USING(`site_users_extra_property_id`)
				WHERE `site_users_extra_property_name`='inn' 
				AND `site_users_id`='{$orders_data_row['site_users_id']}'
				";
				
				$userDataRow = mysql_fetch_assoc($DataBase->query($sql));
				
				$userINN = $userDataRow['site_users_property_value'];
				
				$sql = "
				SELECT site_users_property_value FROM `site_users_properties_table` 
				LEFT JOIN `site_users_extra_properties_table` USING(`site_users_extra_property_id`)
				WHERE `site_users_extra_property_name`='legal_address' 
				AND `site_users_id`='{$orders_data_row['site_users_id']}'
				";
				
				$userDataRow = mysql_fetch_assoc($DataBase->query($sql));
				
				$userLegalAddress = $userDataRow['site_users_property_value'];
				
				$sql = "
				SELECT site_users_property_value FROM `site_users_properties_table` 
				LEFT JOIN `site_users_extra_properties_table` USING(`site_users_extra_property_id`)
				WHERE `site_users_extra_property_name`='okopf' 
				AND `site_users_id`='{$orders_data_row['site_users_id']}'
				";
				
				$okopf = mysql_fetch_assoc($DataBase->query($sql));
				
				$okopf = $okopf['site_users_property_value'];
			}
			else
			{
				$userINN = '';
				$userLegalAddress = '';
				$okopf = '';
			}
			
			// Поле "Значение" структуры "Контрагент" не должно быть пустым, если имя и фамилия пустые, то ставим вместо них GUID
			if($site_users_name == '' && $site_users_surname == '')
			{
				$site_users_name = $kernel->Guid();
				$site_users_surname = $kernel->Guid();
			}
			
			// Теперь GUID контрагента есть ФИО заказчика, указанного в заказе
			$cntragentguid = implode("_", array($site_users_surname, $site_users_name, $shop_order_users_patronymic));

			// Получаем название страны
			$shop_country_row = $shop->GetCountry($orders_data_row['shop_country_id']);

			$site_users_country = $shop_country_row['shop_country_name'];

			$site_users_postcode = $orders_data_row['shop_order_index'];

			// Получаем название города
			$shop_city_row = $shop->GetCity($orders_data_row['shop_city_id']);

			$site_users_city = $shop_city_row['shop_city_name'];

			$site_users_address = $orders_data_row['shop_order_address'];


			$cml_data .= '<Ид>' . str_for_xml($cntragentguid) . '</Ид>' . "\r\n";
			$cml_data .= '<ИНН>' . $userINN . '</ИНН>' . "\r\n";
			$cml_data .= '<ОКОПФ>' . $okopf . '</ОКОПФ>' . "\r\n";
			
			if($userLegalAddress != '')
			{
				$cml_data .= '<ЮридическийАдрес>' . "\r\n";
				
				$cml_data .= '<АдресноеПоле>' . "\r\n";
				
				$cml_data .= '<Тип>Улица</Тип>' . "\r\n";
				$cml_data .= '<Значение>' . str_for_xml($userLegalAddress) . '</Значение>' . "\r\n";
				
				$cml_data .= '</АдресноеПоле>' . "\r\n";
				
				$cml_data .= '</ЮридическийАдрес>' . "\r\n";
			}
			
			//$cml_data .= '<Наименование>' . str_for_xml($site_users_surname . " " . $site_users_name) . '</Наименование>' . "\r\n";
			$cml_data .= '<Наименование>' . str_for_xml($orders_data_row['shop_order_users_company']) . '</Наименование>' . "\r\n";
			$cml_data .= '<Роль>Покупатель</Роль>' . "\r\n";
			//$cml_data .= '<ПолноеНаименование>' . str_for_xml($site_users_surname . " " . $site_users_name .  " " . $shop_order_users_patronymic) . '</ПолноеНаименование>' . "\r\n";
			$cml_data .= '<ПолноеНаименование>' . str_for_xml($orders_data_row['shop_order_users_company']) . '</ПолноеНаименование>' . "\r\n";
			$cml_data .= '<Фамилия>' . str_for_xml($site_users_surname) . '</Фамилия>' . "\r\n";
			$cml_data .= '<Имя>' . str_for_xml($site_users_name) . '</Имя>' . "\r\n";
			$cml_data .= '<Отчество>' . str_for_xml($shop_order_users_patronymic) . '</Отчество>' . "\r\n";

			$cml_data .= '<АдресРегистрации>' . "\r\n";

			$cml_data .= '<Представление>' . "\r\n";
			
			$cml_data .= implode(", ", array(str_for_xml($site_users_country), str_for_xml($site_users_city), str_for_xml($site_users_address)));
			
			$cml_data .= '</Представление>' . "\r\n";
			
			$cml_data .= '<АдресноеПоле>' . "\r\n";

			$cml_data .= '<Тип>Страна</Тип>' . "\r\n";

			$cml_data .= '<Значение>' . str_for_xml($site_users_country) . '</Значение>' . "\r\n";

			$cml_data .= '</АдресноеПоле>' . "\r\n";

			$cml_data .= '<АдресноеПоле>' . "\r\n";

			$cml_data .= '<Тип>Почтовый индекс</Тип>' . "\r\n";

			$cml_data .= '<Значение>' . str_for_xml($site_users_postcode) . '</Значение>' . "\r\n";

			$cml_data .= '</АдресноеПоле>' . "\r\n";

			$cml_data .= '<АдресноеПоле>' . "\r\n";

			$cml_data .= '<Тип>Город</Тип>' . "\r\n";

			$cml_data .= '<Значение>' . str_for_xml($site_users_city) . '</Значение>' . "\r\n";

			$cml_data .= '</АдресноеПоле>' . "\r\n";

			$cml_data .= '<АдресноеПоле>' . "\r\n";

			$cml_data .= '<Тип>Улица</Тип>' . "\r\n";

			$cml_data .= '<Значение>' . str_for_xml($site_users_address) . '</Значение>' . "\r\n";

			$cml_data .= '</АдресноеПоле>' . "\r\n";

			$cml_data .= '</АдресРегистрации>' . "\r\n";

			$cml_data .= '<Представители>' . "\r\n";

			$cml_data .= '<Представитель>' . "\r\n";

			$cml_data .= '<Контрагент>' . "\r\n";

			$cml_data .= '<Отношение>Контактное лицо</Отношение>' . "\r\n";
			$cml_data .= '<Ид>' . str_for_xml($cntragentguid) . '</Ид>' . "\r\n";
			$cml_data .= '<Наименование>' . str_for_xml($site_users_surname . " " . $site_users_name) . '</Наименование>' . "\r\n";

			$cml_data .= '</Контрагент>' . "\r\n";

			$cml_data .= '</Представитель>' . "\r\n";

			$cml_data .= '</Представители>' . "\r\n";
			
			
			$cml_data .= '<Контакты>' . "\r\n";
			
			$cml_data .= '<Контакт>' . "\r\n";
			$cml_data .= '<Тип>Телефон</Тип>' . "\r\n";
			$cml_data .= '<Значение>' . $orders_data_row['shop_order_phone'] . '</Значение>' . "\r\n";
			$cml_data .= '</Контакт>' . "\r\n";
			
			$cml_data .= '</Контакты>' . "\r\n";

			
			
			$cml_data .= '</Контрагент>' . "\r\n";
			
			/*$cml_data .= '<РеквизитыФизЛица>' . "\r\n";
			$cml_data .= '<ИНН>' . $userINN . '</ИНН>' . "\r\n";
			$cml_data .= '</РеквизитыФизЛица>' . "\r\n";*/

			$cml_data .= '</Контрагенты>' . "\r\n";

			$datetime = explode(" ", $orders_data_row['shop_order_date_time']);

			$cml_data .= '<Время>' . str_for_xml($datetime[1]) . '</Время>' . "\r\n";

			$cml_data .= '<Товары>' . "\r\n";

			// Получаем список товаров в заказе
			$order_items_res = $shop->GetOrderItems($orders_data_row['shop_order_id']);

			$type_of_item = "Товар";
			
			if($order_items_res)
			{
				while($order_items_row = mysql_fetch_assoc($order_items_res))
				{
					// Получаем данные о товаре
					$item_row = $shop->GetItem($order_items_row['shop_items_catalog_item_id']);

					if($item_row)
					{
						if($item_row['shop_items_cml_id'] != '')
						{
							// Проверяем, является ли текущий товар модификацией?
							if($item_row['shop_items_catalog_modification_id'] != 0)
							{
								$parent_item_row = $shop->GetItem($item_row['shop_items_catalog_modification_id']);
								
								$current_item_guid = $parent_item_row['shop_items_cml_id'] . "#" . $item_row['shop_items_cml_id'];
							}
							else
							{
								$current_item_guid = $item_row['shop_items_cml_id'];
							}
						}
						else
						{
							// генерируем GUID текущего товара
							$current_item_guid = $item_row['shop_items_catalog_item_id'];
						}
						
						$type_of_item = "Товар";
					}
					else
					{
						if(to_int($order_items_row['shop_items_catalog_item_id']) == 0)
						{
							switch(to_int($order_items_row['shop_order_items_type']))
							{
								case 1: 
								{
									$current_item_guid = "DELIVERY";
									$type_of_item = "Услуга";
									break;
								}
								case 2:
								{
									$current_item_guid = "ACCOUNT";
									$type_of_item = "Услуга";
									break;
								}
								case 0:
								{
									$current_item_guid = "DISCOUNT";
									$type_of_item = "Услуга";
									break;
								}
								default:
								{
									$type_of_item = "Товар";
								}
							}
						}
						else
						{
							// если GUID не существует, ставим значние ключа таблицы
							$current_item_guid = $order_items_row['shop_items_catalog_item_id'];						
							$type_of_item = "Товар";
						}
					}

					// Получаем единицу измерения товара
					$item_row = $shop->GetItem($order_items_row['shop_items_catalog_item_id']);

					$mesure_row = $shop->GetMesure($item_row['shop_mesures_id']);

					if($mesure_row)
					{
						$mesure_code = $mesure_row['shop_mesures_id'];
						$mesure_name = $mesure_row['shop_mesures_name'];
						$mesure_full_name = $mesure_row['shop_mesures_description'];
					}
					else
					{
						$mesure_code = 0;
						$mesure_name = '';
						$mesure_full_name = '';
					}
					
					$cml_data .= '<Товар>' . "\r\n";
					
					$cml_data .= '<Ид>' . str_for_xml($current_item_guid) . '</Ид>' . "\r\n";

					$cml_data .= '<Наименование>' . str_for_xml($order_items_row['shop_order_items_name']) . '</Наименование>' . "\r\n";
					$cml_data .= '<БазоваяЕдиница Код="'.str_for_xml($mesure_code).'" НаименованиеПолное="'.str_for_xml($mesure_full_name).'"  МеждународноеСокращение="">' . str_for_xml($mesure_name) . '</БазоваяЕдиница>' . "\r\n";

					$cml_data .= '<ЦенаЗаЕдиницу>' . str_for_xml($order_items_row['shop_order_items_price']) . '</ЦенаЗаЕдиницу>' . "\r\n";
					$cml_data .= '<Количество>' . str_for_xml($order_items_row['shop_order_items_quantity']) . '</Количество>' . "\r\n";
					$cml_data .= '<Сумма>' . str_for_xml(to_float($order_items_row['shop_order_items_price']) * to_float($order_items_row['shop_order_items_quantity'])) . '</Сумма>' . "\r\n";

					$cml_data .= '<ЗначенияРеквизитов>'  . "\r\n";

					$cml_data .= '<ЗначениеРеквизита>'  . "\r\n";

					$cml_data .= '<Наименование>ВидНоменклатуры</Наименование>' . "\r\n";
					$cml_data .= '<Значение>' . str_for_xml($type_of_item) . '</Значение>' . "\r\n";

					$cml_data .= '</ЗначениеРеквизита>'  . "\r\n";

					$cml_data .= '<ЗначениеРеквизита>'  . "\r\n";

					$cml_data .= '<Наименование>ТипНоменклатуры</Наименование>' . "\r\n";
					$cml_data .= '<Значение>' . str_for_xml($type_of_item) . '</Значение>' . "\r\n";

					$cml_data .= '</ЗначениеРеквизита>'  . "\r\n";

					$cml_data .= '</ЗначенияРеквизитов>' . "\r\n";

					$cml_data .= '</Товар>' . "\r\n";
				}
			}

			$cml_data .= '</Товары>' . "\r\n";

			$cml_data .= '<ЗначенияРеквизитов>' . "\r\n";

			if(to_int($orders_data_row['shop_order_status_of_pay']))
			{
				$cml_data .= '<ЗначениеРеквизита>' . "\r\n";
					
				$cml_data .= '<Наименование>Дата оплаты</Наименование>' . "\r\n";

				$cml_data .= '<Значение>' . str_for_xml($orders_data_row['shop_order_date_of_pay']) . '</Значение>' . "\r\n";

				$cml_data .= '</ЗначениеРеквизита>' . "\r\n";
			}

			$cml_data .= '<ЗначениеРеквизита>' . "\r\n";

			//$cml_data .= '<Наименование>Заказ оплачен</Наименование>' . "\r\n";
				
			$cml_data .= '<Наименование>Заказ оплачен</Наименование>' . "\r\n";

			$cml_data .= '<Значение>' . ((to_int($orders_data_row['shop_order_status_of_pay']) == 1)? "true" : "false") . '</Значение>' . "\r\n";

			$cml_data .= '</ЗначениеРеквизита>' . "\r\n";
				
			// Получаем систему оплаты
			$shop_system_of_pay_id = to_int($orders_data_row['shop_system_of_pay_id']);
				
			if($shop_system_of_pay_id)
			{
				$shop_system_of_pay_row = $shop->GetSystemOfPay($shop_system_of_pay_id);
					
				$cml_data .= '<ЗначениеРеквизита>' . "\r\n";

				$cml_data .= '<Наименование>Метод оплаты</Наименование>' . "\r\n";
					
				$cml_data .= '<Значение>' . str_for_xml($shop_system_of_pay_row['shop_system_of_pay_name']) . '</Значение>' . "\r\n";

				$cml_data .= '</ЗначениеРеквизита>' . "\r\n";
			}
				
			// Получаем статус заказа
			$shop_order_status_id = to_int($orders_data_row['shop_order_status_id']);
				
			if($shop_order_status_id)
			{
				$order_status_row = $shop->GetOrdersStatus($shop_order_status_id);
					
				$cml_data .= '<ЗначениеРеквизита>' . "\r\n";

				$cml_data .= '<Наименование>Статус заказа</Наименование>' . "\r\n";
					
				$cml_data .= '<Значение>' . str_for_xml($order_status_row['shop_order_status_name']) . '</Значение>' . "\r\n";

				$cml_data .= '</ЗначениеРеквизита>' . "\r\n";
			}
				
			$cml_data .= '<ЗначениеРеквизита>' . "\r\n";

			$cml_data .= '<Наименование>Отменен</Наименование>' . "\r\n";

			$cml_data .= '<Значение>' . (($orders_data_row['shop_order_cancel'] == '1')?'true':'false') . '</Значение>' . "\r\n";

			$cml_data .= '</ЗначениеРеквизита>' . "\r\n";
				
			//$order_number = to_str($orders_data_row['shop_order_account_number']);

			$cml_data .= '</ЗначенияРеквизитов>' . "\r\n";

			$cml_data .= '</Документ>' . "\r\n";
		} 
	}

	$cml_data .= '</КоммерческаяИнформация>' . "\r\n";
	
	echo $cml_data;
}
elseif (isset($_GET['type']) 
&& $_GET['type'] == 'sale'
&& isset($_GET['mode']) 
&& $_GET['mode'] == 'file'
&& isset($_GET['filename']) 
&& ((mb_strpos($_GET['filename'], "1cbitrix-") !== 0) 
|| (mb_strpos($_GET['filename'], "1cbitrix-") === false)))
{
	bom();
	
	if(isset($GLOBALS['HTTP_RAW_POST_DATA']))
	{
		//Считываем файл в строку
		$data = $GLOBALS['HTTP_RAW_POST_DATA'];

	}

	echo "success" . "\n";
}
// Сигнал 1С на старт импорта файла offers.xml
elseif(isset($_GET['type']) && $_GET['type'] == 'catalog'
&& isset($_GET['mode']) && $_GET['mode'] == 'import'
&& isset($_GET['filename']) && $_GET['filename'] == 'offers.xml')
{
	bom();
	
	$offers_file = $tmp_dir . md5("offers.xml");

	// Необходимо проимпортировать файл "offers.xml", созданный ранее
	if(file_exists($offers_file))
	{
		// Получаем структурированный массив данных из CommerceML файла
		$array_of_cml_data = $kernel->Xml2Array(file_get_contents($offers_file));

		// Отправляем данные на обработку, $shop_shops_id - идентификатор интернет-магазина, 1 - флаг, указывающий что делать с товарами уже существующими в магазине (Обновить информацию для существующих товаров), 0 - идентификатор группы товаров, в которую необходимо выгружать товары (корневая группа)
		$shop->ImportCML($array_of_cml_data, $shop_shops_id, 1, 0, "", FALSE);

		// Удаляем файл после импорта
		@unlink($offers_file);
	}
}
// Сигнал 1С на старт импорта файла import.xml
elseif(isset($_GET['type']) && $_GET['type'] == 'catalog'
&& isset($_GET['mode']) && $_GET['mode'] == 'import'
&& isset($_GET['filename']) && $_GET['filename'] == 'import.xml')
{
	bom();
	
	$import_file = $tmp_dir . md5("import.xml");

	// Необходимо проимпортировать файл "import.xml", созданный ранее
	if(file_exists($import_file))
	{
		// Получаем структурированный массив данных из CommerceML файла
		$array_of_cml_data = $kernel->Xml2Array(file_get_contents($import_file));

		// Отправляем данные на обработку, $shop_shops_id - идентификатор интернет-магазина, 1 - флаг, указывающий что делать с товарами уже существующими в магазине (Обновить информацию для существующих товаров), 0 - идентификатор группы товаров, в которую необходимо выгружать товары (корневая группа)
		$shop->ImportCML($array_of_cml_data, $shop_shops_id, 1, 0, "", FALSE);

		// Удаляем файл после импорта
		@unlink($import_file);
	}
}
// Заказы
elseif (isset($_GET['type']) && $_GET['type'] == 'sale'
&& isset($_GET['mode']) && $_GET['mode'] == 'file'
&& isset($_GET['filename']) && mb_strpos($_GET['filename'], "1cbitrix-") === 0)
{
	bom();
	
	if(isset($GLOBALS['HTTP_RAW_POST_DATA']))
	{
		if(!is_dir($tmp_dir))
		{
			if (@mkdir($tmp_dir, CHMOD))
			{
				@chmod($tmp_dir, CHMOD);
			}
		}
	
		// НЕ МЕНЯТЬ НА mb_strlen!!!
		$strln = strlen($GLOBALS['HTTP_RAW_POST_DATA']);
		
		// Открываем файл для дозаписи в бинарном режиме
		$i_file = fopen($tmp_dir . md5("orders.xml"), "a");
		
		if($file_limit == $strln)
		{
			fwrite($i_file, $GLOBALS['HTTP_RAW_POST_DATA']);
			
			fclose($i_file);
		}
		elseif($file_limit > $strln)
		{
			fwrite($i_file, $GLOBALS['HTTP_RAW_POST_DATA']);
			
			fclose($i_file);
			
			// Начинаем импорт
			$array_of_cml_data = $kernel->Xml2Array(file_get_contents($tmp_dir . md5("orders.xml")));
		
			// Отправляем данные на обработку, $shop_shops_id - идентификатор интернет-магазина, 1 - флаг, указывающий что делать с товарами уже существующими в магазине (Обновить информацию для существующих товаров), 0 - идентификатор группы товаров, в которую необходимо выгружать товары (корневая группа)
			$shop->ImportCML($array_of_cml_data, $shop_shops_id, 1, 0, "", FALSE);

			// Удаляем файл после импорта
			@unlink($tmp_dir . md5("orders.xml"));
		}
	}
	
	echo "success" . "\n";
}
elseif(isset($_GET['type']) && $_GET['type'] == 'sale'
&& isset($_GET['mode']) && $_GET['mode'] == 'success')
{
	// Заказы переданы успешно, ставим всем статус выгрузки
	$orders_res = $shop->GetAllOrders($shop_shops_id);

	if(mysql_num_rows($orders_res) > 0)
	{
		while($orders_row = mysql_fetch_assoc($orders_res))
		{
			$shop->SetUnload($orders_row['shop_order_id'], 1);
		}
	}
	
	echo "success" . "\n";
}

exit_index(array(), '', '', false);
?>