|
<?php |
|
// Создаём снипет, например geolocation |
|
// тут его содержимое, а выводим его так |
|
// [!geolocation? &need=`phone` &html=`1`!] |
|
// $need - Запрос на вывод |
|
if (!$need) |
|
$need = 'phone'; // По умолчанию выводим телефон |
|
|
|
// Нужные параметры |
|
$cityDefault = 'Санкт-Петербург'; # город по умолчанию |
|
$arrParam = array( |
|
'Санкт-Петербург' => array( |
|
'phone' => '+7(777) 777-77-77', |
|
'address' => 'ул. дом. дурдом.', |
|
), |
|
'Москва' => array( |
|
'phone' => '+7(777) 777-77-78', |
|
'address' => 'ул. дом. дурдом. к2', |
|
) |
|
); |
|
|
|
// Тащим город пользователя из POST |
|
if (isset($_POST['USER_CITY'])) |
|
$_SESSION['USER_CITY'] = $_POST['USER_CITY']; |
|
|
|
// Если еще не вытаскивали город пользователя, тащим |
|
if (empty($_SESSION['USER_CITY']) && empty($_POST['USER_CITY'])) { |
|
$ip = $_SERVER['REMOTE_ADDR']; |
|
|
|
$url = 'http://ipgeobase.ru:7020/geo?ip='.$ip; |
|
$xmlstr = file_get_contents($url); |
|
$xml = new SimpleXMLElement($xmlstr); |
|
$sUserCity = $xml->ip[0]->city; |
|
|
|
// Если отвалился ipgeobase (500) пробуем другой |
|
if (empty($xmlstr)) { |
|
$request = file_get_contents("http://api.sypexgeo.net/json/".$ip); |
|
$array = json_decode($request); |
|
$sUserCity = $array->city->name_ru; |
|
} |
|
|
|
// Город по умолчанию или город пользователя |
|
if(empty($sUserCity)) |
|
$_SESSION['USER_CITY'] = $cityDefault; |
|
else |
|
$_SESSION['USER_CITY'] = iconv('utf-8', 'utf-8', $sUserCity); |
|
} |
|
|
|
// Вывод списка городов |
|
if (isset($_POST['SHOW_CITIES'])) { |
|
echo '<ul>'; |
|
|
|
foreach ($arrParam as $city => $param) |
|
if ($city == $_SESSION['USER_CITY']) |
|
echo '<li class="swithGeolocation _active_" data-city="'.$city.'">'.$city.'</li>'; |
|
else |
|
echo '<li class="swithGeolocation" data-city="'.$city.'">'.$city.'</li>'; |
|
|
|
echo '</ul>'; |
|
die(); |
|
} |
|
|
|
// Ищем подходящий массив с параметрами |
|
if (isset($arrParam[$_SESSION['USER_CITY']][$need])) |
|
$result = $arrParam[$_SESSION['USER_CITY']][$need]; |
|
else |
|
$result = $arrParam[$cityDefault][$need]; |
|
|
|
// Оформляем вывод при необходимости |
|
if (isset($html)) { |
|
if ($need === 'phone') { |
|
|
|
$sPhoneClean = str_replace("+", "", $result); |
|
$sPhoneClean = str_replace("(", "", $sPhoneClean); |
|
$sPhoneClean = str_replace(")", "", $sPhoneClean); |
|
$sPhoneClean = str_replace("-", "", $sPhoneClean); |
|
$sPhoneClean = str_replace(" ", "", $sPhoneClean); |
|
|
|
$result = ' |
|
<a href="tel:'.$sPhoneClean.'"> |
|
'.$result.' |
|
</a> |
|
'; |
|
} |
|
} |
|
|
|
// Выводим |
|
return $result; |