Projekt

Obecné

Profil

Stáhnout (5.29 KB) Statistiky
| Větev: | Revize:
ec7a7d3d david
<?php
8aa82b90 david
/*
* This file is part of open source system FreenetIS
* and it is released under GPLv3 licence.
*
* More info about licence can be found:
* http://www.gnu.org/licenses/gpl-3.0.html
*
* More info about project can be found:
* http://www.freenetis.org/
*
*/

$config = parse_ini_file('/etc/freenetis-addresses.ini') or die();

define("mysql_user", $config['mysql_user']);
define("mysql_password", $config['mysql_pass']);
define("mysql_server", $config['mysql_server']);
define("mysql_port", $config['mysql_port']);
define("mysql_db", $config['mysql_db']);
ec7a7d3d david
// do not modify
8aa82b90 david
define("mysql_table", 'addresses');
ec7a7d3d david
set_time_limit(1);

// get searched address
8aa82b90 david
$country = @$_GET['country'];
$town = @$_GET['town'];
$district = @$_GET['district'];
$street = @$_GET['street'];
$zip = @$_GET['zip'];

$mode = @$_GET['mode'];
ec7a7d3d david
// connect do database
8aa82b90 david
$db = mysql_connect(mysql_server.":".mysql_port, mysql_user, mysql_password) or die();
mysql_query("SET CHARACTER SET utf8", $db) or die();
mysql_query("SET NAMES utf8", $db) or die();
mysql_select_db(mysql_db, $db) or die();
ec7a7d3d david
8aa82b90 david
$result = array();
ec7a7d3d david
if ($mode == 'test')
{
8aa82b90 david
$result = array(
ec7a7d3d david
'state' => TRUE,
'message' => 'Server is running'
);
}
8aa82b90 david
else if ($mode == 'validate')
{
if (!empty($country) && !empty($town) && !empty($zip) && !empty($street))
{
// find number
$where = '';

$match = array();
if (preg_match('((ev\.č\.)?[0-9][0-9]*(/[0-9][0-9]*[a-zA-Z]*)*)', $street, $match))
{
$street = preg_replace(' ((ev\.č\.)?[0-9][0-9]*(/[0-9][0-9]*[a-zA-Z]*)*)', '', $street);
// prepare query
$query = "
SELECT DISTINCT *
FROM ".mysql_table."
WHERE
town_name LIKE '".mysql_real_escape_string($town)."' AND
zip_code LIKE '".mysql_real_escape_string($zip)."' AND
street LIKE '".mysql_real_escape_string(trim($street))."' AND
number LIKE '".mysql_real_escape_string($match[0])."' AND
37cf6c92 David Raška
country = ".mysql_real_escape_string($country)." AND
district_name LIKE '".mysql_real_escape_string($district)."'
8aa82b90 david
LIMIT 0,15";
$mysql_result = mysql_query($query) or die(json_encode(array(mysql_error())));
if (mysql_num_rows($mysql_result))
{
$result = array(
'state' => TRUE,
'message' => 'Address is valid'
);
}
else
{
$result = array(
'state' => FALSE,
'message' => 'Address is not valid'
);
}
}
else
{
$result = array(
'state' => FALSE,
'message' => 'Address is not valid'
);
}
}
else
{
$result = array(
'state' => FALSE,
'message' => 'Address is not valid'
);
}
}
ec7a7d3d david
else
{
8aa82b90 david
$where = '';
cb39a8dc David Raška
if ($street !== NULL)
ec7a7d3d david
{
// find number
$select = 'town_name, street, district_name';
37cf6c92 David Raška
$orderby = '';
ec7a7d3d david
$match = array();
if (preg_match('((ev\.č\.)?[0-9][0-9]*(/[0-9][0-9]*[a-zA-Z]*)*)', $street, $match))
{
$street = preg_replace(' ((ev\.č\.)?[0-9][0-9]*(/[0-9][0-9]*[a-zA-Z]*)*)', '', $street);
37cf6c92 David Raška
$where = "AND number LIKE '".mysql_real_escape_string($match[0])."%'";
ec7a7d3d david
$select = '*';
37cf6c92 David Raška
$orderby = "ORDER BY IF (number LIKE '".mysql_real_escape_string($match[0])."', 0, 1)";
ec7a7d3d david
}
else if (strrpos($street, ' ') !== FALSE &&
strrpos($street, ' ') + 1 == strlen($street))
{
$select = '*';
}

if (!empty($town))
{
$where = "$where AND town_name LIKE '".mysql_real_escape_string($town)."%'";
}

if (!empty($zip))
{
$where = "$where AND zip_code LIKE '".mysql_real_escape_string($zip)."%'";
}

if (!empty($district))
{
$where = "$where AND district_name LIKE '".mysql_real_escape_string($district)."%'";
}
8aa82b90 david
if (!empty($country))
{
$where = "$where AND country = '".mysql_real_escape_string($country)."'";
}
ec7a7d3d david
// prepare query
$query = "
SELECT DISTINCT $select
FROM ".mysql_table."
WHERE street LIKE '".mysql_real_escape_string(trim($street))."%'
$where
37cf6c92 David Raška
$orderby
ec7a7d3d david
LIMIT 0,15";
}
cb39a8dc David Raška
else if ($district !== NULL)
ec7a7d3d david
{
if (!empty($town))
{
cb39a8dc David Raška
$where = "$where AND town_name LIKE '".mysql_real_escape_string($town)."'";
ec7a7d3d david
}
8aa82b90 david
if (!empty($country))
{
$where = "$where AND country = '".mysql_real_escape_string($country)."'";
}
ec7a7d3d david
$query = "
37cf6c92 David Raška
SELECT DISTINCT district_name, town_name, IF (district_name = town_name, 1 , 0) AS same
ec7a7d3d david
FROM ".mysql_table."
WHERE district_name LIKE '".mysql_real_escape_string($district)."%'
$where
e04acb03 David Raška
GROUP BY district_name
37cf6c92 David Raška
ORDER BY same DESC, district_name ASC
ec7a7d3d david
LIMIT 0,15";
}
cb39a8dc David Raška
else if ($town !== NULL)
ec7a7d3d david
{
8aa82b90 david
if (!empty($country))
{
$where = "AND country = '".mysql_real_escape_string($country)."'";
}
ec7a7d3d david
$query = "
cb39a8dc David Raška
SELECT town_name, COUNT(district_name) as district_count
FROM
(
SELECT town_name, district_name
FROM ".mysql_table."
WHERE town_name LIKE '".mysql_real_escape_string($town)."%'
AND zip_code NOT LIKE ''
$where
GROUP BY town_name, district_name
ORDER BY town_name ASC
) q
GROUP BY town_name
ec7a7d3d david
LIMIT 0,15";
}

// quit if no query
if (!$query)
{
die(json_encode(array()));
}
// execute query
8aa82b90 david
$mysql_result = mysql_query($query) or die(json_encode(array(mysql_error())));
ec7a7d3d david
// get results
8aa82b90 david
while ($row = mysql_fetch_assoc($mysql_result))
ec7a7d3d david
{
8aa82b90 david
$result[] = $row;
ec7a7d3d david
}
}

// send headers
@header('Cache-Control: no-cache, must-revalidate');
@header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
@header('Content-type: application/json; charset=utf-8');

// send results
8aa82b90 david
echo json_encode($result);