tagging: Make sure the related stories output is properly HTML escaped.
[matthijs/upstream/blosxom-plugins.git] / gavinc / geo
1 # Blosxom Plugin: geo
2 # Author(s): Gavin Carr <gavin@openfusion.com.au>
3 # Version: 0.001000
4 # Documentation: 'perldoc geo'
5
6 package geo;
7
8 use strict;
9 use vars qw($latitude $longitude);
10
11 sub start { 1 }
12
13 # Return the first existing metadata item key and value given a list of keys
14 sub _get_meta {
15     for my $attr ( @_ ) {
16         my $meta_attr = $attr;
17         $meta_attr =~ s/-/_/g;
18         my $value = $blosxom::meta{$meta_attr};
19         $value = eval "\$meta::$attr" unless defined $value;
20         return wantarray ? ( $attr, $value ) : $value if defined $value;
21     }
22     return wantarray ? () : undef;
23 }
24
25 sub story {
26     $latitude = _get_meta('geolatitude', 'latitude');
27     $longitude = _get_meta('geolongitude', 'longitude');
28
29     return 1;
30 }
31
32 1;
33
34 __END__
35
36 =head1 NAME
37
38 geo - blosxom plugin to set $geo::latitude and $geo::longitude 
39 story variables from metadata items
40
41 =head1 DESCRIPTION
42
43 geo - blosxom plugin to set story $geo::latitude and $geo::longitude 
44 story variables from metadata items. 
45
46 =head2 REQUIRED METADATA ITEMS
47
48 =over 4
49
50 =item Latitude (or GeoLatitude)
51
52 A decimal between -90.0 (South Pole) and +90.0 (North Pole), indicating 
53 degrees of latitude.
54
55 =item Longitude (or GeoLongitude)
56
57 A decimal between -180.0 (western hemisphere) and +180.0 (eastern hemisphere), 
58 indicating degrees of longitude.
59
60 =back
61
62 If any required metadata is missing the plugin just skips the story.
63
64 =back
65
66 =head1 EXAMPLE
67
68 If using the L<metamail> plugin:
69
70   Testing geo
71   Latitude: -33.717770
72   Longitude: 151.115886
73
74 If using the L<meta> plugin:
75
76   Random blog post
77   meta-latitude: -33.717770
78   meta-longitude: 151.115886
79
80 =head1 USAGE
81
82 geo should be loaded after your meta plugins (typically either 
83 L<metamail> or L<meta>).
84
85 =head1 SEE ALSO
86
87 Blosxom: http://blosxom.sourceforge.net/
88
89 =head1 AUTHOR
90
91 Gavin Carr <gavin@openfusion.com.au>, http://www.openfusion.net/
92
93 =head1 LICENSE
94
95 Copyright 2007, Gavin Carr.
96
97 This plugin is licensed under the same terms as blosxom itself i.e.
98
99 Permission is hereby granted, free of charge, to any person obtaining a
100 copy of this software and associated documentation files (the "Software"),
101 to deal in the Software without restriction, including without limitation
102 the rights to use, copy, modify, merge, publish, distribute, sublicense,
103 and/or sell copies of the Software, and to permit persons to whom the
104 Software is furnished to do so, subject to the following conditions:
105
106 The above copyright notice and this permission notice shall be included
107 in all copies or substantial portions of the Software.
108
109 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
110 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
111 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
112 THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
113 OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
114 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
115 OTHER DEALINGS IN THE SOFTWARE.
116
117 =cut
118
119 # vim:ft=perl