<?php

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

$kernel = & singleton('kernel');

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

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

$shop_row = $shop->GetShop($current_shop_id);

// Массив разрешенных расширений при загрузке файла
$allow_ext = array('JPG', 'JPEG');

// Обработка AJAX-запроса при формирвоании формы для добавления объявления
if (isset ($_REQUEST['action']) && $_REQUEST['action'] == 'show_form_add_item' && isset ($_REQUEST['group_id']))
{
	// Формируем html-код формы добавления объявления
	ob_start();

	// Идентификатор текущей группы
	$current_group_id = to_int($_REQUEST['group_id']);

	$Captcha = new Captcha();
	$captcha_key = $Captcha->GetCaptchaID();

	$advertisement_title = '';
	$advertisement_price = '';
	$advertisement_text = '';
	$advertisement_email = '';
	$advertisement_fio = '';
	$advertisement_phone = '';
	$advertisement_elmail = '';
	$advertisement_title = '';
	
	?><div class="comment">
<div class="tl"></div>
<div class="tr"></div>
<div class="bl"></div>
<div class="br"></div>

<form method="POST" action="./" enctype="multipart/form-data">
<table>
	<tr>
		<td>Заголовок<br />
		<input type="text" name="advertisement_title" size="70"
			value="<?php echo $advertisement_title;?>" /></td>
	</tr>
	<tr>
		<td>Цена<br />
		<input type="text" name="advertisement_price" size="70"
			value="<?php echo $advertisement_price;?>" /></td>
	</tr>
	<tr>
		<td>Текст объявления<br />
		<textarea name="advertisement_text" rows="5" cols="53"><?php echo $advertisement_text;?></textarea>
		</td>
	</tr>

	<tr>
		<td>Фото<br />
		<input type="file" name="advertisement_file" size="59" /></td>
	</tr>

	<tr>
		<td>ФИО<br />
		<input type="text" name="advertisement_fio" size="70"
			value="<?php echo $advertisement_fio;?>" /></td>
	</tr>

	<tr>
		<td>Тел.<br />
		<input type="text" name="advertisement_phone" size="70"
			value="<?php echo $advertisement_phone;?>" /></td>
	</tr>

	<tr>
		<td>E-mail<br />
		<input type="text" name="advertisement_email" size="70"
			value="<?php echo $advertisement_email;?>" /></td>
	</tr>

	<?php

	// Получаем список валют, используемых в доске объявлений
	$result_currency = $shop->GetAllCurrency();
	?>
	<tr>
		<td>Валюта<br />
		<select name="advertisement_currency">
		<?php

		while ($row_currency = mysql_fetch_assoc($result_currency))
		{
			?>
			<option value="<?php echo $row_currency['shop_currency_id'];?>"><?php echo $row_currency['shop_currency_international_name'];?></option>
			<?php
		}
		?>
		</select></td>
	</tr>
	<?php

	// Получаем список дополнительных свойств группы магазина
	$group_propertys_result = $shop->GetPropertiesOfGroup($current_group_id, false, $current_shop_id);

	$count_group_propertys = count($group_propertys_result);

	// Для группы существуют доп. свойства
	if ($count_group_propertys)
	{
		// В цикле получаем подробную информацию о дополнительных свойствах группы
		for ($i = 0; $i < $count_group_propertys; $i++)
		{
			$item_property = $shop->GetPropretyOfItems($group_propertys_result[$i]);

			if ($item_property)
			{
				if (($item_property['shop_list_of_properties_type'] != 2
				|| $item_property['shop_list_of_properties_type'] == 2 && class_exists('lists')))
				{
					?><tr><td><?php
					switch ($item_property['shop_list_of_properties_type'])
					{
						case 0 : // Строка
						case 3 : // Большое текстовое поле
						case 4 : // Визуальный редактор
						case 5 : // Дата
						case 6 : // Дата-время
							{
								echo $item_property['shop_list_of_properties_name'];
								?> <br />
								<input type="text" name="shop_item_property<?php echo $item_property['shop_list_of_properties_id']?>" size="70" value="<?php echo htmlspecialchars(to_str($_REQUEST['shop_item_property'.$item_property['shop_list_of_properties_id']]))?>" />
									<?php

									break;
							}

						case 1 : // Файл
							{
								echo $item_property['shop_list_of_properties_name'];
								?> <br />
								<input type="file" name="shop_item_property<?php echo $item_property['shop_list_of_properties_id']?>" size="59" /> <?php
								break;
							}
						case 2 : // Список
							{
								if (class_exists('lists'))
								{
									$list = & singleton('lists');
									$list_result = $list->SelectListsItems($item_property['lists_id']);

									if ($list_result)
									{
										echo $item_property['shop_list_of_properties_name'];
										?> <br />
										<select name="shop_item_property<?php echo $item_property['shop_list_of_properties_id']?>"><?php

										while ($list_row = mysql_fetch_assoc($list_result))
										{
											$selected = '';
											if ($list_row['lists_items_id'] == to_int($_REQUEST['shop_item_property'.$item_property['shop_list_of_properties_id']]))
											{
												$selected = ' selected="" ';
											}
											?><option value="<?php echo $list_row['lists_items_id']?>" <?php echo $selected?>><?php echo $list_row['lists_items_value']?></option>
										<?php
										}
									?></select> <?php
									}
								}

								break;
							}
						case 7 : // Флажок
							{
								if (isset ($_REQUEST['shop_item_property'.$item_property['shop_list_of_properties_id']]))
								{
									$checked = ' checked="" ';
								}
								else
								{
									$checked = '';
								}
								?> <input type="checkbox" name="shop_item_property<?php echo $item_property['shop_list_of_properties_id']?>" <?php echo $checked?> /> <?php
									echo $item_property['shop_list_of_properties_name'];
									break;
							}
						default :
							{
								echo $item_property['shop_list_of_properties_name'];
								?> <br />
								<input type="text" name="shop_item_property<?php echo $item_property['shop_list_of_properties_id']?>" size="70" /> <?php
									break;
							}
					}
					?></td></tr><?php
				}
			}
		}
	}
	?>
	<tr>
		<td>
		<div style="clear: both; padding-top: 3px;">Контрольные цифры:</div>
		<div style="float: left"><img style="border: 1px solid #000000"
			src="/captcha.php?get_captcha=<?php echo $captcha_key?>&amp;height=30&amp;width=100"
			title="Код подтверждения" name="captcha" /></div>
		<div id="captcha" style="clear: both;"><img style="border: 0px"
			src="/hostcmsfiles/images/refresh.gif" /> <a
			href="javascript:void(0);"
			onclick="ReNewCaptcha(<?php echo $captcha_key?>, 30);return false;">Показать
		другое число</a></div>
		<div style="float: left; margin-left: 5px;"><input type="text"
			name="captcha_keystring" /> <input type="hidden" name="captcha_key"
			value="<?php echo $captcha_key?>" size="15" /></div>
		<div id="captcha" style="clear: both;">Введите число, которое указано
		выше.</div>
		</td>
	</tr>
	<tr>
		<td><input type="submit" name="add_advertisement" value="Отправить"
			onclick="return AjaxSendForm(callbackfunction_SendFormItem, '', this)" /></td>
	</tr>
</table>
</form>
</div>
	<?php

	$form_add_advertisement = ob_get_clean();

	$JsHttpRequest = new JsHttpRequest('UTF-8');

	$GLOBALS['_RESULT'] = array (
		'result' => $form_add_advertisement
	);

	echo $JsHttpRequest->LOADER;
	exit ();
}

// Обработка добавления объявления
if (isset ($_REQUEST['add_advertisement']))
{
	ob_start();

	$Captcha = new Captcha();

	if (isset ($_REQUEST['captcha_key']) && isset ($_REQUEST['captcha_keystring']) && $Captcha->ValidCaptcha($_REQUEST['captcha_key'], $_REQUEST['captcha_keystring']))
	{
		$param = array ();

		$param['shops_id'] = $current_shop_id;
		$param['groups_id'] = $GLOBALS['shop_item_path']['group'];
		$param['name'] = htmlspecialchars(strip_tags(to_str($_POST['advertisement_title'])));
		$param['description'] = '';
		$param['shop_items_catalog_date_time'] = date('Y-m-d H:i:s');

		$param['text'] = nl2br(htmlspecialchars(strip_tags(to_str($_POST['advertisement_text']))));

		if (class_exists('typograph'))
		{
			$typograph = new typograph();
			$param['text'] = $typograph->ProcessTypographic($param['text'], true);
		}

		$price_val = str_replace(" ", "", to_str($_POST['advertisement_price']));

		$param['currency_id'] = intval($_POST['advertisement_currency']);
		$param['price'] = to_float($price_val);
		$param['is_active'] = to_int($GLOBALS['LA']['shop_item_is_active']);
		$param['order'] = 0;
		$param['indexation'] = 1;
		$param['seo_title'] = $param['name'];
		$param['seo_description'] = $param['name'];
		$param['seo_keywords'] = $param['name'];
		$param['shop_sallers_id'] = 0;

		if (class_exists("SiteUsers"))
		{
			/* Получаем id текущего пользователя сайта */
			$SiteUsers = & singleton('SiteUsers');
			$param['site_users_id'] = $SiteUsers->GetCurrentSiteUser();
		}
		else
		{
			$param['site_users_id'] = 0;
		}

		if (isset ($_FILES['advertisement_file']['name']))
		{
			$ext = $kernel->GetExtension($_FILES['advertisement_file']['name']);

			// Если расширение файла разрешено
			if (in_array(mb_strtoupper($ext), $allow_ext))
			{
				$param['path_source_big_image'] = to_str($_FILES['advertisement_file']['tmp_name']);
				$param['original_file_name_big_image'] = to_str($_FILES['advertisement_file']['name']);
				$param['original_file_name_small_image'] = $param['original_file_name_big_image'];
			}
		}

		$param['use_big_image'] = true;
		$param['max_width_big_image'] = to_int($GLOBALS['LA']['max_width_big_image']);
		$param['max_height_big_image'] = to_int($GLOBALS['LA']['max_height_big_image']);
		$param['max_width_small_image'] = to_int($GLOBALS['LA']['max_width_small_image']);
		$param['max_height_small_image'] = to_int($GLOBALS['LA']['max_height_small_image']);

		$param['used_watermark_big_image'] = false;
		$param['used_watermark_small_image'] = false;
		$param['isset_big_image'] = false;

		$add_advertisement_id = $shop->InsertItem($param);

		if ($add_advertisement_id)
		{
			// Добавляем Дату и время добавления объявления
			$param = array ();
			$param['shop_items_catalog_item_id'] = $add_advertisement_id;
			$param['shop_list_of_properties_id'] = 61;
			$param['shop_properties_items_value'] = date('d.m.Y H:i:s');

			$shop->InsertPropertiesItem($param);

			// Добавляем ФИО
			$param = array ();
			$param['shop_items_catalog_item_id'] = $add_advertisement_id;
			$param['shop_list_of_properties_id'] = 4;
			$param['shop_properties_items_value'] = htmlspecialchars(strip_tags(to_str($_POST['advertisement_fio'])));

			$shop->InsertPropertiesItem($param);

			// Добавляем Телефон
			$param = array ();
			$param['shop_items_catalog_item_id'] = $add_advertisement_id;
			$param['shop_list_of_properties_id'] = 5;
			$param['shop_properties_items_value'] = htmlspecialchars(strip_tags(to_str($_POST['advertisement_phone'])));

			$shop->InsertPropertiesItem($param);

			// Добавляем E-mail
			$param = array ();
			$param['shop_items_catalog_item_id'] = $add_advertisement_id;
			$param['shop_list_of_properties_id'] = 385;
			$param['shop_properties_items_value'] = htmlspecialchars(strip_tags(to_str($_POST['advertisement_email'])));

			$shop->InsertPropertiesItem($param);

			// Получаем список дополнительных свойств раздела объявлений
			$group_propertys_result = $shop->GetPropertiesOfGroup($GLOBALS['shop_item_path']['group'], false, $current_shop_id);

			$count_group_propertys = count($group_propertys_result);

			// Для группы существуют доп. свойства
			if ($count_group_propertys)
			{
				// В цикле получаем подробную информацию о дополнительных свойствах группы
				for ($i = 0; $i < $count_group_propertys; $i++)
				{
					if (isset ($_POST['shop_item_property'.$group_propertys_result[$i]]) || isset ($_FILES['shop_item_property'.$group_propertys_result[$i]]))
					{
						if (isset ($_POST['shop_item_property'.$group_propertys_result[$i]]))
						{
							$item_property = $shop->GetPropretyOfItems($group_propertys_result[$i]);

							// Доп. свойство - нефлажок и нефайл
							if ($item_property['shop_list_of_properties_type'] != 7 && $item_property['shop_list_of_properties_type'] != 2)
							{
								$property_value = htmlspecialchars(strip_tags(to_str($_POST['shop_item_property'.$group_propertys_result[$i]])));
							}
							// Доп. свойство - флажок
							elseif ($item_property['shop_list_of_properties_type'] == 7)

							{
								$property_value = 1;
							}
							// Доп. свойство - список
							elseif ($item_property['shop_list_of_properties_type'] == 2)
							{
								$property_value = to_int($_POST['shop_item_property'.$group_propertys_result[$i]]);
							}

							$shop_properties_items_value_small = '';
							$shop_properties_items_file = '';
							$shop_properties_items_file_small = '';

						}
						else // Доп. свойство - файл
						{

					if (to_int($_FILES['shop_item_property'.$group_propertys_result[$i]]['size']) > 0)
					{
						// Создаем директорию для хранения файла
						$item_dir_path = CMS_FOLDER . $shop->GetItemDir($add_advertisement_id);
					
							$ext = $kernel->GetExtension($_FILES['shop_item_property'.$group_propertys_result[$i]]['name']);

							// Если расширение файла разрешено
							if (in_array(mb_strtoupper($ext), $allow_ext))
							{
								if ($ext != '')
								{
									$ext = '.'.$ext;
								}

								$property_big_file = $item_dir_path.'shop_property_file_'.$add_advertisement_id.'_'.$group_propertys_result[$i].$ext;

								$property_small_file = $item_dir_path.'small_shop_property_file_'.$add_advertisement_id.'_'.$group_propertys_result[$i].$ext;

								$param_load_files = array ();
								$param_load_files['path_source_big_image'] = $_FILES['shop_item_property'.$group_propertys_result[$i]]['tmp_name'];
								$param_load_files['path_source_small_image'] = '';
								$param_load_files['original_file_name_big_image'] = to_str($_FILES['shop_item_property'.$group_propertys_result[$i]]['name']);
								$param_load_files['path_target_big_image'] = $property_big_file;
								$param_load_files['path_target_small_image'] = $property_small_file;
								$param_load_files['original_file_name_small_image'] = $param_load_files['original_file_name_big_image'];
								$param_load_files['use_big_image'] = true;
								$param_load_files['max_width_big_image'] = to_int($GLOBALS['LA']['max_width_big_image']);
								$param_load_files['max_height_big_image'] = to_int($GLOBALS['LA']['max_height_big_image']);
								$param_load_files['max_width_small_image'] = to_int($GLOBALS['LA']['max_width_small_image']);
								$param_load_files['max_height_small_image'] = to_int($GLOBALS['LA']['max_height_small_image']);

								$param_load_files['used_watermark_big_image'] = false;
								$param_load_files['used_watermark_small_image'] = false;
								$param_load_files['isset_big_image'] = false;

								if(strlen($item_dir_path) > 0)
								{
									$result = $kernel->AdminLoadFiles($param_load_files);
								}

								if ($result['big_image'])
								{
									$shop_properties_items_file = basename($property_big_file);
									$property_value = $param_load_files['original_file_name_big_image'];
								}
								else
								{
									$shop_properties_items_file = '';
									$property_value = '';
								}

								if ($result['small_image'])
								{
									$shop_properties_items_value_small = $param_load_files['original_file_name_small_image'];
									$shop_properties_items_file_small = basename($property_small_file);
								}
								else
								{
									$shop_properties_items_value_small = '';
									$shop_properties_items_file_small = '';
								}
								}
							}
							else
							{
								$shop_properties_items_file = '';
								$property_value = '';
								$shop_properties_items_value_small = '';
								$shop_properties_items_file_small = '';
							}
						}

						$param = array ();

						$param['shop_items_catalog_item_id'] = $add_advertisement_id;
						$param['shop_list_of_properties_id'] = $group_propertys_result[$i];
						$param['shop_properties_items_value'] = $property_value;
						$param['shop_properties_items_value_small'] = $shop_properties_items_value_small;
						$param['shop_properties_items_file'] = $shop_properties_items_file;
						$param['shop_properties_items_file_small'] = $shop_properties_items_file_small;

						$shop->InsertPropertiesItem($param);
					}
				}
			}

			// Отправка письма администратору
			$message = "Доброе время суток, уважаемый Администратор!\n\nНа доску объявлений была добавлена запись:\n";
			$message .= "Автор: ".strip_tags(to_str($_POST['advertisement_fio']))."\n";
			$message .= "E-mail: ".strip_tags(to_str($_POST['advertisement_email']))."\n";
			$message .= "Доска объявлений: ".to_str($shop_row['shop_shops_name'])."\n";

			$shop_group_row = $shop->GetGroup($GLOBALS['shop_item_path']['group']);
			$message .= "Раздел доски объявлений: ".to_str($shop_group_row['shop_groups_name'])."\n";

			$DateClass = new DateClass();
			$date = date('Y-m-d H:i:s');
			$message .= "Дата: ".$DateClass->datetime_format($date)."\n";
			$message .= "IP-адрес: ".to_str($_SERVER['REMOTE_ADDR'])."\n";
			$message .= "Заголовок: ".htmlspecialchars(strip_tags(to_str($_POST['advertisement_title'])))."\n";
			$message .= "Текст объявления: ".htmlspecialchars(strip_tags(to_str($_POST['advertisement_text'])));

			$subject = 'Новое объявление';

			$kernel->SendMailWithFile(EMAIL_TO, EMAIL_TO, $subject, $message, array (), 'text/plain');
				
			?>
<div id="message">Спасибо, объявление добавлено!</div>

<script type="text/javascript" language="JavaScript">
			var AddItemForm = document.getElementById('AddItemForm');
	
			if (AddItemForm)
			{
				// удаляем использованную форму добавления объявления 
				AddItemForm.innerHTML = '';
			}
			</script>

			<?php
		}
	}
	else // Ввели неправильный код подтверждения
	{
		?><div id="error">Вы ввели неправильный код подтверждения!</div>
		<script type="text/javascript" language="JavaScript">
		var captcha_key_input = document.getElementsByName('captcha_key');
		if (captcha_key_input[0])
		{
			ReNewCaptcha(captcha_key_input[0].value, 30);
		}
		</script>
		<?php
	}

	$message = ob_get_clean();

	$JsHttpRequest = new JsHttpRequest('UTF-8');

	$GLOBALS['_RESULT'] = array (
		'message' => $message
	);

	echo $JsHttpRequest->LOADER;
	exit();
}

/* Если путь существует */
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 .= ' - ';
		}

		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 = ' - '.$item_name;
		}
	}

	/* формируем заголовок страницы */
	$new_title = $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));
		}
		elseif ($structure_row['structure_type'] == 1)
		{
			// Текущая страница - модуль
			$kernel->set_current_page($structure->GetStructureFilesPath() . "/Structure{$structure_id}.php");
		}
		else
		{
			// Типовая динамическая страница
			$lib_id = intval($structure_row['lib_id']);

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

			$kernel->set_current_page($lib->GetLibPath($lib_id) . "/lib_{$lib_id}.php");
		}

		// Шаблон вывода для страницы
		$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);
		}
	}
}
?>