On Mon, Mar 12, 2012 at 03:21:55PM +0100, Tomasz Chiliński wrote:
Przemku zajrzyj w lms-teryt do treści funkcji location_update i spójrz na fragment przy komentarzu # get house/flat. Następnie spróbuj dostosować tamtejsze wyrażenia regularne również do Twego wariantu zapisu. Jeśli to teraz zrobimy dobrze to przy następnych aktualizacjach LMS-a zaprocentuje to wszystkim, bo wkrótce pozwolimy na składowanie adresów klienta również w postaciach tj. własnej i zgodnej z TERYT.
Poniżej diff, dodatkowo zmieniłem szukanie miasta. Mianowicie przy większych miastach (np. Wrocław) ulice nie znajduja się przy mieście Wrocław, a przy dzielnicy (np. Wrocław-Fabryczna). Wobec czego przy aktualnym adresie w LMS-ie nic nie znajduje.
--- ./bin/lms-teryt 2012-03-12 15:26:09.000000000 +0100 +++ ./bin/lms-teryt-tvk 2012-03-13 02:15:57.000000000 +0100 @@ -622,7 +622,12 @@ printf("%s (%04d) %s: ", $row->{'name'}, $row->{'id'}, $addr) if not $quiet;
# get house/flat - if ($addr =~ /\s([0-9-]+\s*[a-z]*)$/i) { + if ($addr =~ /\s(([0-9-/]+\s*[a-z]*)\ m.\ ([0-9a-z/]+))$/i) { + $addr = substr($addr, 0, -1 * length($1)); + $house = $2; + $flat = $3; + } + elsif ($addr =~ /\s([0-9-]+\s*[a-z]*)$/i) { $addr = substr($addr, 0, -1 * length($1)); $house = $1; } @@ -649,7 +654,7 @@
# find location_street and/or location_city IDs if ($street && $city) { - $street_get->execute($street, $city); + $street_get->execute($street, "^$city.*"); if (my $srow = $street_get->fetchrow_hashref()) { $street_id = $srow->{'id'}; $city_id = $srow->{'cityid'}; @@ -688,7 +693,7 @@ my $street_get = $dbase->prepare("SELECT s.id, s.cityid FROM location_streets s JOIN location_cities c ON (s.cityid = c.id) - WHERE ".($dbtype =~ /mysql/ ? "CONCAT(COALESCE(s.name2, ''), s.name)" : "(COALESCE(s.name2, '') || s.name)")." = ? AND c.name = ? + WHERE ".($dbtype =~ /mysql/ ? "CONCAT(COALESCE(s.name2, ''), s.name)" : "(COALESCE(s.name2, '') || s.name)")." = ? AND c.name REGEXP ? ORDER BY c.cityid LIMIT 1"); my $city_get = $dbase->prepare("SELECT id FROM location_cities
PS. Jak mogę uzyskać możliwość commitowania/zgłaszania poprawek ?