%PDF- %PDF- 403WebShell
403Webshell
Server IP : 37.220.80.31  /  Your IP : 3.140.186.206
Web Server : Apache/2.4.52 (Ubuntu)
System : Linux 3051455-guretool.twc1.net 5.15.0-107-generic #117-Ubuntu SMP Fri Apr 26 12:26:49 UTC 2024 x86_64
User : www-root ( 1010)
PHP Version : 7.4.33
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/bitrix.eshop/install/wizards/bitrix/eshop/site/services/sale/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/bitrix.eshop/install/wizards/bitrix/eshop/site/services/sale/locations.php
<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)
	die();

if(!CModule::IncludeModule('sale'))
	return;

$dbSite = CSite::GetByID(WIZARD_SITE_ID);
if($arSite = $dbSite -> Fetch())
	$lang = $arSite["LANGUAGE_ID"];
if($lang == '')
	$lang = "ru";
$bRus = false;
if($lang == "ru")
	$bRus = true;

if($bRus || COption::GetOptionString("eshop", "wizard_installed", "N", WIZARD_SITE_ID) != "Y" || WIZARD_INSTALL_DEMO_DATA)
{
	$loc_file = $wizard->GetVar("locations_csv");


	$typeTableFreshEnough = false; 
	if($GLOBALS['DB']->Query("select DISPLAY_SORT from b_sale_loc_type WHERE 1=0", true))
		$typeTableFreshEnough = true;

	if($loc_file <> '')
	{
		define('LOC_STEP_LENGTH', 20);

		if(\Bitrix\Main\Config\Option::get('sale', 'sale_locationpro_migrated', '') == 'Y') // CSaleLocation::isLocationProMigrated()
		{
			require($_SERVER['DOCUMENT_ROOT'].WIZARD_SERVICE_RELATIVE_PATH."/locations/pro/file_map.php");

			$file_url = 		$_SERVER['DOCUMENT_ROOT'].WIZARD_SERVICE_RELATIVE_PATH."/locations/pro/bundles/".$LOCATION_FILE_MAP[$loc_file];
			$type_file_url = 	$_SERVER['DOCUMENT_ROOT'].WIZARD_SERVICE_RELATIVE_PATH."/locations/pro/type".($typeTableFreshEnough ? '.v2' : '').".csv";
			$service_file_url = $_SERVER['DOCUMENT_ROOT'].WIZARD_SERVICE_RELATIVE_PATH."/locations/pro/externalservice.csv";

			if (isset($LOCATION_FILE_MAP[$loc_file]) && file_exists($file_url))
			{
				if(!isset($_SESSION["LOC_IMPORT_DESC"]) || ($file_url != $_SESSION["LOC_IMPORT_DESC"]['FILE']))
				{
					$_SESSION["LOC_IMPORT_DESC"] = array(
						'POS' => 0,
						'FILE' => $file_url,
						'TYPE_FILE' => $type_file_url,
						'SERVICE_FILE' => $service_file_url,
						'TIME_LIMIT' => LOC_STEP_LENGTH,
						'STEP' => 'import'
					);
				}

				$done = \Bitrix\Sale\Location\Import\ImportProcess::importFile($_SESSION["LOC_IMPORT_DESC"]);
				
				if($done)
				{
					unset($_SESSION["LOC_IMPORT_DESC"]);
					// go farther to other steps
				}
				else
				{
					$this->repeatCurrentService = true; // go to the next iteration of the same step
				}
			}
		}
		else
		{
			// DEPRECATED old location branch

			$time_limit = ini_get('max_execution_time');
			if ($time_limit < LOC_STEP_LENGTH) set_time_limit(LOC_STEP_LENGTH + 5);

			$start_time = time();
			$finish_time = $start_time + LOC_STEP_LENGTH;

			if(in_array($loc_file, array("loc_ussr.csv", "loc_ua.csv", "loc_kz.csv")))
				$file_url = $_SERVER['DOCUMENT_ROOT'].WIZARD_SERVICE_RELATIVE_PATH."/locations/ru/".$loc_file;
			else
				$file_url = $_SERVER['DOCUMENT_ROOT'].WIZARD_SERVICE_RELATIVE_PATH."/locations/".$loc_file;

			if (file_exists($file_url))
			{
				$bFinish = true;

				$arSysLangs = Array();
				$db_lang = CLangAdmin::GetList('', '', array("ACTIVE" => "Y"));
				while ($arLang = $db_lang->Fetch())
				{
					$arSysLangs[$arLang["LID"]] = $arLang["LID"];
				}

				$arLocations = array();
				$bSync = true;

				$dbLocations = CSaleLocation::GetList(array(), array(), false, false, array("ID", "COUNTRY_ID", "REGION_ID", "CITY_ID"));
				while ($arLoc = $dbLocations->Fetch())
				{
					$arLocations[$arLoc["ID"]] = $arLoc;
				}

				if (count($arLocations) <= 0)
					$bSync = false;

				include_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/classes/general/csv_data.php");

				$csvFile = new CCSVData();
				$csvFile->LoadFile($file_url);
				$csvFile->SetFieldsType("R");
				$csvFile->SetFirstHeader(false);
				$csvFile->SetDelimiter(",");

				$arRes = $csvFile->Fetch();
				if (is_array($arRes) && count($arRes) > 0 && mb_strlen($arRes[0]) == 2)
				{
					$DefLang = $arRes[0];
					if (in_array($DefLang, $arSysLangs))
					{

						if (is_set($_SESSION["LOC_POS"]))
						{
							$csvFile->SetPos($_SESSION["LOC_POS"]);

							$CurCountryID = $_SESSION["CUR_COUNTRY_ID"];
							$CurRegionID = $_SESSION["CUR_REGION_ID"];
							$numCountries = $_SESSION["NUM_COUNTRIES"];
							$numRegiones = $_SESSION["NUM_REGIONES"];
							$numCities = $_SESSION["NUM_CITIES"];
							$numLocations = $_SESSION["NUM_LOCATIONS"];
						}
						else
						{
							$CurCountryID = 0;
							$CurRegionID = 0;
							$numCountries = 0;
							$numRegiones = 0;
							$numCities = 0;
							$numLocations = 0;
						}

						$tt = 0;
						while ($arRes = $csvFile->Fetch())
						{
							$type = mb_strtoupper($arRes[0]);
							$tt++;
							$arArrayTmp = array();
							foreach($arRes as $ind => $value)
							{
								if ($ind%2 && isset($arSysLangs[$value]))
								{
									$arArrayTmp[$value] = array(
											"LID" => $value,
											"NAME" => $arRes[$ind + 1]
										);

									if ($value == $DefLang)
									{
										$arArrayTmp["NAME"] = $arRes[$ind + 1];
									}
								}
							}

							//country
							if (is_array($arArrayTmp) && $arArrayTmp["NAME"] <> '')
							{
								if ($type == "S")
								{
									$CurRegionID = null;
									$arRegionList = Array();
									$CurCountryID = null;
									$arContList = array();
									$LLL = 0;
									if ($bSync)
									{
										$db_contList = CSaleLocation::GetList(
											Array(),
											Array(
												"COUNTRY_NAME" => $arArrayTmp["NAME"],
												"LID" => $DefLang
											)
										);
										if ($arContList = $db_contList->Fetch())
										{
											$LLL = intval($arContList["ID"]);
											$CurCountryID = intval($arContList["COUNTRY_ID"]);
										}
									}

									if (intval($CurCountryID) <= 0)
									{
										$CurCountryID = CSaleLocation::AddCountry($arArrayTmp);
										$CurCountryID = intval($CurCountryID);
										if ($CurCountryID>0)
										{
											$numCountries++;
											if(intval($LLL) <= 0)
											{
												$LLL = CSaleLocation::AddLocation(array("COUNTRY_ID" => $CurCountryID));
												if (intval($LLL)>0) $numLocations++;
											}
										}
									}
								}
								elseif ($type == "R") //region
								{
									$CurRegionID = null;
									$arRegionList = Array();
									$LLL = 0;
									if ($bSync)
									{
										$db_rengList = CSaleLocation::GetList(
											Array(),
											Array(
												"COUNTRY_ID" => $CurCountryID,
												"REGION_NAME"=>$arArrayTmp["NAME"],
												"LID" => $DefLang
											)
										);
										if ($arRegionList = $db_rengList->Fetch())
										{
											$LLL = $arRegionList["ID"];
											$CurRegionID = intval($arRegionList["REGION_ID"]);
										}
									}

									if (intval($CurRegionID) <= 0)
									{
										$CurRegionID = CSaleLocation::AddRegion($arArrayTmp);
										$CurRegionID = intval($CurRegionID);
										if ($CurRegionID > 0)
										{
											$numRegiones++;
											if (intval($LLL) <= 0)
											{
												$LLL = CSaleLocation::AddLocation(array("COUNTRY_ID" => $CurCountryID, "REGION_ID" => $CurRegionID));
												if (intval($LLL)>0) $numLocations++;
											}
										}
									}
								}
								elseif ($type == "T" && intval($CurCountryID)>0) //city
								{
									$city_id = 0;
									$LLL = 0;
									$arCityList = Array();

									if ($bSync)
									{
										$arFilter = Array(
												"COUNTRY_ID" => $CurCountryID,
												"CITY_NAME" => $arArrayTmp["NAME"],
												"LID" => $DefLang
											);
										if(intval($CurRegionID) > 0)
											$arFilter["REGION_ID"] = $CurRegionID;

										$db_cityList = CSaleLocation::GetList(
											Array(),
											$arFilter
										);
										if ($arCityList = $db_cityList->Fetch())
										{
											$LLL = $arCityList["ID"];
											$city_id = intval($arCityList["CITY_ID"]);
										}
									}

									if ($city_id <= 0)
									{
										$city_id = CSaleLocation::AddCity($arArrayTmp);
										$city_id = intval($city_id);
										if ($city_id > 0)
											$numCities++;
									}

									if ($city_id > 0)
									{
										if (intval($LLL) <= 0)
										{
											$LLL = CSaleLocation::AddLocation(
												array(
													"COUNTRY_ID" => $CurCountryID,
													"REGION_ID" => $CurRegionID,
													"CITY_ID" => $city_id
												));

											if (intval($LLL) > 0) $numLocations++;
										}
									}
								}
							}

							if($tt == 10)
							{
								$tt = 0;
								$cur_time = time();

								if ($cur_time >= $finish_time)
								{
									$cur_step = $csvFile->GetPos();
									$amount = $csvFile->iFileLength;

									$_SESSION["LOC_POS"] = $cur_step;
									$_SESSION["CUR_COUNTRY_ID"] = $CurCountryID;
									$_SESSION["CUR_REGION_ID"] = $CurRegionID;
									$_SESSION["NUM_COUNTRIES"] = $numCountries;
									$_SESSION["NUM_REGIONES"] = $numRegiones;
									$_SESSION["NUM_CITIES"] = $numCities;
									$_SESSION["NUM_LOCATIONS"] = $numLocations;

									$this->repeatCurrentService = true;

									$bFinish = false;
								}
							}
						}
					}
				}

				if ($bFinish)
					unset($_SESSION["LOC_POS"]);
				else
					return true;

				$time_limit = ini_get('max_execution_time');
				if ($time_limit < LOC_STEP_LENGTH) set_time_limit(LOC_STEP_LENGTH + 5);

				$start_time = time();
				$finish_time = $start_time + LOC_STEP_LENGTH;

				if ($loc_file == "loc_ussr.csv" && file_exists($_SERVER['DOCUMENT_ROOT'].WIZARD_SERVICE_RELATIVE_PATH."/locations/ru/zip_ussr.csv"))
				{
					$rsLocations = CSaleLocation::GetList(array(), array("LID" => 'ru'), false, false, array("ID", "CITY_NAME_LANG", "REGION_NAME_LANG"));
					$arLocationMap = array();
					while ($arLocation = $rsLocations->Fetch())
					{
						if($arLocation["CITY_NAME_LANG"] <> '')
						{
							if($arLocation["REGION_NAME_LANG"] <> '')
								$arLocationMap[$arLocation["CITY_NAME_LANG"]][$arLocation["REGION_NAME_LANG"]] = $arLocation["ID"];
							else
								$arLocationMap[$arLocation["CITY_NAME_LANG"]] = $arLocation["ID"];
						}
					}

					$DB->StartTransaction();

					include_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/classes/general/csv_data.php");

					$csvFile = new CCSVData();
					$csvFile->LoadFile($_SERVER['DOCUMENT_ROOT'].WIZARD_SERVICE_RELATIVE_PATH."/locations/ru/zip_ussr.csv");
					$csvFile->SetFieldsType("R");
					$csvFile->SetFirstHeader(false);
					$csvFile->SetDelimiter(";");

					if (is_set($_SESSION, 'ZIP_POS'))
					{
						$numZIP = $_SESSION["NUM_ZIP"];
						$csvFile->SetPos($_SESSION["ZIP_POS"]);
					}
					else
					{
						CSaleLocation::ClearAllLocationZIP();

						unset($_SESSION["NUM_ZIP"]);
						$numZIP = 0;
					}

					$bFinish = true;
					$arLocationsZIP = array();
					$tt = 0;
					$REGION = "";
					while ($arRes = $csvFile->Fetch())
					{
						$tt++;
						$CITY = $arRes[1];
						if($arRes[3] <> '')
							$REGION = $arRes[3];

						if (array_key_exists($CITY, $arLocationMap))
						{
							if($REGION <> '')
								$ID = $arLocationMap[$CITY][$REGION];
							else
								$ID = $arLocationMap[$CITY];
						}
						else
						{
							$ID = 0;
						}

						if ($ID)
						{
							CSaleLocation::AddLocationZIP($ID, $arRes[2]);

							$numZIP++;
						}

						if($tt == 10)
						{
							$tt = 0;

							$cur_time = time();
							if ($cur_time >= $finish_time)
							{
								$cur_step = $csvFile->GetPos();
								$amount = $csvFile->iFileLength;

								$_SESSION["ZIP_POS"] = $cur_step;
								$_SESSION["NUM_ZIP"] = $numZIP;

								$bFinish = false;

								$this->repeatCurrentService = true;

							}
						}
					}

					$DB->Commit();

					if ($bFinish)
						unset($_SESSION["ZIP_POS"]);
					else
						return true;
				}
			}

		}
	}
}
?>

Youez - 2016 - github.com/yon3zu
LinuXploit