diff --git a/admin/survey/classes/class.SurveyGeoIP.php b/admin/survey/classes/class.SurveyGeoIP.php
deleted file mode 100644
index 365cf78e6..000000000
--- a/admin/survey/classes/class.SurveyGeoIP.php
+++ /dev/null
@@ -1,226 +0,0 @@
- 0){
- $this->anketa = $anketa;
- }
-
- //check if we have data for countries
- $sql = sisplet_query("SELECT COUNT(*) AS cnt FROM countries_locations", 'obj');
- if($sql->cnt>0)
- $this->countryDB = true;
- }
-
-
- public function displayData(){
- global $lang;
-
- /*ini_set('display_errors', 1);
- ini_set('display_startup_errors', 1);
- error_reporting(E_ALL);*/
-
- // Zakesiramo podatke o lokacijah
- $this->calculateLocations();
- //var_dump($this->data);
-
-
- // Opozorilo o nenatancnosti
- echo '
'.$lang['srv_geoip_warning'].'
';
-
-
- echo '';
- echo '
';
-
- // Izpis tabele frekvenc
- echo '
';
-
- // Prva vrstica
- echo '';
- echo ''.$lang['srv_geoip_country'].' | ';
- echo ''.$lang['srv_geoip_city'].' | ';
- echo ''.$lang['srv_geoip_freq'].' | ';
- echo '% | ';
- echo '
';
-
- // Vrstice s podatki
- if(isset($this->data['all']))
- foreach($this->data['all'] as $country => $country_freq){
- if($country !== 'all'){
-
- // Frekvenca po drzavi
- $country_percent = ($this->data['freq'] > 0) ? round($country_freq['freq'] / $this->data['freq'], 3) * 100 : 0;
- echo '';
- echo ''.($country == '' ? ''.$lang['srv_geoip_unknown'].'' : mb_convert_encoding($country, "UTF-8", "ISO-8859-1")).' | ';
- $cities = mb_convert_encoding($this->data['all'][$country]['cities'], "UTF-8", "ISO-8859-1");
- echo ''.(isset($country_freq['showMap']) ? ' | ' : '');
- echo ''.$country_freq['freq'].' | ';
- echo ''.$country_percent.' % | ';
- echo '
';
-
- // Se frekvence po mestih
- foreach($this->data['all'][$country]['cities'] as $city => $city_data){
-
- $city_percent = ($this->data['freq'] > 0) ? round($city_data['cnt'] / $this->data['freq'], 3) * 100 : 0;
- echo '';
- echo ' | ';
- echo ''.($city == '' ? ''.$lang['srv_geoip_unknown'].'' : mb_convert_encoding($city, "UTF-8", "ISO-8859-1")).' | ';
- echo ''.$city_data['cnt'].' | ';
- echo ''.$city_percent.' % | ';
- echo '
';
- }
- }
- }
- // Zadnja vrstica
- echo '';
- echo ''.$lang['hour_total'].' | ';
- echo ' | ';
- echo ''.$this->data['freq'].' | ';
- echo '100% | ';
- echo '
';
- echo '
';
- echo '
';
-
- //google maps on right of table
- if(count($this->countriesLocationsData)>0){
- echo '
';
- if(count($this->countriesLocationsData)>1)
- $this->displayNavigationMaps();
- echo '
';
- echo '
';
-
- $cities = mb_convert_encoding($this->data['all']['all']['cities'], "UTF-8", "ISO-8859-1");
- echo '';
- }
- echo '
';
- }
-
-
- // Loop cez response in zackesiramo ip-je in lokacije
- private function calculateLocations(){
-
- $sql = sisplet_query("SELECT ip, preview, testdata, last_status, lurker
- FROM srv_user
- WHERE ank_id='".$this->anketa."' AND testdata='0' AND preview='0' AND deleted='0'");
- while($row = mysqli_fetch_array($sql)){
-
- // Ce locimo glede na status
- //$index = $row['last_status'].'_'.$row['lurker'];
- $index = 'all';
-
- // Shranimo vse podatke za ip
- $location_data = geoip_record_by_name($row['ip']);
- $this->data['ip'][$row['ip']] = $location_data;
-
- // Frekvence po drzavah
- if(isset($this->data[$index][$location_data['country_name']]['freq'])){
- $this->data[$index][$location_data['country_name']]['freq']++;
- if($location_data['country_name']!='')
- $this->countriesLocationsData[$location_data['country_name']]['cnt']++;
- }
- else{
- $this->data[$index][$location_data['country_name']]['freq'] = 1;
- //store coordinates for country
- if($this->countryDB && $location_data['country_name']!=''){
- $sqlc = sisplet_query("SELECT latitude, longitude FROM countries_locations WHERE country_code='".$location_data['country_code']."'", 'obj');
- $this->countriesLocationsData[$location_data['country_name']]['cnt'] = 1;
- $this->countriesLocationsData[$location_data['country_name']]['lat'] = $sqlc->latitude;
- $this->countriesLocationsData[$location_data['country_name']]['lng'] = $sqlc->longitude;
- }
- }
-
- // Frekvence po mestih
- if(isset($this->data[$index][$location_data['country_name']]['cities'][$location_data['city']])){
- $this->data[$index][$location_data['country_name']]['cities'][$location_data['city']]['cnt']++;
- $this->data[$index]['all']['cities'][$location_data['city']]['cnt']++;
- }
- else{
- $this->data[$index][$location_data['country_name']]['cities'][$location_data['city']]['cnt'] = 1;
- $this->data[$index]['all']['cities'][$location_data['city']]['cnt'] = 1;
- if($location_data['city'] !== ''){
- $this->data[$index][$location_data['country_name']]['cities'][$location_data['city']]['lat'] = floatval($location_data['latitude']);
- $this->data[$index][$location_data['country_name']]['cities'][$location_data['city']]['lng'] = floatval($location_data['longitude']);
- $this->data[$index]['all']['cities'][$location_data['city']]['lat'] = floatval($location_data['latitude']);
- $this->data[$index]['all']['cities'][$location_data['city']]['lng'] = floatval($location_data['longitude']);
- }
- }
- if($location_data['city'] == '' && isset($location_data['longitude']) && ($location_data['longitude'] != 0 || $location_data['longitude'] != 0)){
- if(isset($this->data[$index][$location_data['country_name']]['cities'][$location_data['city']][''.floatval($location_data['latitude']).floatval($location_data['longitude'])])){
- $this->data[$index][$location_data['country_name']]['cities'][$location_data['city']][''.floatval($location_data['latitude']).floatval($location_data['longitude'])]['cnt']++;
- $this->data[$index]['all']['cities'][$location_data['city']][''.floatval($location_data['latitude']).floatval($location_data['longitude'])]['cnt']++;
- }
- else{
- $this->data[$index][$location_data['country_name']]['cities'][$location_data['city']][''.floatval($location_data['latitude']).floatval($location_data['longitude'])]['cnt'] = 1;
- $this->data[$index][$location_data['country_name']]['cities'][$location_data['city']][''.floatval($location_data['latitude']).floatval($location_data['longitude'])]['lat'] = floatval($location_data['latitude']);
- $this->data[$index][$location_data['country_name']]['cities'][$location_data['city']][''.floatval($location_data['latitude']).floatval($location_data['longitude'])]['lng'] = floatval($location_data['longitude']);
- $this->data[$index]['all']['cities'][$location_data['city']][''.floatval($location_data['latitude']).floatval($location_data['longitude'])]['cnt'] = 1;
- $this->data[$index]['all']['cities'][$location_data['city']][''.floatval($location_data['latitude']).floatval($location_data['longitude'])]['lat'] = floatval($location_data['latitude']);
- $this->data[$index]['all']['cities'][$location_data['city']][''.floatval($location_data['latitude']).floatval($location_data['longitude'])]['lng'] = floatval($location_data['longitude']);
- }
- }
- if(isset($location_data['latitude']) && $location_data['latitude'] !== ""){
- $this->data[$index][$location_data['country_name']]['showMap']=1;
- $this->data[$index]['all']['showMap']=1;
- }
-
- // Frekvenca vseh
- if(isset($this->data['freq']))
- $this->data['freq']++;
- else
- $this->data['freq'] = 1;
- }
- }
-
- function displayNavigationMaps() {
- global $lang;
-
- $countries = mb_convert_encoding($this->countriesLocationsData, "UTF-8", "ISO-8859-1");
- $cities = mb_convert_encoding($this->data['all']['all']['cities'], "UTF-8", "ISO-8859-1");
-
- echo '';
-
- echo '
';
- echo '
';
- }
-}
\ No newline at end of file
diff --git a/admin/survey/modules/mod_geoIP/class.SurveyGeoIP.php b/admin/survey/modules/mod_geoIP/class.SurveyGeoIP.php
new file mode 100644
index 000000000..7632b7e98
--- /dev/null
+++ b/admin/survey/modules/mod_geoIP/class.SurveyGeoIP.php
@@ -0,0 +1,276 @@
+ 0){
+ $this->anketa = $anketa;
+ }
+
+ // Check if we have data for countries
+ $sql = sisplet_query("SELECT COUNT(*) AS cnt FROM countries_locations", 'obj');
+ if($sql->cnt > 0){
+ $this->countryDB = true;
+ }
+ }
+
+
+ public function displayData(){
+ global $lang;
+
+ // Zakesiramo podatke o lokacijah
+ $this->calculateLocations();
+ //var_dump($this->data);
+
+
+ // Opozorilo o nenatancnosti
+ echo ''.$lang['srv_geoip_warning'].'
';
+
+
+ echo '';
+ echo '
';
+
+ // Izpis tabele frekvenc
+ echo '
';
+
+ // Prva vrstica
+ echo '';
+ echo ''.$lang['srv_geoip_country'].' | ';
+ echo ''.$lang['srv_geoip_city'].' | ';
+ echo ''.$lang['srv_geoip_freq'].' | ';
+ echo '% | ';
+ echo '
';
+
+ // Vrstice s podatki
+ if(isset($this->data['all'])){
+
+ foreach($this->data['all'] as $country => $country_freq){
+
+ if($country !== 'all'){
+
+ // Frekvenca po drzavi
+ $country_percent = ($this->data['freq'] > 0) ? round($country_freq['freq'] / $this->data['freq'], 3) * 100 : 0;
+
+ echo '';
+ echo ''.($country == '' ? ''.$lang['srv_geoip_unknown'].'' : mb_convert_encoding($country, "UTF-8", "ISO-8859-1")).' | ';
+ $cities = mb_convert_encoding($this->data['all'][$country]['cities'], "UTF-8", "ISO-8859-1");
+ echo ''.(isset($country_freq['showMap']) ? ' | ' : '');
+ echo ''.$country_freq['freq'].' | ';
+ echo ''.$country_percent.' % | ';
+ echo '
';
+
+ // Se frekvence po mestih
+ foreach($this->data['all'][$country]['cities'] as $city => $city_data){
+
+ $city_percent = ($this->data['freq'] > 0) ? round($city_data['cnt'] / $this->data['freq'], 3) * 100 : 0;
+
+ echo '';
+ echo ' | ';
+ echo ''.($city == '' ? ''.$lang['srv_geoip_unknown'].'' : mb_convert_encoding($city, "UTF-8", "ISO-8859-1")).' | ';
+ echo ''.$city_data['cnt'].' | ';
+ echo ''.$city_percent.' % | ';
+ echo '
';
+ }
+ }
+ }
+ }
+
+ // Zadnja vrstica
+ echo '';
+ echo ''.$lang['hour_total'].' | ';
+ echo ' | ';
+ echo ''.$this->data['freq'].' | ';
+ echo '100% | ';
+ echo '
';
+ echo '
';
+
+ echo '
';
+
+ // Google maps on right of table
+ if(count($this->countriesLocationsData)>0){
+
+ echo '
';
+
+ if(count($this->countriesLocationsData) > 1)
+ $this->displayNavigationMaps();
+
+ echo '
';
+
+ echo '
';
+
+ $cities = mb_convert_encoding($this->data['all']['all']['cities'], "UTF-8", "ISO-8859-1");
+
+ echo '';
+ }
+ echo '
';
+ }
+
+
+ // Loop cez response in zackesiramo ip-je in lokacije
+ private function calculateLocations(){
+ global $site_path;
+ global $lang;
+
+ // Inicializiramo reader s knjiznico ip lokacij
+ $reader = new Reader($site_path.'admin/survey/modules/mod_geoIP/db/GeoLite2-City.mmdb');
+ //$reader = new Reader($site_path.'admin/survey/modules/mod_geoIP/db/GeoLite2-Country.mmdb');
+
+
+ $sql = sisplet_query("SELECT ip, preview, testdata, last_status, lurker
+ FROM srv_user
+ WHERE ank_id='".$this->anketa."' AND testdata='0' AND preview='0' AND deleted='0'
+ ");
+ while($row = mysqli_fetch_array($sql)){
+
+ // Ce locimo glede na status
+ //$index = $row['last_status'].'_'.$row['lurker'];
+ $index = 'all';
+
+ // Poskusimo ustvariti objekt z lokacijo za IP
+ $unknown_location = false;
+ try {
+ $location_object = $reader->city($row['ip']);
+ }
+ catch (Exception $e) {
+ //echo 'Error: ', $e->getMessage();
+ $unknown_location = true;
+ }
+
+ // Ce ni ip-ja v bazi gre za neznano lokacijo
+ if($unknown_location){
+ $location_data['country_name'] = $lang['srv_unknown'];
+ $location_data['country_code'] = '';
+ $location_data['city'] = $lang['srv_unknown'];
+ $location_data['longitude'] = '';
+ $location_data['latitude'] = '';
+ }
+ // Drugace preberemo iz knjiznice podatke o lokaciji
+ else{
+ $location_data['country_name'] = $location_object->country->name;
+ $location_data['country_code'] = $location_object->country->isoCode;
+ $location_data['city'] = $location_object->city->name;
+ $location_data['longitude'] = $location_object->location->longitude;
+ $location_data['latitude'] = $location_object->location->latitude;
+ }
+
+ // Frekvence po drzavah
+ if(isset($this->data[$index][$location_data['country_name']]['freq'])){
+
+ $this->data[$index][$location_data['country_name']]['freq']++;
+
+ if($location_data['country_name']!='')
+ $this->countriesLocationsData[$location_data['country_name']]['cnt']++;
+ }
+ else{
+ $this->data[$index][$location_data['country_name']]['freq'] = 1;
+
+ //store coordinates for country
+ if($this->countryDB && $location_data['country_name'] != '' && $location_data['country_name'] != $lang['srv_unknown']){
+
+ $sqlc = sisplet_query("SELECT latitude, longitude FROM countries_locations WHERE country_code='".$location_data['country_code']."'", 'obj');
+
+ $this->countriesLocationsData[$location_data['country_name']]['cnt'] = 1;
+ $this->countriesLocationsData[$location_data['country_name']]['lat'] = $sqlc->latitude;
+ $this->countriesLocationsData[$location_data['country_name']]['lng'] = $sqlc->longitude;
+ }
+ }
+
+ // Frekvence po mestih
+ if(isset($this->data[$index][$location_data['country_name']]['cities'][$location_data['city']])){
+ $this->data[$index][$location_data['country_name']]['cities'][$location_data['city']]['cnt']++;
+ $this->data[$index]['all']['cities'][$location_data['city']]['cnt']++;
+ }
+ else{
+ $this->data[$index][$location_data['country_name']]['cities'][$location_data['city']]['cnt'] = 1;
+ $this->data[$index]['all']['cities'][$location_data['city']]['cnt'] = 1;
+
+ if($location_data['city'] != '' && $location_data['city'] != $lang['srv_unknown']){
+ $this->data[$index][$location_data['country_name']]['cities'][$location_data['city']]['lat'] = floatval($location_data['latitude']);
+ $this->data[$index][$location_data['country_name']]['cities'][$location_data['city']]['lng'] = floatval($location_data['longitude']);
+ $this->data[$index]['all']['cities'][$location_data['city']]['lat'] = floatval($location_data['latitude']);
+ $this->data[$index]['all']['cities'][$location_data['city']]['lng'] = floatval($location_data['longitude']);
+ }
+ }
+
+ // Mesto ni znano, imamo pa koordinate
+ if($location_data['city'] == '' && isset($location_data['longitude']) && $location_data['longitude'] != '' && isset($location_data['latitude']) && $location_data['latitude'] != ''){
+
+ if(isset($this->data[$index][$location_data['country_name']]['cities'][$location_data['city']][''.floatval($location_data['latitude']).floatval($location_data['longitude'])])){
+ $this->data[$index][$location_data['country_name']]['cities'][$location_data['city']][''.floatval($location_data['latitude']).floatval($location_data['longitude'])]['cnt']++;
+ $this->data[$index]['all']['cities'][$location_data['city']][''.floatval($location_data['latitude']).floatval($location_data['longitude'])]['cnt']++;
+ }
+ else{
+ $this->data[$index][$location_data['country_name']]['cities'][$location_data['city']][''.floatval($location_data['latitude']).floatval($location_data['longitude'])]['cnt'] = 1;
+ $this->data[$index][$location_data['country_name']]['cities'][$location_data['city']][''.floatval($location_data['latitude']).floatval($location_data['longitude'])]['lat'] = floatval($location_data['latitude']);
+ $this->data[$index][$location_data['country_name']]['cities'][$location_data['city']][''.floatval($location_data['latitude']).floatval($location_data['longitude'])]['lng'] = floatval($location_data['longitude']);
+ $this->data[$index]['all']['cities'][$location_data['city']][''.floatval($location_data['latitude']).floatval($location_data['longitude'])]['cnt'] = 1;
+ $this->data[$index]['all']['cities'][$location_data['city']][''.floatval($location_data['latitude']).floatval($location_data['longitude'])]['lat'] = floatval($location_data['latitude']);
+ $this->data[$index]['all']['cities'][$location_data['city']][''.floatval($location_data['latitude']).floatval($location_data['longitude'])]['lng'] = floatval($location_data['longitude']);
+ }
+ }
+
+ if(isset($location_data['latitude']) && $location_data['latitude'] != ''){
+ $this->data[$index][$location_data['country_name']]['showMap'] = 1;
+ $this->data[$index]['all']['showMap'] = 1;
+ }
+
+ // Frekvenca vseh
+ if(isset($this->data['freq']))
+ $this->data['freq']++;
+ else
+ $this->data['freq'] = 1;
+ }
+ }
+
+ function displayNavigationMaps() {
+ global $lang;
+
+ $countries = mb_convert_encoding($this->countriesLocationsData, "UTF-8", "ISO-8859-1");
+ $cities = mb_convert_encoding($this->data['all']['all']['cities'], "UTF-8", "ISO-8859-1");
+
+ echo '';
+
+ echo '
';
+ echo '
';
+ }
+}
\ No newline at end of file
diff --git a/admin/survey/modules/mod_geoIP/db/.gitignore b/admin/survey/modules/mod_geoIP/db/.gitignore
new file mode 100644
index 000000000..c96a04f00
--- /dev/null
+++ b/admin/survey/modules/mod_geoIP/db/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
\ No newline at end of file
diff --git a/composer.json b/composer.json
index 5cb176b63..d19331c14 100644
--- a/composer.json
+++ b/composer.json
@@ -18,7 +18,8 @@
"sonata-project/google-authenticator": "^2.2",
"phpmailer/phpmailer": "~6.0",
"minishlink/web-push": "^5.2",
- "stripe/stripe-php": "^7.40"
+ "stripe/stripe-php": "^7.40",
+ "geoip2/geoip2": "~2.0"
},
"require-dev": {
"kint-php/kint": "^1.1",
diff --git a/composer.lock b/composer.lock
index c7e4d5de5..12251f820 100644
--- a/composer.lock
+++ b/composer.lock
@@ -1,11 +1,68 @@
{
"_readme": [
"This file locks the dependencies of your project to a known state",
- "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
- "content-hash": "5beee59315d18e9164ddfcc230b4550f",
+ "hash": "f48f2e76d23925213a1c248388654ed4",
+ "content-hash": "4faadcc7d5b72636e2d9ac9a18b062a2",
"packages": [
+ {
+ "name": "composer/ca-bundle",
+ "version": "1.2.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/ca-bundle.git",
+ "reference": "8a7ecad675253e4654ea05505233285377405215"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/ca-bundle/zipball/8a7ecad675253e4654ea05505233285377405215",
+ "reference": "8a7ecad675253e4654ea05505233285377405215",
+ "shasum": ""
+ },
+ "require": {
+ "ext-openssl": "*",
+ "ext-pcre": "*",
+ "php": "^5.3.2 || ^7.0 || ^8.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8",
+ "psr/log": "^1.0",
+ "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\CaBundle\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ }
+ ],
+ "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.",
+ "keywords": [
+ "cabundle",
+ "cacert",
+ "certificate",
+ "ssl",
+ "tls"
+ ],
+ "time": "2020-08-23 12:54:47"
+ },
{
"name": "fgrosse/phpasn1",
"version": "v2.1.1",
@@ -73,7 +130,60 @@
"x509",
"x690"
],
- "time": "2018-12-02T01:34:34+00:00"
+ "time": "2018-12-02 01:34:34"
+ },
+ {
+ "name": "geoip2/geoip2",
+ "version": "v2.10.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/maxmind/GeoIP2-php.git",
+ "reference": "419557cd21d9fe039721a83490701a58c8ce784a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/maxmind/GeoIP2-php/zipball/419557cd21d9fe039721a83490701a58c8ce784a",
+ "reference": "419557cd21d9fe039721a83490701a58c8ce784a",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "maxmind-db/reader": "~1.5",
+ "maxmind/web-service-common": "~0.6",
+ "php": ">=5.6"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "2.*",
+ "phpunit/phpunit": "5.*",
+ "squizlabs/php_codesniffer": "3.*"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "GeoIp2\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "authors": [
+ {
+ "name": "Gregory J. Oschwald",
+ "email": "goschwald@maxmind.com",
+ "homepage": "https://www.maxmind.com/"
+ }
+ ],
+ "description": "MaxMind GeoIP2 PHP API",
+ "homepage": "https://github.com/maxmind/GeoIP2-php",
+ "keywords": [
+ "IP",
+ "geoip",
+ "geoip2",
+ "geolocation",
+ "maxmind"
+ ],
+ "time": "2019-12-12 18:48:39"
},
{
"name": "guzzlehttp/guzzle",
@@ -140,7 +250,7 @@
"rest",
"web service"
],
- "time": "2020-06-16T21:01:06+00:00"
+ "time": "2020-06-16 21:01:06"
},
{
"name": "guzzlehttp/promises",
@@ -191,7 +301,7 @@
"keywords": [
"promise"
],
- "time": "2016-12-20T10:07:11+00:00"
+ "time": "2016-12-20 10:07:11"
},
{
"name": "guzzlehttp/psr7",
@@ -262,7 +372,113 @@
"uri",
"url"
],
- "time": "2019-07-01T23:21:34+00:00"
+ "time": "2019-07-01 23:21:34"
+ },
+ {
+ "name": "maxmind-db/reader",
+ "version": "v1.7.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/maxmind/MaxMind-DB-Reader-php.git",
+ "reference": "942553da239f12051275f9c666538b5dd09e2908"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/maxmind/MaxMind-DB-Reader-php/zipball/942553da239f12051275f9c666538b5dd09e2908",
+ "reference": "942553da239f12051275f9c666538b5dd09e2908",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2"
+ },
+ "conflict": {
+ "ext-maxminddb": "<1.7.0,>=2.0.0"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "2.*",
+ "php-coveralls/php-coveralls": "^2.1",
+ "phpunit/phpcov": ">=6.0.0",
+ "phpunit/phpunit": ">=8.0.0,<10.0.0",
+ "squizlabs/php_codesniffer": "3.*"
+ },
+ "suggest": {
+ "ext-bcmath": "bcmath or gmp is required for decoding larger integers with the pure PHP decoder",
+ "ext-gmp": "bcmath or gmp is required for decoding larger integers with the pure PHP decoder",
+ "ext-maxminddb": "A C-based database decoder that provides significantly faster lookups"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "MaxMind\\Db\\": "src/MaxMind/Db"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "authors": [
+ {
+ "name": "Gregory J. Oschwald",
+ "email": "goschwald@maxmind.com",
+ "homepage": "https://www.maxmind.com/"
+ }
+ ],
+ "description": "MaxMind DB Reader API",
+ "homepage": "https://github.com/maxmind/MaxMind-DB-Reader-php",
+ "keywords": [
+ "database",
+ "geoip",
+ "geoip2",
+ "geolocation",
+ "maxmind"
+ ],
+ "time": "2020-08-07 22:10:05"
+ },
+ {
+ "name": "maxmind/web-service-common",
+ "version": "v0.7.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/maxmind/web-service-common-php.git",
+ "reference": "74c996c218ada5c639c8c2f076756e059f5552fc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/maxmind/web-service-common-php/zipball/74c996c218ada5c639c8c2f076756e059f5552fc",
+ "reference": "74c996c218ada5c639c8c2f076756e059f5552fc",
+ "shasum": ""
+ },
+ "require": {
+ "composer/ca-bundle": "^1.0.3",
+ "ext-curl": "*",
+ "ext-json": "*",
+ "php": ">=5.6"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "2.*",
+ "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0",
+ "squizlabs/php_codesniffer": "3.*"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "MaxMind\\Exception\\": "src/Exception",
+ "MaxMind\\WebService\\": "src/WebService"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "authors": [
+ {
+ "name": "Gregory Oschwald",
+ "email": "goschwald@maxmind.com"
+ }
+ ],
+ "description": "Internal MaxMind Web Service API",
+ "homepage": "https://github.com/maxmind/web-service-common-php",
+ "time": "2020-05-06 14:07:26"
},
{
"name": "minishlink/web-push",
@@ -318,7 +534,7 @@
"push",
"web"
],
- "time": "2020-08-02T08:58:01+00:00"
+ "time": "2020-08-02 08:58:01"
},
{
"name": "paragonie/random_compat",
@@ -363,7 +579,7 @@
"pseudorandom",
"random"
],
- "time": "2018-07-02T15:55:56+00:00"
+ "time": "2018-07-02 15:55:56"
},
{
"name": "paragonie/sodium_compat",
@@ -445,7 +661,7 @@
"secret-key cryptography",
"side-channel resistant"
],
- "time": "2020-03-20T21:48:09+00:00"
+ "time": "2020-03-20 21:48:09"
},
{
"name": "phpmailer/phpmailer",
@@ -507,13 +723,7 @@
}
],
"description": "PHPMailer is a full-featured email creation and transfer class for PHP",
- "funding": [
- {
- "url": "https://github.com/synchro",
- "type": "github"
- }
- ],
- "time": "2020-07-14T18:50:27+00:00"
+ "time": "2020-07-14 18:50:27"
},
{
"name": "psr/http-message",
@@ -563,7 +773,7 @@
"request",
"response"
],
- "time": "2016-08-06T14:39:51+00:00"
+ "time": "2016-08-06 14:39:51"
},
{
"name": "ralouphie/getallheaders",
@@ -603,7 +813,7 @@
}
],
"description": "A polyfill for getallheaders.",
- "time": "2019-03-08T08:55:37+00:00"
+ "time": "2019-03-08 08:55:37"
},
{
"name": "sonata-project/google-authenticator",
@@ -660,7 +870,7 @@
"keywords": [
"google authenticator"
],
- "time": "2018-07-18T22:08:02+00:00"
+ "time": "2018-07-18 22:08:02"
},
{
"name": "spomky-labs/base64url",
@@ -712,7 +922,7 @@
"safe",
"url"
],
- "time": "2020-08-01T14:15:43+00:00"
+ "time": "2020-08-01 14:15:43"
},
{
"name": "stripe/stripe-php",
@@ -769,7 +979,7 @@
"payment processing",
"stripe"
],
- "time": "2020-08-19T22:48:20+00:00"
+ "time": "2020-08-19 22:48:20"
},
{
"name": "symfony/polyfill-intl-idn",
@@ -840,21 +1050,7 @@
"portable",
"shim"
],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2020-08-04T06:02:08+00:00"
+ "time": "2020-08-04 06:02:08"
},
{
"name": "symfony/polyfill-intl-normalizer",
@@ -921,21 +1117,7 @@
"portable",
"shim"
],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2020-07-14T12:35:20+00:00"
+ "time": "2020-07-14 12:35:20"
},
{
"name": "symfony/polyfill-php70",
@@ -998,21 +1180,7 @@
"portable",
"shim"
],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2020-07-14T12:35:20+00:00"
+ "time": "2020-07-14 12:35:20"
},
{
"name": "symfony/polyfill-php72",
@@ -1071,21 +1239,7 @@
"portable",
"shim"
],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2020-07-14T12:35:20+00:00"
+ "time": "2020-07-14 12:35:20"
},
{
"name": "web-token/jwt-core",
@@ -1160,13 +1314,7 @@
"jwt",
"symfony"
],
- "funding": [
- {
- "url": "https://www.patreon.com/FlorentMorselli",
- "type": "patreon"
- }
- ],
- "time": "2020-03-20T13:29:04+00:00"
+ "time": "2020-03-20 13:29:04"
},
{
"name": "web-token/jwt-key-mgmt",
@@ -1243,13 +1391,7 @@
"jwt",
"symfony"
],
- "funding": [
- {
- "url": "https://www.patreon.com/FlorentMorselli",
- "type": "patreon"
- }
- ],
- "time": "2020-03-20T13:29:04+00:00"
+ "time": "2020-03-20 13:29:04"
},
{
"name": "web-token/jwt-signature",
@@ -1329,13 +1471,7 @@
"jwt",
"symfony"
],
- "funding": [
- {
- "url": "https://www.patreon.com/FlorentMorselli",
- "type": "patreon"
- }
- ],
- "time": "2020-03-20T13:29:04+00:00"
+ "time": "2020-03-20 13:29:04"
},
{
"name": "web-token/jwt-signature-algorithm-ecdsa",
@@ -1402,13 +1538,7 @@
"jwt",
"symfony"
],
- "funding": [
- {
- "url": "https://www.patreon.com/FlorentMorselli",
- "type": "patreon"
- }
- ],
- "time": "2020-03-20T13:29:04+00:00"
+ "time": "2020-03-20 13:29:04"
},
{
"name": "web-token/jwt-signature-algorithm-eddsa",
@@ -1475,13 +1605,7 @@
"jwt",
"symfony"
],
- "funding": [
- {
- "url": "https://www.patreon.com/FlorentMorselli",
- "type": "patreon"
- }
- ],
- "time": "2020-03-20T13:29:04+00:00"
+ "time": "2020-03-20 13:29:04"
},
{
"name": "web-token/jwt-signature-algorithm-hmac",
@@ -1548,13 +1672,7 @@
"jwt",
"symfony"
],
- "funding": [
- {
- "url": "https://www.patreon.com/FlorentMorselli",
- "type": "patreon"
- }
- ],
- "time": "2020-03-20T13:29:04+00:00"
+ "time": "2020-03-20 13:29:04"
},
{
"name": "web-token/jwt-signature-algorithm-none",
@@ -1621,13 +1739,7 @@
"jwt",
"symfony"
],
- "funding": [
- {
- "url": "https://www.patreon.com/FlorentMorselli",
- "type": "patreon"
- }
- ],
- "time": "2020-03-20T13:29:04+00:00"
+ "time": "2020-03-20 13:29:04"
},
{
"name": "web-token/jwt-signature-algorithm-rsa",
@@ -1694,13 +1806,7 @@
"jwt",
"symfony"
],
- "funding": [
- {
- "url": "https://www.patreon.com/FlorentMorselli",
- "type": "patreon"
- }
- ],
- "time": "2020-03-20T13:29:04+00:00"
+ "time": "2020-03-20 13:29:04"
},
{
"name": "web-token/jwt-util-ecc",
@@ -1769,13 +1875,7 @@
"jwt",
"symfony"
],
- "funding": [
- {
- "url": "https://www.patreon.com/FlorentMorselli",
- "type": "patreon"
- }
- ],
- "time": "2020-03-20T13:29:04+00:00"
+ "time": "2020-03-20 13:29:04"
}
],
"packages-dev": [
@@ -1838,7 +1938,7 @@
"throwable",
"whoops"
],
- "time": "2020-06-14T09:00:00+00:00"
+ "time": "2020-06-14 09:00:00"
},
{
"name": "kint-php/kint",
@@ -1889,7 +1989,7 @@
"kint",
"php"
],
- "time": "2017-01-15T14:23:43+00:00"
+ "time": "2017-01-15 14:23:43"
},
{
"name": "maximebf/debugbar",
@@ -1950,7 +2050,7 @@
"debug",
"debugbar"
],
- "time": "2020-05-06T07:06:27+00:00"
+ "time": "2020-05-06 07:06:27"
},
{
"name": "psr/log",
@@ -1997,7 +2097,7 @@
"psr",
"psr-3"
],
- "time": "2020-03-23T09:12:05+00:00"
+ "time": "2020-03-23 09:12:05"
},
{
"name": "symfony/polyfill-mbstring",
@@ -2060,21 +2160,7 @@
"portable",
"shim"
],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2020-07-14T12:35:20+00:00"
+ "time": "2020-07-14 12:35:20"
},
{
"name": "symfony/polyfill-php80",
@@ -2140,21 +2226,7 @@
"portable",
"shim"
],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2020-07-14T12:35:20+00:00"
+ "time": "2020-07-14 12:35:20"
},
{
"name": "symfony/var-dumper",
@@ -2231,21 +2303,7 @@
"debug",
"dump"
],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2020-06-24T13:34:53+00:00"
+ "time": "2020-06-24 13:34:53"
}
],
"aliases": [],
@@ -2256,6 +2314,5 @@
"platform": {
"php": "^5.5|^7.0"
},
- "platform-dev": [],
- "plugin-api-version": "1.1.0"
+ "platform-dev": []
}
diff --git a/lang/1.php b/lang/1.php
index a9d764b08..d84cd9eda 100644
--- a/lang/1.php
+++ b/lang/1.php
@@ -6318,7 +6318,7 @@ $lang = array (
'srv_geoip_unknown' => 'Neznano',
'srv_geoip_map_cities' => 'Vsa mesta',
'srv_geoip_map_countries' => 'Vse države',
- 'srv_geoip_warning' => 'Prosimo, upoštevajte, da so navedene IP lokacije lahko v določenih primerih nenatančne in zgolj ocene. Ocenjene so na podlagi knjižnice IP lokacij (verzija 2019), zato lahko pride do odstopanj od realnih podatkov.',
+ 'srv_geoip_warning' => 'Prosimo, upoštevajte, da so navedene IP lokacije lahko v določenih primerih nenatančne in zgolj ocene. Ocenjene so na podlagi knjižnice IP lokacij, zato lahko pride do odstopanj od realnih podatkov.',
'srv_edits_analysis' => 'Analize urejanja',
'srv_edits_analysis_seansa' => 'Kriterij seanse: ',
'srv_edits_analysis_seansa_1h' => '1 ura',
diff --git a/lang/2.php b/lang/2.php
index 167e71c4a..2b46e0c82 100644
--- a/lang/2.php
+++ b/lang/2.php
@@ -6201,7 +6201,7 @@ $lang = array (
'srv_geoip_unknown' => 'Unknown',
'srv_geoip_map_cities' => 'All cities',
'srv_geoip_map_countries' => 'All countries',
- 'srv_geoip_warning' => 'Please note that the listed IP locations may in certain cases be inaccurate and are only estimates. They are estimated based on the library of IP locations (version 2019), so there may be deviations from the real data.',
+ 'srv_geoip_warning' => 'Please note that the listed IP locations may in certain cases be inaccurate and are only estimates. They are estimated based on the library of IP locations, so there may be deviations from the real data.',
'srv_edits_analysis' => 'Edits analysis',
'srv_edits_analysis_seansa' => 'Session criteria: ',
'srv_edits_analysis_seansa_1h' => '1 hour',