<?php 
/**
 * Система управления сайтом HostCMS v. 5.xx
 * Copyright © 2005-2010 ООО "Хостмэйк" (Hostmake LLC), http://www.hostcms.ru
 *
 * Обработчик добавления сайта с макетом, шаг 2
 * 
 * Файл: /admin/site/action/add_site_with_template_step2.php
 * 
 * @author Hostmake LLC
 * @version 5.x
 */

$site = & singleton ('site');
$kernel = & singleton ('kernel');

$SiteTemplate = & singleton ('SiteTemplate');
$aXmlTemplatesTmp = $SiteTemplate->GetTemplateXml();

if (!$aXmlTemplatesTmp)
{
	show_error_message(sprintf($GLOBALS['MSG_site']['write_error'], $SiteTemplate->GetTemplateFilePath()));
}

$sTemplatesUrlServer = $SiteTemplate->GetTemplatesUrlServer();

function MacroReplace($str, $aReplace)
{
	$SiteTemplate = & singleton ('SiteTemplate');
	return $SiteTemplate->MacroReplace($str, $aReplace);
}

function LoadFile($filename, $aReplace = array())
{
	$SiteTemplate = & singleton ('SiteTemplate');
	return $SiteTemplate->LoadFile($filename, $aReplace);
}

/**
 * Заменяет макросы в уже существующем файле
 * 
 *  @param $filename путь к файлу
 *  @param $aReplace массив замен
 */
function ReplaceFile($filename, $aReplace = array())
{
	$SiteTemplate = & singleton ('SiteTemplate');
	return $SiteTemplate->ReplaceFile($filename, $aReplace);
}

/**
 * Копирование изображений для ИЭ
 * 
 * @param $is_item_id - идентификатор нового созданого ИЭ
 * @param $copy_is_id - идентификатор копирумой ИС
 * @param $copy_item_id - идентификатор копируемого ИЭ
 */
function MoveInfItemImage($is_item_id, $copy_is_id, $copy_item_id)
{
	$SiteTemplate = & singleton ('SiteTemplate');
	return $SiteTemplate->MoveInfItemImage($is_item_id, $copy_is_id, $copy_item_id);
}

/**
 * Копирование изображений для доп. свойств ИЭ
 * 
 * @param $is_item_id - Идентификатор нового ИЭ
 * @param $is_item_property_id - Идентификатор нового доп. свойства типа "Файл"
 * @param $copy_is_id - Идентификатор копирумой ИС
 * @param $copy_is_item_id - Идентификатор копируемого ИЭ
 * @param $copy_is_item_property_value_id - Идентификатор значения доп. свойства типа "Файл" копируемого ИЭ
 */
function MoveInfItemPropertyImage($is_item_id, $is_item_property_id, $copy_is_id, $copy_is_item_id, $copy_is_item_property_value_id)
{
	$SiteTemplate = & singleton ('SiteTemplate');
	return $SiteTemplate->MoveInfItemPropertyImage($is_item_id, $is_item_property_id, $copy_is_id, $copy_is_item_id, $copy_is_item_property_value_id);
}

/**
 * Копирование изображений для ИГ
 * 
 * @param $is_group_id - идентификатор новой созданной ИГ
 * @param $copy_is_id - идентификатор копирумой ИС
 * @param $copy_group_id - идентификатор копируемой ИГ
 */
function MoveInfGroupImage($is_group_id, $copy_is_id, $copy_group_id)
{
	$SiteTemplate = & singleton ('SiteTemplate');
	return $SiteTemplate->MoveInfGroupImage($is_group_id, $copy_is_id, $copy_group_id);
}

/**
 * Копирование значения доп. свойства типа "Файл" узла структуры
 * 
 * @param $structure_id - Идентификатор нового созданого узла структуры
 * @param $structure_property_image_id - Идентификатор нового созданного доп. свойства
 * @param $copy_site_id - Идентификатор сайта, которому принадлежит копируемая структура 
 * @param $copy_structure_id - Идентификатор копируемого узла структуры
 * @param $copy_structure_property_value_id - Идентификатор значения доп. свойства, значение которого копируется 
 */ 
function MoveStructureItemPropertyImage($structure_id, $structure_property_image_id, $copy_site_id, $copy_structure_id, $copy_structure_property_value_id)
{
	$SiteTemplate = & singleton ('SiteTemplate');
	return $SiteTemplate->MoveStructureItemPropertyImage($structure_id, $structure_property_image_id, $copy_site_id, $copy_structure_id, $copy_structure_property_value_id);		
}

/**
 * Копирование изображений для группы товаров
 * 
 * @param $shop_group_id - идентификатор новой созданной группы магазина
 * @param $copy_shop_id - идентификатор копирумого магазина 
 * @param $copy_group_id - идентификатор копируемой группы товаров
 */
function MoveShopGroupImage($shop_group_id, $copy_shop_id, $copy_group_id)
{
	$SiteTemplate = & singleton ('SiteTemplate');
	return $SiteTemplate->MoveShopGroupImage($shop_group_id, $copy_shop_id, $copy_group_id);		
}

/**
 * Копирование изображений для товара
 * 
 * @param $shop_item_id - Идентификатор нового созданого товара
 * @param $copy_shop_id - Идентификатор копирумого магазина
 * @param $copy_shop_item_id - Идентификатор копируемого товара
 */
function MoveShopItemImage($shop_item_id, $copy_shop_id, $copy_shop_item_id)
{
	$SiteTemplate = & singleton ('SiteTemplate');
	return $SiteTemplate->MoveShopItemImage($shop_item_id, $copy_shop_id, $copy_shop_item_id);		
}

/**
 * Копирование изображений для доп. свойств товара
 * 
 * @param $shop_item_id - Идентификатор нового созданого товара
 * @param $copy_shop_id - Идентификатор копирумого магазина
 * @param $copy_shop_item_id - Идентификатор копируемого товара
 * @param $copy_shop_item_property_id - Идентификатор доп. свойства типа "Файл" копируемого товара
 */
function MoveShopItemPropertyImage($shop_item_id, $shop_item_property_id, $copy_shop_id, $copy_shop_item_id, $copy_shop_item_property_id)
{
	$SiteTemplate = & singleton ('SiteTemplate');
	return $SiteTemplate->MoveShopItemPropertyImage($shop_item_id, $shop_item_property_id, $copy_shop_id, $copy_shop_item_id, $copy_shop_item_property_id);
}

// Копируем файлы из ./template/ в папку системы
$File = new File();

if (is_dir($SiteTemplate->GetTemplatePath() . 'template'))
{
	if ($File->CopyDir($SiteTemplate->GetTemplatePath() . 'template', CMS_FOLDER))
	{
		show_message($GLOBALS['MSG_site']['template_files_copy_success']);
	}
	else
	{
		show_error_message($GLOBALS['MSG_site']['template_files_copy_error']);
	}
}

if (is_file($SiteTemplate->GetTemplatePath() . 'template.php'))
{
	// Замены в макете
	$aReplace = array();
	
	// Массив из файла template.xml
	$aTemplateContentXml = $SiteTemplate->GetTemplateContentXml();
	
	if($aTemplateContentXml
	&& isset($aTemplateContentXml['children'][0]['children'])
	&& count($aTemplateContentXml['children'][0]['children']) > 0)
	{
		// цикл по дереву 'template'
		foreach ($aTemplateContentXml['children'][0]['children'] as $aTemplateValue)
		{
			switch ($aTemplateValue['name'])
			{
				case 'fields':
					$aFields = $SiteTemplate->GetFields($aTemplateValue['children']);

					// цикл по дереву 'fields'
					foreach ($aFields as $aFieldsValue)
					{
						$sFieldName = $aFieldsValue['Name'];
						$sFieldMacros = $aFieldsValue['Macros'];
						$iFieldType = $aFieldsValue['Type'];
						
						// Файл
						if ($iFieldType == 2)
						{
							if (isset($_FILES[$sFieldMacros]['tmp_name'])
							&& is_file($_FILES[$sFieldMacros]['tmp_name'])
							&& $_FILES[$sFieldMacros]['size'] > 0)
							{
								$sFieldPath = $aFieldsValue['Path'];
								$sFieldExtension = $aFieldsValue['Extension'];
								
								$sExt = mb_strtolower($kernel->GetExtension($_FILES[$sFieldMacros]['name']));
								$aAllowedExt = explode(',', $sFieldExtension);
								
								if (strlen(trim($sFieldExtension)) == 0
								|| in_array($sExt, $aAllowedExt))
								{
									if (!move_uploaded_file(to_str($_FILES[$sFieldMacros]['tmp_name']), CMS_FOLDER . $sFieldPath))
									{
										show_error_message(sprintf($GLOBALS['MSG_site']['file_copy_error'], $sFieldPath));
									}
									else
									{
										@chmod(CMS_FOLDER . $sFieldPath, CHMOD_FILE);
									}
								}
								else
								{
									show_error_message(sprintf($GLOBALS['MSG_site']['file_disabled_extension'], $sFieldName));
								}
							}
						}
						// Остальные типы полей
						else
						{
							$aReplace["%{$sFieldMacros}%"] = $_REQUEST[$sFieldMacros];
						}
					}
				break;
				
				default:
					break;
			}
		}
	}

	$sTemplatePath = $SiteTemplate->GetTemplatePath();
	
	// For template.php
	define('INSTALL_FOLDER', $sTemplatePath);
	$iTemplateTypeId = 0;
	
	include($sTemplatePath . 'template.php');
	show_message($GLOBALS['MSG_site']['template_install_success']);
	
	// Прибираемся
	$File->DeleteFile($sTemplatePath . 'template.php');
	$File->DeleteFile($sTemplatePath . 'template.xml');
	$File->DeleteFile($sTemplatePath . 'template.tar.gz');
	$File->DeleteFile($sTemplatePath . 'templates.xml');
	$File->DeleteDir($sTemplatePath . 'tmp');
	$File->DeleteDir($sTemplatePath . 'template');
}
else
{
	show_error_message($GLOBALS['MSG_site']['file_not_found'], 'template.php');
}

?>