X-Git-Url: http://git.rot13.org/?p=google-map-tiles.git;a=blobdiff_plain;f=koha.pl;h=7e3482190fde7072e000129d402cd69221483580;hp=831032945dfefb9eb9ed96cb14bb91960b5b2e3b;hb=HEAD;hpb=dbe5a4dd987687fc251cef4975098463bb35932c diff --git a/koha.pl b/koha.pl index 8310329..7e34821 100755 --- a/koha.pl +++ b/koha.pl @@ -12,22 +12,9 @@ my $dbh = DBI->connect ( "dbi:Pg:dbname=koha" , "dpavlin" , "" , { AutoCommit = my $point = param('POINT') ; my $zoom = param('ZOOM') ; -my $lat = 0 ; -my $lng = 0 ; -my $latpix = 0 ; -my $lngpix = 0 ; - -my $volpnt = '' ; -my $vlat = 0 ; -my $vlng = 0 ; -my $vlatpix = 0 ; -my $vlngpix = 0 ; - -my $value = '' ; my $maxpix = 15 ; # Maximum pixels between click and point -my $descript = '' ; -my $x = '' ; -my $i = 0 ; + +my $limit_books = 100; # max. for one click print qq{Content-type: text/xml\r\n\r\n}; print qq{\n} ; @@ -43,22 +30,32 @@ if ( !$point ) if ( $point =~ /(.*),(.*)/ ) { - $lat = $1 ; - $lng = $2 ; + my $lat = $1 ; + my $lng = $2 ; - $value = &Google_Tile_Factors($zoom) ; # Calculate Tile Factors + my $value = &Google_Tile_Factors($zoom) ; # Calculate Tile Factors - ($latpix,$lngpix) = &Google_Coord_to_Pix( $value, $lat, $lng ) ; # Convert coordinate to pixel location + my ($latpix,$lngpix) = &Google_Coord_to_Pix( $value, $lat, $lng ) ; # Convert coordinate to pixel location - $x = "select city,country,count,point,point'($lat,$lng)' <-> point as distance from geo_count order by distance limit 1" ; - - if ( my ($city,$country,$count,$volpnt,$i) = $dbh->selectrow_array($x) ) # Got one + my $sql = qq{ +select + city_koha + ,country + ,count + ,point + ,point'($lat,$lng)' <-> point as distance +from geo_count +order by distance +limit 1 + }; + + if ( my ($city,$country,$count,$volpnt,$i) = $dbh->selectrow_array($sql) ) # Got one { $volpnt =~ /\((.*),(.*)\)/ ; - $vlat = $1 ; - $vlng = $2 ; + my $vlat = $1 ; + my $vlng = $2 ; - ($vlatpix,$vlngpix) = &Google_Coord_to_Pix( $value, $vlat, $vlng ) ; # Convert coordinate to pixel location + my ($vlatpix,$vlngpix) = &Google_Coord_to_Pix( $value, $vlat, $vlng ) ; # Convert coordinate to pixel location if ( sqrt(($vlatpix - $latpix)**2 + ($vlngpix - $lngpix)**2) > $maxpix ) { @@ -69,17 +66,26 @@ if ( $point =~ /(.*),(.*)/ ) my $sth = $dbh->prepare(qq{ select - author, title, bi.biblionumber + author, title, max(bi.biblionumber) as biblionumber, count(title) from geo_city c join geo_biblioitems bi on bi.city = c.city_koha join biblio b on b.biblionumber = bi.biblionumber -where c.city = ? and country = ? -order by timestamp -limit 100 +where c.city_koha = ? and country = ? +group by author, title +order by min(timestamp) +limit $limit_books }); $sth->execute( $city, $country ); - my $descript = "$city $country $count items\n
    "; + my $rows = $sth->rows; + if ( $rows == $limit_books ) { + $rows = "more than $rows"; + $rows = $count if $count > $rows; + }; + my $books = 'books'; + $books = 'book' if $rows == 1; + + my $descript = "$city $country $rows $books\n
      "; while ( my $row = $sth->fetchrow_hashref ) { $descript .= sprintf qq|
    1. %s %s\n|,