Пример #1
0
 public function onBeforeStartComponent()
 {
     $db = JFactory::getDBO();
     $session = JFactory::getSession();
     $user_region = $session->get('user_region', 0);
     $phone_code = $session->get('phone_code', '');
     if (empty($user_region)) {
         $user_region = 0;
         require_once dirname(__FILE__) . '/helpers/geo.php';
         $SxGeo = new SxGeo(dirname(__FILE__) . '/helpers/SxGeoCity.dat', SXGEO_BATCH | SXGEO_MEMORY);
         $data = $SxGeo->getCityFull($_SERVER['HTTP_X_REAL_IP']);
         $region = isset($data['region']['name_ru']) ? $data['region']['name_ru'] : '';
         if ($region != '') {
             $query = $db->getQuery(true);
             $query->select('id')->from('#__ksenmart_regions')->where('title=' . $db->quote($region));
             $db->setQuery($query, 0, 1);
             $user_region = (int) $db->loadResult();
         }
         $session->set('user_region', $user_region);
         $country = isset($data['country']['name_ru']) ? $data['country']['name_ru'] : '';
         if ($country != '') {
             $query = $db->getQuery(true);
             $query->select('phone_code')->from('#__ksenmart_countries')->where('title=' . $db->quote($country));
             $db->setQuery($query, 0, 1);
             $phone_code = $db->loadResult();
         }
         $session->set('phone_code', $phone_code);
         unset($SxGeo);
     }
 }
Пример #2
0
 public function index($page, $city = null)
 {
     //var_dump($city);
     if ($this->session->userdata('city') == '') {
         include $_SERVER['DOCUMENT_ROOT'] . "/geo/SxGeo.php";
         $SxGeo = new SxGeo($_SERVER['DOCUMENT_ROOT'] . '/geo/SxGeoCity.dat');
         $ip = $_SERVER['REMOTE_ADDR'];
         $cityByIp = $SxGeo->getCityFull($ip);
         $city = $cityByIp['city'];
         $this->load->library('geo');
         $cityInfo = $this->geo->getCityIdByRussianName($city['name_ru']);
     } else {
         $cityBySlug = $this->model_pages->getCityIdBySlug($this->session->userdata('city'));
         $cityInfo = $this->model_pages->getCityInfoById($cityBySlug);
         $city = $cityInfo['slug'];
     }
     //var_dump($cityByIp);
     $data['city_name'] = $cityInfo['name_vp'];
     $data['city_exist'] = $cityInfo['name'];
     $data['city'] = $city;
     $data['city_name_pp'] = $cityInfo['name_pp'];
     $data['newPos'] = $this->getNewPositions();
     //var_dump($this->session->userdata());
     $data['siteRoot'] = '/';
     $data['base_url'] = '/' . $city . '/';
     $data['addonFiles'] = '<link href="' . $data['siteRoot'] . '/frontend/qroomblock/css/modal.css" rel="stylesheet">';
     $data['addonScripts'] = '';
     $data['page'] = $this->model_pages->getPageByUrl($page);
     //$data['page'] = str_replace('*nic*', , );
     if ($page == 'megaquest') {
         $name = '';
         if ($this->session->userdata('user_name') != "") {
             switch ($this->session->userdata('user_type')) {
                 case 2:
                     $table = 'mako_Costumers';
                     break;
                 case 1:
                     $table = 'mako_userTable';
                     break;
             }
             $name = $this->model_pages->getUserNameByEmail($table, $this->session->userdata('user_name'));
             $data['page'] = str_replace('*nic*', $name, $data['page']);
         }
         //var_dump($name);
         $data['description'] = "Я на квестура – " . $name . ". Хочу участвовать в Мегаквесте Екабу. Поддержи меня лайком! #мегаквестекабу";
     }
     //var_dump($this->session->userdata());
     $this->load->view('header', $data);
     $this->load->view('pageView', $data);
     $this->load->view('footer');
 }
Пример #3
0
 /**
  * @return array
  */
 public function getCityFull()
 {
     if (!$this->SxGeo) {
         $this->loadSxGeo();
     }
     return $this->SxGeo->getCityFull($this->getUserIp());
 }
Пример #4
0
 public static function getCityByIP($ip = null)
 {
     require_once _PS_ROOT_DIR_ . "/tools/SxGeo/SxGeo.php";
     if (!$ip) {
         if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
             $ip = $_SERVER['HTTP_CLIENT_IP'];
         } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
             $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
         } else {
             $ip = $_SERVER['REMOTE_ADDR'];
         }
         //Марик НЕ ЗАБУДЬ УБРАТЬ БЛЯТЬ
         //$ip = '46.162.1.95';
     }
     if ($ip == '127.0.0.1') {
         $ip = '46.162.1.95';
     }
     $SxGeo = new SxGeo(_PS_ROOT_DIR_ . '/tools/SxGeo/SxGeoCity.dat', SXGEO_BATCH | SXGEO_MEMORY);
     // Самый быстрый режим
     $city = $SxGeo->getCityFull($ip);
     return $city;
 }
Пример #5
0
// сверяем маркеры:
$save_marker = isset($_COOKIE['marker']) ? trim(strip_tags($_COOKIE['marker'])) : '';
if (@trim($_POST['marker']) != $save_marker) {
    die(json_encode('marker'));
}
// открытие во фрейме это плохо:
if (@trim($_POST['iframe']) != '0') {
    die(json_encode('iframe'));
}
// метод (GET или POST)
if (@$_POST['method'] != 'GET') {
    die(json_encode('method'));
}
// получаем страну юзера:
include 'SxGeo.php';
$SxGeo = new SxGeo('SxGeo.dat', SXGEO_FILE);
$country = @mb_strtolower($SxGeo->getCountry($ip), 'utf-8');
// детектируем AdBlock
if (@$_POST['adb'] == '1') {
    $save_adblock = '1';
} else {
    $save_adblock = '0';
}
// язык браузера
$save_language = @trim(strip_tags($_POST['language']));
// поддерживается ли куки
if (@$_POST['cookietrue'] == 'true') {
    $save_cookietrue = '1';
} else {
    $save_cookietrue = '0';
}
Пример #6
0
<?php

// Пример работы с классом SxGeo v2.2
header('Content-type: text/plain; charset=utf8');
// Подключаем SxGeo.php класс
include "SxGeo.php";
// Создаем объект
// Первый параметр - имя файла с базой (используется оригинальная бинарная база SxGeo.dat)
// Второй параметр - режим работы:
//     SXGEO_FILE   (работа с файлом базы, режим по умолчанию);
//     SXGEO_BATCH (пакетная обработка, увеличивает скорость при обработке множества IP за раз)
//     SXGEO_MEMORY (кэширование БД в памяти, еще увеличивает скорость пакетной обработки, но требует больше памяти)
$SxGeo = new SxGeo('SxGeoCity.dat');
//$SxGeo = new SxGeo('SxGeoCity.dat', SXGEO_BATCH | SXGEO_MEMORY); // Самый производительный режим, если нужно обработать много IP за раз
$ip = $_SERVER['REMOTE_ADDR'];
//var_export($SxGeo->getCityFull($ip)); // Вся информация о городе
var_export($SxGeo->get($ip));
// Краткая информация о городе или код страны (если используется база SxGeo Country)
//var_export($SxGeo->about());          // Информация о базе данных
Пример #7
0
 /**
  * @param string $ip
  *
  * @return number
  */
 public function getCountryId($ip = '')
 {
     return $this->sxGeo->getCountryId($this->getIp($ip));
 }
Пример #8
0
 protected function find($ip = null)
 {
     $geo = new SxGeo($this->db_location);
     $location = $geo->getCityFull($ip);
     return $location;
 }
Пример #9
0
<?php

$cookie = json_decode($_POST['json']);
define('__ROOT__', $_SERVER['DOCUMENT_ROOT']);
require_once __ROOT__ . '/medoo.min.php';
require_once __ROOT__ . '/config.php';
$database = new medoo(array('database_type' => $config_db['database_type'], 'database_name' => $config_db['database_name'], 'server_name' => $config_db['server_name'], 'username' => $config_db['username'], 'password' => $config_db['password'], 'charset' => $config_db['charset']));
$arr = array();
foreach ($cookie as $val) {
    $arr[] = $database->select("catalog", array("[>]catecory" => array('category' => 'id')), array('catalog.id', 'catalog.name', 'catalog.chpu', 'catalog.price', 'catecory.chpu(cat_chpu)', 'catalog.image', 'catalog.local_price'), array("catalog.id" => $val->id));
}
//print_r($arr);
//делаем скидку для локалей
require_once __ROOT__ . '/location/SxGeo.php';
$SxGeo = new SxGeo(__ROOT__ . '/location/SxGeo.dat');
$ip = $_SERVER['REMOTE_ADDR'];
$city = $SxGeo->get($ip);
$datas_disc = $database->select("location_discount", '*', array('city' => $city['city']['name_en']));
if (count($datas) == 0) {
    $datas_disc = $database->select("location_discount", '*', array('city' => 'Other'));
}
//учтем скидку вы цене товара
foreach ($arr as &$val) {
    if ($val[0]['local_price'] == 1) {
        $val[0]['price'] = $val[0]['price'] - $datas_disc[0]['discount'] * $val[0]['price'] / 100;
    }
}
//print_r($datas_disc);
//print_r($arr);
$res = json_encode($arr);
echo $res;
Пример #10
0
 /**
  * @return array
  */
 public function getCityFull()
 {
     return $this->SxGeo->getCityFull($this->getUserIp());
 }
Пример #11
0
<?php

// Пример работы с классом SxGeo v2.2
header('Content-type: text/plain; charset=utf8');
// Подключаем SxGeo.php класс
include "SxGeo.php";
// Создаем объект
// Первый параметр - имя файла с базой (используется оригинальная бинарная база SxGeo.dat)
// Второй параметр - режим работы:
//     SXGEO_FILE   (работа с файлом базы, режим по умолчанию);
//     SXGEO_BATCH (пакетная обработка, увеличивает скорость при обработке множества IP за раз)
//     SXGEO_MEMORY (кэширование БД в памяти, еще увеличивает скорость пакетной обработки, но требует больше памяти)
$SxGeo = new SxGeo('SxGeoCity.dat');
//$SxGeo = new SxGeo('SxGeoCity.dat', SXGEO_BATCH | SXGEO_MEMORY); // Самый производительный режим, если нужно обработать много IP за раз
$ip = $_SERVER['REMOTE_ADDR'];
var_export($SxGeo->getCityFull($ip));
// Вся информация о городе
var_export($SxGeo->get($ip));
// Краткая информация о городе или код страны (если используется база SxGeo Country)
var_export($SxGeo->about());
// Информация о базе данных
Пример #12
0
 public function index($city = false, $page = 1, $sort = "rating", $filter = null)
 {
     //var_dump($_GET);
     $data['sort'] = $sort;
     if ($sort == "costASC") {
         $sort = "cost ASC";
     }
     if ($sort == "costDESC") {
         $sort = "cost DESC";
     }
     $cityCheck = $this->model_welcome->checkCity($city);
     if (!$cityCheck) {
         $this->session->set_userdata('city', '');
         show_404();
         die;
     }
     if (isset($_GET['ref'])) {
         $this->session->set_userdata('ref', $_GET['ref']);
     }
     if (!$city) {
         //var_dump($this->session->userdata('city'));
         if ($this->session->userdata('city')) {
             $city = $this->session->userdata('city');
         }
         //redirect('/ekb/', 'refresh');
     }
     if (!file_exists($city . '/')) {
         $city = $city;
         //$this->city = $this->session->userdata('city');
     }
     $this->session->set_userdata('city', '');
     include $_SERVER['DOCUMENT_ROOT'] . "/geo/SxGeo.php";
     $SxGeo = new SxGeo($_SERVER['DOCUMENT_ROOT'] . '/geo/SxGeoCity.dat');
     $ip = $_SERVER['REMOTE_ADDR'];
     if ($this->session->userdata('city') == 'uploads') {
         $this->session->set_userdata('city', '');
         $city = '';
     }
     //var_dump($city, $this->session->userdata('city'));
     $cityByIp = $SxGeo->getCityFull($ip);
     //var_dump($cityByIp);
     //var_dump($cityByIp);
     $slug = $this->model_welcome->getSlugByName($cityByIp['city']['name_ru']);
     if ($slug['name'] == '') {
         $slug['name'] = 'Москва';
         $slug['slug'] = 'moscow';
     } elseif (!$slug) {
         $slug['name'] = 'Москва';
         $slug['slug'] = 'moscow';
     }
     //$slug['name'] = 'Москва';
     //$slug['slug'] = 'moscow';
     $data['mayBeCity'] = $slug;
     $this->load->library('geo');
     $data['allCity'] = $this->geo->getAllCity();
     $cityInfo = $this->geo->getCityIdByName($city);
     $this->session->set_userdata('city', $city);
     if (!$city) {
         $city = $cityInfo['slug'];
     } else {
         $data['title'] = "Квесты в реальности " . $cityInfo['name_pp'] . " - Questura.ru";
     }
     //var_dump($city,$cityInfo);
     //var_dump($city, $this->session->userdata('city'));
     //var_dump($cityInfo);
     //var_dump($page);
     $idsArray = $this->model_welcome->getUsersByCity($cityInfo['id_region']);
     if (is_array($idsArray)) {
         $ids = implode(' , ', $idsArray);
         $data['rooms'] = $this->model_welcome->getRoomsByUsers($ids, null, $page, $sort, $filter);
     } else {
         $ids = '';
         $data['rooms'] = array();
     }
     $data['roomsCount'] = $this->model_welcome->getCountRoomsByUsers($ids);
     $data['AllroomsCount'] = $this->model_welcome->getCountRoomsByUsers($ids, null, $filter);
     //var_dump($data['roomsCount']);
     if ($this->onPage > $data['roomsCount']) {
         $data['roomsCount'] = false;
     }
     //var_dump($this->onPage,$data['roomsCount']);
     if (!$idsArray || count($idsArray) == 0) {
         //show_404();
         //die();
     }
     //var_dump($cityInfo);
     if ($cityInfo['name_vp'] == '') {
         $cityInfo['name_vp'] = 'Вашего города';
     }
     if ($cityInfo['name_pp'] == '') {
         $cityInfo['name_pp'] = 'в вашем городе';
     }
     $data['city_parentId'] = $cityInfo['id_parent'];
     $data['city_id'] = $cityInfo['id_region'];
     $data['city_name'] = $cityInfo['name_vp'];
     $data['city_name_pp'] = $cityInfo['name_pp'];
     $data['city_exist'] = $cityInfo['name'];
     //var_dump($city);
     //$sort = false;
     switch ($sort) {
         case 'enters':
             $data['titleOnPage'] = 'Популярные квесты ' . $data['city_name'];
             break;
         case 'id':
             $data['titleOnPage'] = 'Новые квесты ' . $data['city_name'];
             break;
         default:
             $data['titleOnPage'] = 'Лучшие квесты ' . $data['city_name'];
     }
     //var_dump($sort);
     $data['city'] = $city;
     $data['base_url'] = '/' . $city . '/';
     $data['siteRoot'] = '';
     $data['newPos'] = $this->getNewPositions();
     //$this->model_welcome->getNew($data['city_id']);
     //var_dump($data['newPos']);
     $data['addonFiles'] = '';
     $data['addonScripts'] = '<script src="' . $data['siteRoot'] . '/frontend/header/js/showmore.js"></script>';
     $hasSort = '';
     if ($data['sort'] != 'rating') {
         $hasSort = $data['sort'] . '/';
     }
     if ($filter) {
         $hasSort = 'quest/' . $filter;
     }
     $this->load->library('pagination');
     $config['base_url'] = '/' . $city . '/' . $hasSort;
     $config['total_rows'] = $data['AllroomsCount'];
     $config['per_page'] = 12;
     $config['first_link'] = '';
     $config['last_link'] = '';
     $config['num_tag_open'] = '<li>';
     $config['num_tag_close'] = '</li>';
     $config['cur_tag_open'] = '<li class="active"><a href="#">';
     $config['cur_tag_close'] = '</a></li>';
     $this->pagination->initialize($config);
     $data['pages'] = $this->pagination->create_links();
     //$data['user_name'] = $this->model_welcome->getUserNameByEmail();
     //var_dump($data['pages']);
     $this->load->view('header', $data);
     $this->load->view('welcome_message', $data);
     $this->load->view('footer');
 }
Пример #13
0
<?php

// Если страна не определилась
$COUNTRY_DEFAULT = 'ua';
$CITY_DEFAULT = 'kharkiv';
// Детект страны и города по IP
// Docs: https://sypexgeo.net/ru/docs/
include 'inc/vendor/SxGeo.php';
$SxGeo = new SxGeo('inc/vendor/SxGeoCity.dat');
$geo = $SxGeo->getCity($_SERVER['REMOTE_ADDR']);
$country = $geo ? strtolower($geo['country']['iso']) : $COUNTRY_DEFAULT;
$city = $geo ? strtolower($geo['city']['name_en']) : $CITY_DEFAULT;
?>

<script>
  // Detect user's preferred language (from browser & OS settings)
  // More info: https://alicoding.com/detect-browser-language-preference-in-firefox-and-chrome-using-javascript/
  var langPreferred = window.navigator.languages ? window.navigator.languages[0] : null;
      langPreferred = langPreferred || window.navigator.language || window.navigator.browserLanguage || window.navigator.userLanguage;
  if (langPreferred.indexOf('-') !== -1)
      langPreferred = langPreferred.split('-')[0];

  if (langPreferred.indexOf('_') !== -1)
      langPreferred = langPreferred.split('_')[0];
  
  $('body').addClass('-langPreferred_'+langPreferred);
</script>

<?php 
/* Если вам нужно, можете сделать редирект по условию:
if ($country == 'ua') {
Пример #14
0
 public function getLocation($ip)
 {
     return $this->sxGeo->getCityFull($ip);
 }
Пример #15
0
$result = array('result' => 'fail', 'data' => array());
$result['result'] = 'ok';
if (!APISecurity::isAdmin()) {
    APIHelpers::showerror(1143, 'Access only for admin');
}
// TODO: added pagginator
$conn = APIHelpers::createConnection($config);
if (!APIHelpers::issetParam('userid')) {
    APIHelpers::showerror(1144, 'Not found parameter userid');
}
$userid = APIHelpers::getParam('userid', 0);
if (!is_numeric($userid)) {
    APIHelpers::showerror(1145, 'incorrect userid');
}
include_once dirname(__FILE__) . '/../api.lib/SxGeo.php';
$SxGeo = new SxGeo(dirname(__FILE__) . '/../api.lib/SxGeoCity.dat', SXGEO_BATCH | SXGEO_MEMORY);
$userid = intval($userid);
$query = 'SELECT id, ip, country, city, browser, date_sign_in FROM users_ips WHERE userid = ? ORDER BY id DESC LIMIT 0,25';
try {
    $stmt = $conn->prepare($query);
    $stmt->execute(array(intval($userid)));
    while ($row = $stmt->fetch()) {
        $country = $row['country'];
        $city = $row['city'];
        $id = $row['id'];
        $ip = $row['ip'];
        $browser = $row['browser'];
        if (strlen($country) == 0 && strlen($city) == 0) {
            $o = $SxGeo->get($ip);
            if ($o) {
                $country = $o['country'];
Пример #16
0
/**
 * Returns extended city info array for given IP address
 *
 * Sample array:
 * (
 *  [regid] => 9737
 *  [cc] => 185
 *  [fips] => 66
 *  [lat] => 60.076238
 *  [lon] => 30.121382
 *  [country] => RU
 *  [city] => Санкт-Петербург
 *  [region_name] => Санкт-Петербург
 *  [timezone] =>
 * )
 * @param string $ip IP address in xxx.xxx.xxx.xxx notation
 * @return array Array with city info
 */
function sx_getCityInfoExt($ip = null)
{
    global $SxCity, $sx_bulkmode, $sx_city, $sx_ip;
    if (is_null($ip)) {
        $ip = $sx_ip;
    }
    if (!$SxCity) {
        $SxCity = new SxGeo('plugins/sxgeo/data/SxGeoCity.dat');
    }
    // Режим по умолчанию, файл бд SxGeo.dat
    $sx_city['ext_info'] = $result = @$SxCity->getCityFull($ip);
    // возвращает полную информацию о городе и регионе
    if (!$sx_bulkmode) {
        unset($SxCity);
    }
    return $result;
}