freenetis-addresses-github/index.php @ cb39a8dc
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);
|
|||
if (!empty($district))
|
|||
{
|
|||
$where = "AND district_name LIKE '".mysql_real_escape_string($district)."'";
|
|||
}
|
|||
else
|
|||
{
|
|||
$where = "AND district_name LIKE town_name";
|
|||
}
|
|||
// 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
|
|||
country = ".mysql_real_escape_string($country)."
|
|||
$where
|
|||
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';
|
|||
$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);
|
|||
$where = "AND number LIKE '%".mysql_real_escape_string($match[0])."%'";
|
|||
$select = '*';
|
|||
}
|
|||
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)."%'";
|
|||
}
|
|||
cb39a8dc | David Raška | else
|
|
{
|
|||
$where = "$where AND district_name LIKE '".mysql_real_escape_string($town)."%'";
|
|||
}
|
|||
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
|
|||
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 = "
|
|||
e04acb03 | David Raška | SELECT DISTINCT district_name, town_name, zip_code
|
|
ec7a7d3d | david | FROM ".mysql_table."
|
|
WHERE district_name LIKE '".mysql_real_escape_string($district)."%'
|
|||
$where
|
|||
cb39a8dc | David Raška | AND district_name NOT LIKE town_name
|
|
e04acb03 | David Raška | GROUP BY district_name
|
|
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);
|