"; $imagepath = 'images/'; $jspath = 'js/'; // Соединение с базой данных include "include/mysql.php"; // Подключаем функции шаблонизатора include "smview/function.php"; // Подключаем общие функции include "include/function.php"; // Модуль определения/переключения языка include "include/chooselng.php"; include "include/fuckie.php"; $SandLocation = getSandLocation($_SESSION['Lng']); // Функциональность блока заголовков (модуль использует $SandID, $_SESSION['Lng']) include "include/header.php"; // Функциональность блока навигации (модуль использует $_SESSION['Lng']) include "include/navigate.php"; // Глобальные переменные $title = GetTextField(26, $_SESSION['Lng'], $LOG_PATH); $title .= GetTextField(22, $_SESSION['Lng'], $LOG_PATH); $StaticName = GetTextField(8 , $_SESSION['Lng'], $LOG_PATH); $OGName = GetTextField(8 , $_SESSION['Lng'], $LOG_PATH); $OGDesc = GetTextField(35 , $_SESSION['Lng'], $LOG_PATH); $OGImage = "images_static/og.jpg"; $OGPath = "http://everysand.com"; $Mode2dText = GetTextField(33, $_SESSION['Lng'], $LOG_PATH); $Mode3dText = GetTextField(34, $_SESSION['Lng'], $LOG_PATH); // Блок правовой информации $LegalInf = GetTextField(6, $_SESSION['Lng'], $LOG_PATH); $LegalLinkText = GetTextField(7, $_SESSION['Lng'], $LOG_PATH); // Запретить кеширование страниц nocache(); // Если ingoreR2S = 'yes' - выводить всё, если не yes - то выводить только R2S, если не передали - не менять $R2SFilter = 0; if (!empty($_REQUEST['ingoreR2S'])) { if ('yes' == $_REQUEST['ingoreR2S']) $_SESSION['R2S'] = '-1'; else $_SESSION['R2S'] = '0'; } if (!empty($_SESSION['R2S'])) { if ('-1' == $_SESSION['R2S']) $R2SFilter = -1; else $R2SFilter = 0; } if (empty($_SESSION['CurrentSandID'])) { // Выбрать случайный песок из БД $result = mysql_query(sprintf("SELECT SandID FROM Sand WHERE ReadyToShow<>%s ORDER BY rand() LIMIT 1", $R2SFilter)); $result = mysql_fetch_array($result); $SandID = $result['SandID']; } else $SandID = $_SESSION['CurrentSandID']; // Если передали идентификатор песка if (!empty($_REQUEST['sand'])) { // Проверить, есть ли этот песок в БД $result = mysql_query(sprintf("SELECT SandID FROM Sand WHERE SandID='%s' AND ReadyToShow<>%s", $_REQUEST['sand'], $R2SFilter)); if (mysql_num_rows($result)!==0) { $result = mysql_fetch_array($result); $SandID = $result['SandID']; } } if (!empty($_REQUEST['xlcode'])) { // Проверить, есть ли этот песок в БД $result = mysql_query(sprintf("SELECT SandID FROM Sand WHERE OldXLCode='%s' AND ReadyToShow<>%s", $_REQUEST['xlcode'], $R2SFilter)); if (mysql_num_rows($result)!==0) { $result = mysql_fetch_array($result); $SandID = $result['SandID']; } } // Сформировать ссылку на фото (500px x 500px) и ссылку на фото повышенного качества $PhotoPrew = sprintf($PHOTO_PREW, $SandID); $PhotoFull = sprintf($PHOTO_FULL, $SandID); $OGImage = $PhotoPrew; $OGPath = sprintf($FULL_URL, $SandID); $Error = 2; if (file_exists($PhotoPrew)) { $infoPrew = getimagesize($PhotoPrew); if ($infoPrew[2]==2) { if ($infoPrew[0]==$PHOTO_WIDTH && $infoPrew[1]==$PHOTO_HEIGHT) $Error--; else AddToLog($LOG_PATH, sprintf('Ширина и высота изображения в файле %s должна быть равны %spx x %spx', $PhotoPrew, $PHOTO_WIDTH, $PHOTO_HEIGHT)); } else AddToLog($LOG_PATH, sprintf('Тип изображения в файле %s должен быть JPG', $PhotoPrew)); } else AddToLog($LOG_PATH, 'Отсутствует файл '.$PhotoPrew); if ($Error==1 && file_exists($PhotoFull)) { $infoFull = getimagesize($PhotoFull); if ($infoFull[2]==2) { if ($infoFull[0]*$infoPrew[1]==$infoFull[1]*$infoPrew[0]) $Error--; else AddToLog($LOG_PATH, sprintf('Пропорции изображений в файлах %s и %s должны совпадать', $PhotoPrew, $PhotoFull)); } else AddToLog($LOG_PATH, sprintf('Тип изображения в файле %s должен быть JPG', $PhotoFull)); } else AddToLog($LOG_PATH, 'Отсутствует файл '.$PhotoFull); // Если были ошибки if ($Error!=0) { $PhotoPrew = 'images/black01.png'; $PhotoFull = 'images/black01.png'; $OGImage = "images_static/og.jpg"; $OGPath = "http://everysand.com"; } // Ключ для Google API $GoogleAPI = GetTextField(9, $_SESSION['Lng'], $LOG_PATH); // Установить Сookie, в которые будут записываться координаты места сбора песка // Если страница изменилась (загружен другой песок) - Cookie будут перезаписаны // Если страница осталась та же - Cookie не изменятся, чтобы иметь возможность сохранить // позицию апплета GE, записанную на клиентской стороне // После инициализации апплета Cookie будут прочитаны на клиентской стороне, // а апплет Google Earth спозиционирован в нужную точку if (empty($_SESSION['CurrentSandID']) || $_SESSION['CurrentSandID'] != $SandID) { $_SESSION['CurrentSandID'] = $SandID; $result = mysql_query(sprintf("SELECT Latitude, Longitude, ViewRange, Tilt, Heading FROM Sand WHERE SandID='%s'", $SandID)); $row = mysql_fetch_array($result); if (empty($row['Latitude']) || empty($row['Longitude'])) // Координаты не заданы - установить общий вид Земли setCookie('GEPosition', '0.0:0.0:8000000.0:0.0:0.0'); else // Установить координаты точки сбора песка setCookie('GEPosition', sprintf('%s:%s:%s:%s:%s', $row['Latitude'], $row['Longitude'], $row['ViewRange'], $row['Tilt'], $row['Heading'])); } // Текст под фото $IndexTextPhoto = GetTextField(32, $_SESSION['Lng'], $LOG_PATH); // Данные блока "Информация о песке" $IndexCountry = GetTextField(10, $_SESSION['Lng'], $LOG_PATH); $IndexPlace = GetTextField(11, $_SESSION['Lng'], $LOG_PATH); $IndexWho = GetTextField(12, $_SESSION['Lng'], $LOG_PATH); $IndexWhen = GetTextField(13, $_SESSION['Lng'], $LOG_PATH); $IndexSamePlaceText = GetTextField(19, $_SESSION['Lng'], $LOG_PATH); $IndexNearbyText = GetTextField(20, $_SESSION['Lng'], $LOG_PATH); $IndexDistantText = GetTextField(21, $_SESSION['Lng'], $LOG_PATH); // Получить информацию о конкретном песке $result = mysql_query(sprintf('SELECT TravellerID, %s, %s, %s, SamePlaceSands, NearbySands, DistantSands, PresiseCoordinates FROM Sand WHERE SandID="%s" ', CreateNameField('Place', $_SESSION['Lng']), CreateNameField('Title', $_SESSION['Lng']), CreateNameField('Year', $_SESSION['Lng']), $SandID )); $result = mysql_fetch_array($result); $IndexTravellerId = $result['TravellerID']; $IndexSamePlaceSands = empty($result['SamePlaceSands']) ? Array() : explode(',',$result['SamePlaceSands']); $IndexNearbySands = empty($result['NearbySands']) ? Array() : explode(',',$result['NearbySands'] ); $IndexDistantSands = empty($result['DistantSands']) ? Array() : explode(',',$result['DistantSands'] ); // Название и место сбора песка $IndexPlaceTitle = empty($result['Place']) ? $result['Title'] : $result['Place'].',
'.$result['Title']; $IndexPresiseMarker = ($result['PresiseCoordinates'] == 1) ? sprintf($SANDLIST_PRECISE, GetTextField(25, $_SESSION['Lng'], $LOG_PATH)) : ''; // Дата сбора $IndexDate = $result['Year']; // Название страны if ($SandLocation[$SandID]['Country']['Id']!='null') $IndexCountryLink = sprintf('%s', GetTextField(14, $_SESSION['Lng'], $LOG_PATH), $SandLocation[$SandID]['Country']['Id'], $SandLocation[$SandID]['Country']['Name'] ); else $IndexCountryLink = GetTextField(15, $_SESSION['Lng'], $LOG_PATH); // Название региона if ($SandLocation[$SandID]['Region']['Id']!='null') $IndexRegionLink = sprintf('%s,
', GetTextField(14, $_SESSION['Lng'], $LOG_PATH), $SandLocation[$SandID]['Region']['Id'], $SandLocation[$SandID]['Region']['Name'] ); else $IndexRegionLink = ''; // Текст перед галлереей №1 $IndexGallery1Text = GetTextField(31, $_SESSION['Lng'], $LOG_PATH); // Имя и пол путешественника if (!empty($IndexTravellerId)) { $result = mysql_query(sprintf('SELECT %s, Grammar FROM Traveller WHERE TravellerID="%s"', CreateNameField('Name', $_SESSION['Lng']), $IndexTravellerId )); $result = mysql_fetch_array($result); $IndexTravellerName = $result['Name']; switch ($result['Grammar']) { case 'm': $IndexTravellerGrammar = GetTextField(16, $_SESSION['Lng'], $LOG_PATH); $TravellerGr = GetTextField(28, $_SESSION['Lng'], $LOG_PATH); break; case 'f': $IndexTravellerGrammar = GetTextField(17, $_SESSION['Lng'], $LOG_PATH); $TravellerGr = GetTextField(29, $_SESSION['Lng'], $LOG_PATH); break; default : $IndexTravellerGrammar = GetTextField(18, $_SESSION['Lng'], $LOG_PATH); $TravellerGr = GetTextField(30, $_SESSION['Lng'], $LOG_PATH); break; } // Выбрать из базы пески, привезенные этим же путешественником $result = mysql_query(sprintf('SELECT SandID, %s, %s, %s, PresiseCoordinates FROM Sand WHERE TravellerID="%s" AND SandID<>"%s" AND ReadyToShow<>%s ORDER BY Rand() LIMIT %s', CreateNameField('Place', $_SESSION['Lng']), CreateNameField('Title', $_SESSION['Lng']), CreateNameField('Year', $_SESSION['Lng']), $IndexTravellerId, $SandID, $R2SFilter, $MAX_COUNT_SAND )); $IndexTravellerSands = Array(); $IndexTravellerBool = false; $_SESSION['TravellerGalleryId'] = Array(); $i = 0; $rnd = mt_rand(1, 1000000); while ($row = mysql_fetch_array($result)) { $Temp = $row['Title']; $Temp.= ($row['PresiseCoordinates']==1) ? sprintf(' ', $imagepath) : ''; if (!empty($row['Place'])) $Temp = $row['Place'].', '.$Temp; if ($SandLocation[$row['SandID']]['Region']['Id'] !='null') $Temp = $SandLocation[$row['SandID']]['Region']['Name'].', '.$Temp; if ($SandLocation[$row['SandID']]['Country']['Id']!='null') $Temp = $SandLocation[$row['SandID']]['Country']['Name'].', '.$Temp; $Temp.= '
'; if (!empty($IndexTravellerName)) $Temp.= $TravellerGr.' '.$IndexTravellerName.' '; if (!empty($row['Year'])) $Temp.= $row['Year']; $IndexTravellerSands[$i] = Array('Background' => sprintf('url(image34.php?source=TravellerGalleryId&%s) -%spx 0px', $rnd, $i * 34), 'SandID' => $row['SandID'], 'Title' => htmlspecialchars($Temp) ); $_SESSION['TravellerGalleryId'][$i] = $row['SandID']; $i++; $IndexTravellerBool = true; } $IndexTravellerBroughtBy = $IndexTravellerGrammar.' '.$IndexTravellerName.':'; } else { $IndexTravellerSands = Array(); $IndexTraveller = ''; $IndexTravellerGrammar = ''; $IndexTravellerBroughtBy = ''; $IndexTravellerBool = false; } // Пески там же, рядом, далеко $count1 = count($IndexSamePlaceSands); $count2 = count($IndexNearbySands); $count3 = count($IndexDistantSands); $IndexDistanceSandsBool = false; if ($count1!=0) { $IndexSamePlaceSandsBool = true; $result = mysql_query(sprintf('SELECT SandID, %s, %s, %s, PresiseCoordinates, (SELECT %s FROM Traveller WHERE Traveller.TravellerID = Sand.TravellerID) AS TravellerName, (SELECT Grammar FROM Traveller WHERE Traveller.TravellerID = Sand.TravellerID) AS TravellerGrammar FROM Sand WHERE SandID IN ("%s") AND ReadyToShow<>%s ORDER BY SandID', CreateNameField('Place', $_SESSION['Lng']), CreateNameField('Title', $_SESSION['Lng']), CreateNameField('Year', $_SESSION['Lng']), CreateNameField('Name', $_SESSION['Lng']), implode('","',$IndexSamePlaceSands), $R2SFilter )); $IndexSamePlaceSands = Array(); $_SESSION['SamePlaceSandsId'] = Array(); $i = 0; $rnd = mt_rand(1, 1000000); while ($row = mysql_fetch_array($result)) { switch ($row['TravellerGrammar']) { case 'm' : $TravellerGr = GetTextField(28, $_SESSION['Lng'], $LOG_PATH); break; case 'f' : $TravellerGr = GetTextField(29, $_SESSION['Lng'], $LOG_PATH); break; default : $TravellerGr = GetTextField(30, $_SESSION['Lng'], $LOG_PATH); } $Temp = $row['Title']; $Temp.= ($row['PresiseCoordinates']==1) ? sprintf(' ', $imagepath) : ''; if (!empty($row['Place'])) $Temp = $row['Place'].', '.$Temp; if ($SandLocation[$row['SandID']]['Region']['Id'] !='null') $Temp = $SandLocation[$row['SandID']]['Region']['Name'].', '.$Temp; if ($SandLocation[$row['SandID']]['Country']['Id']!='null') $Temp = $SandLocation[$row['SandID']]['Country']['Name'].', '.$Temp; $Temp.= '
'; if (!empty($row['TravellerName'])) $Temp.= $TravellerGr.' '.$row['TravellerName'].' '; if (!empty($row['Year'])) $Temp.= $row['Year']; $IndexSamePlaceSands[$i] = Array('Background' => sprintf('url(image34.php?source=SamePlaceSandsId&%s) -%spx 0px', $rnd, $i * 34), 'SandID' => $row['SandID'], 'Title' => htmlspecialchars($Temp) ); $_SESSION['SamePlaceSandsId'][$i] = $row['SandID']; $i++; $IndexSamePlaceSandsBool = true; } } else { $IndexSamePlaceSands = Array(); $IndexSamePlaceSandsBool = false; } if ($count2!=0) { $IndexNearbySandsBool = true; $result = mysql_query(sprintf('SELECT SandID, %s, %s, %s, PresiseCoordinates, (SELECT %s FROM Traveller WHERE Traveller.TravellerID = Sand.TravellerID) AS TravellerName, (SELECT Grammar FROM Traveller WHERE Traveller.TravellerID = Sand.TravellerID) AS TravellerGrammar FROM Sand WHERE SandID IN ("%s") AND ReadyToShow<>%s ORDER BY SandID', CreateNameField('Place', $_SESSION['Lng']), CreateNameField('Title', $_SESSION['Lng']), CreateNameField('Year', $_SESSION['Lng']), CreateNameField('Name', $_SESSION['Lng']), implode('","',$IndexNearbySands), $R2SFilter )); $IndexNearbySands = Array(); $_SESSION['NearbySandsId'] = Array(); $i = 0; $rnd = mt_rand(1, 1000000); while ($row = mysql_fetch_array($result)) { switch ($row['TravellerGrammar']) { case 'm' : $TravellerGr = GetTextField(28, $_SESSION['Lng'], $LOG_PATH); break; case 'f' : $TravellerGr = GetTextField(29, $_SESSION['Lng'], $LOG_PATH); break; default : $TravellerGr = GetTextField(30, $_SESSION['Lng'], $LOG_PATH); } $Temp = $row['Title']; $Temp.= ($row['PresiseCoordinates']==1) ? sprintf(' ', $imagepath) : ''; if (!empty($row['Place'])) $Temp = $row['Place'].', '.$Temp; if ($SandLocation[$row['SandID']]['Region']['Id'] !='null') $Temp = $SandLocation[$row['SandID']]['Region']['Name'].', '.$Temp; if ($SandLocation[$row['SandID']]['Country']['Id']!='null') $Temp = $SandLocation[$row['SandID']]['Country']['Name'].', '.$Temp; $Temp.= '
'; if (!empty($row['TravellerName'])) $Temp.= $TravellerGr.' '.$row['TravellerName'].' '; if (!empty($row['Year'])) $Temp.= $row['Year']; $IndexNearbySands[$i] = Array('Background' => sprintf('url(image34.php?source=NearbySandsId&%s) -%spx 0px', $rnd, $i * 34), 'SandID' => $row['SandID'], 'Title' => htmlspecialchars($Temp) ); $_SESSION['NearbySandsId'][$i] = $row['SandID']; $i++; $IndexNearbySandsBool = true; } } else { $IndexNearbySands = Array(); $IndexNearbySandsBool = false; } if ($count3!=0) { $IndexDistantSandsBool = true; $result = mysql_query(sprintf('SELECT SandID, %s, %s, %s, PresiseCoordinates, (SELECT %s FROM Traveller WHERE Traveller.TravellerID = Sand.TravellerID) AS TravellerName, (SELECT Grammar FROM Traveller WHERE Traveller.TravellerID = Sand.TravellerID) AS TravellerGrammar FROM Sand WHERE SandID IN ("%s") AND ReadyToShow<>%s ORDER BY SandID', CreateNameField('Place', $_SESSION['Lng']), CreateNameField('Title', $_SESSION['Lng']), CreateNameField('Year', $_SESSION['Lng']), CreateNameField('Name', $_SESSION['Lng']), implode('","',$IndexDistantSands), $R2SFilter )); $IndexDistantSands = Array(); $_SESSION['DistantSandsId'] = Array(); $i = 0; $rnd = mt_rand(1, 1000000); while ($row = mysql_fetch_array($result)) { switch ($row['TravellerGrammar']) { case 'm' : $TravellerGr = GetTextField(28, $_SESSION['Lng'], $LOG_PATH); break; case 'f' : $TravellerGr = GetTextField(29, $_SESSION['Lng'], $LOG_PATH); break; default : $TravellerGr = GetTextField(30, $_SESSION['Lng'], $LOG_PATH); } $Temp = $row['Title']; $Temp.= ($row['PresiseCoordinates']==1) ? sprintf(' ', $imagepath) : ''; if (!empty($row['Place'])) $Temp = $row['Place'].', '.$Temp; if ($SandLocation[$row['SandID']]['Region']['Id'] !='null') $Temp = $SandLocation[$row['SandID']]['Region']['Name'].', '.$Temp; if ($SandLocation[$row['SandID']]['Country']['Id']!='null') $Temp = $SandLocation[$row['SandID']]['Country']['Name'].', '.$Temp; $Temp.= '
'; if (!empty($row['TravellerName'])) $Temp.= $TravellerGr.' '.$row['TravellerName'].' '; if (!empty($row['Year'])) $Temp.= $row['Year']; $IndexDistantSands[$i] = Array('Background' => sprintf('url(image34.php?source=DistantSandsId&%s) -%spx 0px', $rnd, $i * 34), 'SandID' => $row['SandID'], 'Title' => htmlspecialchars($Temp) ); $_SESSION['DistantSandsId'][$i] = $row['SandID']; $i++; $IndexDistantSandsBool = true; } } else { $IndexDistantSands = Array(); $IndexDistantSandsBool = false; } $IndexDistanceSandsBool = $IndexSamePlaceSandsBool || $IndexNearbySandsBool || $IndexDistantSandsBool; // Загрузить и обработать шаблон echo sm_view("index.html"); ?>