<?php 

$shop = & singleton('shop');

######################################################
#### Обработка принятия заказа от платежной системы ###
######################################################

// Обработка уведомления об оплате от RUpay
if (isset($_POST['rupay_action']))
{
		// Получаем ID заказа
		$order_id = to_int($_POST['rupay_order_id']);

		$order_row = $shop->GetOrder($order_id);

		if ($order_row)
		{
			// Вызов обработчика платежной системы
			$shop->ExecSystemsOfPayHandler($order_row['shop_system_of_pay_id']);
		}
}

// Обработка уведомления об оплате от WebMoney
if (isset($_POST['LMI_PAYEE_PURSE']))
{
	// Получаем ID заказа
	$order_id = to_int($_POST['LMI_PAYMENT_NO']);

	$order_row = $shop->GetOrder($order_id);

	if ($order_row)
	{
		// Вызов обработчика платежной системы
		$shop->ExecSystemsOfPayHandler($order_row['shop_system_of_pay_id']);
	}
}

############################################################
### [END] Обработка принятия заказа от платежной системы ###
############################################################

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

/*
Вывод информации о статусе платежа после его совершения и перенапрпавления с платежной системы
*/
if (isset($_GET['payment']) && isset($_GET['order_id']))
{
	// Получаем ID заказа
	$order_id = to_int($_GET['order_id']);

	$order_row = $shop->GetOrder($order_id);

	// Если заказ принадлежит текущему авторизированному пользователю
	if ($order_row['site_users_id'] == $site_users_id)
	{
		if (to_str($_GET['payment']) == 'success')
		{
			?>
			<h1>Подтверждение платежа</h1>
			<p>Спасибо, информация об оплате заказа <strong>№ <?php echo $order_id?></strong> получена.</p>
			<?php 
		}
		else
		{
			?>
			<h1>Платеж не получен</h1>
			<p>К сожалению при оплате заказа <strong>№ <?php echo $order_id?></strong> произошла ошибка.</p>
			<?php 
		}
	}
	elseif ($site_users_id === false) // Для случаев, когда отключен модуль "Пользователи сайта"
	{
		?>
		<h1>Подтверждение платежа</h1>
		<p>Благодарим за посещение нашего магазина!</p>
		<?php 
	}
	else
	{
		?>
		<h1>Ошибка</h1>
		<p>Неверный номер заказа!</p>
		<?php 
	}

	// Прерываем выполнение типовой динамической страницы
	return true;
}

/* Идентификатор интернет-магазина */
$shop_id = to_int($GLOBALS['LA']['shop_id']);

/* Проверяем наличие текущего пользователя */
/* Пользователь не авторизироаан */
if ($site_users_id == 0)
{
	/* Быстрая регистрация пользователя */
	if (isset($_POST['step1_2']))
	{
		/* пароль необязателен при обновлении данных о пользователе */
		if (isset($_POST['site_users_login'])
		&& isset($_POST['site_users_password'])
		&& isset($_POST['site_users_email'])
		&& isset($_POST['site_users_password_retry'])
		&& strpos($_POST['site_users_login'], 'http://') === false // Логин не начинается с http://
		)
		{
			if (to_str($_POST['site_users_password']) == to_str($_POST['site_users_password_retry']))
			{
				// В массив дополнительных параметров пишем адрес магазина
				$shop_row = $shop->GetShop($shop_id);

				// Получаем путь к магазину
				$Structure = & singleton('Structure');
				$shop_path = "/".$Structure->GetStructurePath($shop_row['structure_id'],0);

				$param['location'] = $shop_path . "cart/";

				$param['site_users_login'] = to_str($_POST['site_users_login']);
				$param['site_users_password'] = to_str($_POST['site_users_password']);
				$param['site_users_email'] = to_str($_POST['site_users_email']);
				$param['site_users_name'] = to_str($_POST['site_users_name']);
				$param['site_users_surname'] = to_str($_POST['site_users_surname']);
				$param['site_users_patronymic'] = to_str($_POST['site_users_patronymic']);
				$param['site_users_country'] = to_str($_POST['site_users_country']);
				$param['site_users_company'] = to_str($_POST['site_users_company']);
				$param['site_users_phone'] = to_str($_POST['site_users_phone']);
				// Группа по умолчанию
				$param['site_users_group_id'] = $SiteUsers->GetDefaultGroup();
				$param['xslname'] = to_str($GLOBALS['LA']['xsl_registaration_letter']);

				/* Не отправлять письмо о подтверждении регистрации,
				необходим при автоматическом подтрвеждении регистрации (ниже подтверждение) */

				/*
				ДАННЫЙ ПАРАМЕТР НЕОБХОДИМО УСТАНОВИТЬ, ЕСЛИ НЕ ТРЕБУЕТСЯ ПОДТВЕРЖДЕНИЕ РЕГИСТРАЦИИ
				ПОЛЬЗОВАТЕЛЯ ПОСЛЕ БЫСТРОГО ЗАКАЗА
				*/
				$param['not_send_mail_confirm'] = true;

				// добавляем пользователя, отправляем уведомление о регистрации
				$result = $SiteUsers->InsertSiteUser($param);

				/* Если не отправляли подтверждение -  */
				if ($result > 0 && $param['not_send_mail_confirm'])
				{
					/* Подтверждаем регистрацию */
					$SiteUsers->SetConfirmationID($result);

					/* Авторизируем пользователя */
					$SiteUsers->SetCurrentSiteUser($result);

					$site_users_id = $result;

					/* Перенсоим товары из cookies в корзину пользователя */
					$shop->GetItemsFromCookiesToCart($site_users_id);
				}

				/* Если пользователь зарегистрирован и необходимо подтверждать авторизацию */
				if ($result > 0 && !$param['not_send_mail_confirm'])
				{
					?>
					<h1>Спасибо за регистрацию</h1>
					<p>Для продолжения работы необходимо подтвердить регистрацию Ваших данных. 
					В Ваш адрес отправлено письмо, содержащее ссылку для подтверждения регистрации.</p>
					<?php 
				}

				// Проверяем наличие ошибки при регистрации
				if ($result < 0)
				{
					// -3 - Пользователь с таким логином зарегистрирован ранее
					// -2 - Пользователь с таким e-mail зарегистрирован ранее
					// -1 - Введен некорректный e-mail
					$GLOBALS['external_propertys']['error'] = $result;
				}
			}
			else
			{
				$GLOBALS['external_propertys']['error'] = -7; /*Повторный пароль введен неверно*/
			}
		}
		else
		{
			$GLOBALS['external_propertys']['error'] = -4; /* Пожалуйста, задайте все обязательные параметры */
		}
	}
}

if ($site_users_id > 0 || $site_users_id === false)
{
	/* Ввод адреса доставки */
	if (isset($_POST['step_1']))
	{
		/* Если отключен модуль пользователей сайта, то вызывается этот подэтап */
		if (isset($_POST['step_1_1a']))
		{
			/* Сохраняем данные о пользователе в сессию */
			$_SESSION['site_users_name'] = to_str($_POST['site_users_name']);
			$_SESSION['site_users_surname'] = to_str($_POST['site_users_surname']);
			$_SESSION['site_users_patronymic'] = to_str($_POST['site_users_patronymic']);
			$_SESSION['site_users_email'] = to_str($_POST['site_users_email']);
			$_SESSION['site_users_phone'] = to_str($_POST['site_users_phone']);
			$_SESSION['site_users_fax'] = to_str($_POST['site_users_fax']);
			$_SESSION['site_users_address'] = to_str($_POST['site_users_address']);
			$_SESSION['site_users_company'] = to_str($_POST['site_users_company']);
		}

		/* Запоминаем купон */
		$_SESSION['shop_coupon_text'] = to_str($_POST['shop_coupon_text']);

		/* Отображаем форму ввода адреса */
		// Не выбираем show_location, show_city и show_city_area, т.к. подгружаются через AJAX
		$shop->ShowAddress(to_str($GLOBALS['LA']['xsl_delivery_address']), $shop_id, array('show_location' => false, 'show_city' => false, 'show_city_area' => false));
	}

	/* Отображаем доступные доставки */
	elseif (isset($_POST['step_2']))
	{
		/* Сохраняем данные, введенные на первом этапе */
		$country = to_int($_POST['country']);
		$location = to_int($_POST['location']);
		$city = to_int($_POST['sel_city']);
		$city_area = to_int($_POST['sel_city_area']);

		/* Пишем информацию об адресе доставки в сессию */
		$_SESSION['country'] = $country;
		$_SESSION['location'] = $location;
		$_SESSION['city'] = $city;
		$_SESSION['city_area'] = $city_area;
		$_SESSION['index'] = to_str($_POST['index']);
		$_SESSION['full_address'] = to_str($_POST['full_address']);

		/* Индекс и полный адрес (в массив дополнительных параметров) */
		$external_propertys['index'] = to_str($_POST['index']);
		$external_propertys['full_address'] = to_str($_POST['full_address']);

		/* Получаем количество элементов, их общую цену, вес, валюту для заданного пользователя */
		$a_param = $shop->SelectAllItemsFromCartForUser($shop_id,
		$site_users_id);

		/* Выбираем все доступные типы доставки (с группировкой по типу доставки) */
		$param = array();
		$param['shop_coupon_text'] = to_str($_SESSION['shop_coupon_text']);
		$shop->ShowTypeOfDelivery($shop_id, $country, $location, $city, $city_area, $a_param['weight'], $a_param['price'],
		to_str($GLOBALS['LA']['xsl_shop_delivery']), $param, $external_propertys);
	}
	/* Показываем страницу доступных платежных систем */
	elseif (isset($_POST['step_3']))
	{
		/* Обрабатываем полученные данные о типе доставки */
		$_SESSION['cond_of_delivery'] = to_int($_POST['cond_of_delivery']);

		/* Расчитываем цену доставки */

		/* Получаем данные о магазине */
		$shop_row = $shop->GetShop($shop_id);

		$row = $shop->GetCondOfDelivery($_SESSION['cond_of_delivery']);

		/* идентификатор валюты магазина */
		$shop_currency_id = to_int($shop_row['shop_currency_id']);
		$coefficient = $shop->GetCurrencyCoefficientToShopCurrency($row['shop_currency_id'], $shop_currency_id);
		$price_delivery = sprintf("%.2f", $row['shop_cond_of_delivery_price'] * $coefficient);

		$_SESSION['cond_of_delivery_price'] = $price_delivery;

		/* Выводим  платежные системы */
		$external_propertys['cond_of_delivery'] = to_int($_POST['cond_of_delivery']);

		$shop->ShowSystemOfPay(to_str($GLOBALS['LA']['xsl_system_of_pay']),
		$external_propertys);
	}
	elseif (isset($_POST['step_4']))
	{
		/* Если выбрана (существует) платежная система */
		if (to_int($_POST['system_of_pay_id']) != 0)
		{
			/* Вызываем обработчик платежной системы */
			if (!$shop->ExecSystemsOfPayHandler(to_int($_POST['system_of_pay_id'])))
			{
				/* Не удалось найти обработчик */
				show_error_message("Не найден обработчик платежной системы с номером ".to_int($_POST['system_of_pay_id']));
			}
		}
		else
		{
			/* Ошибка, не указана платежная система! */
			show_error_message('Ошибка! Не указана ни одна платежная система.');
		}
	}
	else
	{
		/* Очищаем сессию */
		if (isset($_SESSION['CART'][$shop_id]))
		{
			unset($_SESSION['CART'][$shop_id]);
		}

		/* Отображаем корзину */
		$shop->ShowCart($shop_id, $site_users_id,
		to_str($GLOBALS['LA']['xsl_cart']), array('shop_coupon_text' => to_str($_REQUEST['shop_coupon_text'])));
	}
}
elseif ($site_users_id === 0)
{
	/* Выводим корзину */
	$shop->ShowCart($shop_id, $site_users_id,
	to_str($GLOBALS['LA']['xsl_cart']), array('shop_coupon_text' => to_str($_REQUEST['shop_coupon_text'])));

	/* Выводим форму быстрой регистрации (регистрация для пользователей) */
	$GLOBALS['external_propertys']['ПоказатьАвторизацию'] = 'true';
	$SiteUsers->ShowSiteUserRegistartion($site_users_id,
	to_str($GLOBALS['LA']['xsl_quick_registration']), $GLOBALS['external_propertys']);
}
else
{
?>
Вам необходимо подтвердить регистрацию!
<?php 
}

?>