<?php
//система администрирования сайта
require_once 'lib/config.php';
require_once 'HTML/QuickForm.php';
require_once 'DB.php';
require_once 'Log.php';
require_once 'lib/function.errorHandler.php';
require_once 'lib/function.escapeSimple.php';

//объявляем обработчик ошибок. ошибки пишем в файл
$conf = array('mode' => 0600, 'timeFormat' => '%X %x');
$logger = &Log::singleton('file', ERROR_LOG_FILE, '', $conf,PEAR_LOG_DEBUG);
PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, 'errorHandler');

//объявляем класс работы с БД
$db = DB::connect(DB_TYPE."://".DB_USER.":".DB_PASS."@".DB_HOST."/".DB_DB);
$db->setFetchMode(DB_FETCHMODE_ASSOC);

//вызываем статичные элементы
$query = "SELECT article_title, article_text, article_id, article_url
FROM article
WHERE article_id IN (".join(",",array_keys($article_array)).")";
$db_res_link = $db->query($query);
$articles = array();
while($row = $db_res_link->fetchRow()){
    $articles[$row['article_id']]['article_title'] = $row['article_title'];
    $articles[$row['article_id']]['article_text'] = $row['article_text'];
    $articles[$row['article_id']]['article_url'] = $row['article_url'];
}

//начинаем сессию
session_start();
$_SESSION['v25'] = true;

if (isset($_POST['what'])) {
//типа такого
if (!function_exists("str_split")) {// отсутсвует возможность выбора кол-ва символов
function str_split($s) {
    $j = 1;
    $tmp = array();
    for ($i=-1;++$i<strlen($s);){
        $tmp[] = $s{$i};
    }
    return $tmp;
}
}

    $what = $_REQUEST['what'];

    $what = substr($what, 0, 64);

    $what = str_replace('.', '/', $what);
    $what = str_replace('\\', '/', $what);

    $_REQUEST['what'] = str_replace('.', '/', $_REQUEST['what']);
    $_REQUEST['what'] = str_replace('\\', '/', $_REQUEST['what']);

    $what = preg_replace("/[^\w\x7F-\xFF\s\/]/", " ", $what);

    $what = trim($what);
    $what = ereg_replace(" +", " ", $what);

    $sort = ' ORDER BY map_val ASC, map_ks ASC';

    if (strpos($_REQUEST['what'], '/')) {//Ищется точный комплекс
    $sql = "SELECT DISTINCT(map_val), map_ks, map_street, map_name FROM city_map WHERE map_ks LIKE '".$what."%' ".$sort."; ";
    } else {

        $str = cut_str($what);

        if (empty($str[0])) {// Комплекс
        $sql = "SELECT DISTINCT(map_val), map_ks, map_street, map_name FROM city_map WHERE map_ks LIKE '".$what."/%' ".$sort."; ";
        } else {
            if (empty($str[1])) {//Только Улица
            $sql = "SELECT DISTINCT(map_val), map_ks, map_street, map_name FROM city_map WHERE map_street LIKE '%".$str[0]."%' ".$sort.";";
            } else {//Улица и дом
            $sql = "SELECT DISTINCT(map_val), map_ks, map_street, map_name FROM city_map WHERE map_street LIKE '%".$str[0].', '.$str[1]."' ".$sort."; ";
            $sql2= "SELECT DISTINCT(map_val), map_ks, map_street, map_name FROM city_map WHERE map_street LIKE '%".$str[0].', '.$str[1]." %' ".$sort."; ";
            $res = $db->query($sql2);
            while ($row = $res->fetchRow()) {
                $mi['map_val'][] = $row['map_val'];
                $mi['map_ks'][] = $row['map_ks'];
                $mi['map_street'][] = $row['map_street'];
            }
            }
        }
    }
    $res = $db->query($sql);
    while ($row = $res->fetchRow()) {
        if (!in_array($row['map_val'], $mi['map_val'])) {
            if (!empty($row['map_name'])) {
                $mi['map_val'][]= $row['map_val'];
            } else {
                $mi['map_val'][]= '';
            }
            $mi['map_ks'][] = $row['map_ks'];
            $mi['map_street'][] = $row['map_street'];
        }
    }
}

function cut_str($str) {
    $str = preg_replace("'([\r\n])[\s]+'", " ", $str);
    $arr = str_split("АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя");
    $dig = str_split("0123456789");
    //str_split php5 функция но на 4y перевести не сложно
    $news=array('','');
    for ($i=-1;++$i<strlen($str);) {
        if (in_array($str{$i}, $arr)) {
            $news[0].=$str{$i};
        } elseif (in_array($str{$i}, $dig)) {
            $news[1].=$str{$i};
        }
    }
    return $news; // new string
}
?>
