NAME¶
OpenGuides::Utils - General utility methods for OpenGuides scripts.
DESCRIPTION¶
Provides general utility methods for OpenGuides scripts. Distributed and
installed as part of the OpenGuides project, not intended for independent
installation. This documentation is probably only useful to OpenGuides
developers.
SYNOPSIS¶
use OpenGuide::Config;
use OpenGuides::Utils;
my $config = OpenGuides::Config->new( file => "wiki.conf" );
my $wiki = OpenGuides::Utils->make_wiki_object( config => $config );
METHODS¶
- make_wiki_object
-
my $config = OpenGuides::Config->new( file => "wiki.conf" );
my $wiki = OpenGuides::Utils->make_wiki_object( config => $config );
Croaks unless an "OpenGuides::Config" object is supplied. Returns
a "Wiki::Toolkit" object made from the given config file on
success, croaks if any other error occurs.
The config file needs to define at least the following variables:
- •
- dbtype - one of "postgres", "mysql" and
"sqlite"
- •
- dbname
- •
- indexing_directory - for the Search::InvertedIndex, Plucene, or
"Lucy" files to go in
- get_wgs84_coords
- Returns coordinate data suitable for use with Google Maps (and other GIS
systems that assume WGS-84 data).
my ($wgs84_long, $wgs84_lat) = OpenGuides::Utils->get_wgs84_coords(
longitude => $longitude,
latitude => $latitude,
config => $config
);
- get_wgs84_min_max
- Given a set of WGS84 coordinate data, returns the minimum, maximum, and
centre latitude and longitude.
%data = OpenGuides::Utils->get_wgs84_min_max(
nodes => [
{ wgs84_lat => 51.1, wgs84_long => 1.1 },
{ wgs84_lat => 51.2, wgs84_long => 1.2 },
]
);
print "Top right-hand corner is $data{max_lat}, $data{max_long}";
print "Centre point is $data{centre_lat}, $data{centre_long}";
The hashes in the "nodes" argument can include other key/value
pairs; these will just be ignored.
Returns false if it can't find any valid geodata in the nodes.
- get_index_page_description
-
$tt_vars{page_description} =
OpenGuides::Utils->get_index_page_description(
format => "map",
criteria => [ type => "locale", value => "croydon" ],
);
Returns a sentence that can be used as a summary of what's shown on an index
page.
- detect_redirect
-
$redir = OpenGuides::Utils->detect_redirect( content => "foo" );
Checks the content of a node to see if the node is a redirect to another
node. If so, returns the name of the node that this one redirects to. If
not, returns false.
(Also returns false if no content is provided.)
- validate_edit
-
my $fails = OpenGuides::Utils->validate_edit(
id => $node,
cgi_obj => $q
);
Checks supplied content for general validity. If anything is invalid,
returns an array ref of errors to report to the user.
- parse_change_comment
-
my $change_comment = parse_change_comment($string, $base_url);
Given a base URL (for example, "http://example.com/wiki.cgi?"),
takes a string, replaces "[[page]]" and "[[page|titled
link]]" with
<a href="http://example.com/wiki.cgi?page">page</a>
and
<a href="http://example.com/wiki.cgi?page">titled link</a>
respectively, and returns it. This is a limited subset of wiki markup
suitable for use in page change comments.
- send_email
-
eval { OpenGuides::Utils->send_email(
config => $config,
subject => "Subject",
body => "Test body",
admin => 1,
nobcc => 1,
return_output => 1
) };
if ($@) {
print "Error mailing admin: $@\n";
} else {
print "Mailed admin\n";
}
Send out email. If "admin" is true, the email will be sent to the
site admin. If "to" is defined, email will be sent to addresses
in that arrayref. If "nobcc" is true, there will be no Bcc to
the admin.
"subject" and "body" are mandatory arguments.
Debugging: if "return_output" is true, the message will be
returned as a string instead of being sent by email.
- in_moderate_whitelist
-
if (OpenGuides::Utils->in_moderate_whitelist( '127.0.0.1' )) {
# skip moderation and apply new verson to published site
}
Admins can supply a comma separated list of IP addresses or CIDR-notation
subnets indicating the hosts which can bypass enforced moderation. Any
values which cannot be parsed by "NetAddr::IP" will be
ignored.
AUTHOR¶
The OpenGuides Project (openguides-dev@lists.openguides.org)
COPYRIGHT¶
Copyright (C) 2003-2013 The OpenGuides Project. All Rights Reserved.
This module is free software; you can redistribute it and/or modify it under the
same terms as Perl itself.