-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathutils.php
More file actions
103 lines (92 loc) · 3.21 KB
/
utils.php
File metadata and controls
103 lines (92 loc) · 3.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
<?php
/*****************************************************************************
* Buzzserver enables online buzzing between buzzwords clients.
* Copyright (C) 2011 Siramix Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
****************************************************************************/
/**
* Generate an alpha-numeric string of specified length.
*/
function generateRandomString($length)
{
$characters = '0123456789abcdefghijklmnopqrstuvwxyz';
$string = '';
for ($p = 0; $p < $length; $p++)
{
$string .= $characters[mt_rand(0, strlen($characters)-1)];
}
return $string;
}
/**
* hacked out by ben brown <ben@xoxco.com>
* http://xoxco.com/clickable/php-getboundingbox
*
* Given a latitude and longitude in degrees (40.123123,-72.234234) and a
* distance in miles this function calculates a bounding box with corners
* $distance_in_miles away from the point specified.
*
* returns $min_lat,$max_lat,$min_lon,$max_lon
*/
function getBoundingBox( $lat_degrees, $lon_degrees, $distance_in_miles )
{
$radius = 3963.1; // of earth in miles
// bearings
$due_north = 0;
$due_south = 180;
$due_east = 90;
$due_west = 270;
// convert latitude and longitude into radians
$lat_r = deg2rad($lat_degrees);
$lon_r = deg2rad($lon_degrees);
// find the northmost, southmost, eastmost and westmost corners
// $distance_in_miles away. Original formula from
// http://www.movable-type.co.uk/scripts/latlong.html
$dist_over_rad = $distance_in_miles/$radius;
$northmost = asin(sin($lat_r) * cos($dist_over_rad) +
cos($lat_r) * sin ($dist_over_rad) * cos($due_north));
$southmost = asin(sin($lat_r) * cos($dist_over_rad) +
cos($lat_r) * sin ($dist_over_rad) * cos($due_south));
$eastmost = $lon_r + atan2(sin($due_east)*sin($dist_over_rad)*cos($lat_r),
cos($dist_over_rad)-sin($lat_r)*sin($lat_r));
$westmost = $lon_r + atan2(sin($due_west)*sin($dist_over_rad)*cos($lat_r),
cos($dist_over_rad)-sin($lat_r)*sin($lat_r));
$northmost = rad2deg($northmost);
$southmost = rad2deg($southmost);
$eastmost = rad2deg($eastmost);
$westmost = rad2deg($westmost);
// sort the lat and long so that we can use them for a between query
if ($northmost > $southmost)
{
$lat1 = $southmost;
$lat2 = $northmost;
}
else
{
$lat1 = $northmost;
$lat2 = $southmost;
}
if ($eastmost > $westmost)
{
$lon1 = $westmost;
$lon2 = $eastmost;
}
else
{
$lon1 = $eastmost;
$lon2 = $westmost;
}
return array( $lat1, $lat2, $lon1, $lon2 );
}
?>