App::ZofCMS::Plugin::GooglePageRank - Plugin to show Google Page Ranks


App-ZofCMS-Plugin-GooglePageRank documentation Contained in the App-ZofCMS-Plugin-GooglePageRank distribution.

Index


Code Index:

NAME

Top

App::ZofCMS::Plugin::GooglePageRank - Plugin to show Google Page Ranks

SYNOPSIS

Top

    plugins => [
        { GooglePageRank => 200 },
    ],

    # all defaults and URI is set to the current page
    plug_google_page_rank => {},

    # all options set
    plug_google_page_rank => {
        uri => 'zoffix.com',
        timeout => 20,
        agent   => 'Opera 9.6',
        host    => 'suggestqueries.google.com',
        cell    => 't',
        key     => 'plug_google_page_rank',
    },

DESCRIPTION

Top

The module is a plugin for App::ZofCMS that provides means to obtain Google Page Rank. This documentation assumes you've read App::ZofCMS, App::ZofCMS::Config and App::ZofCMS::Template

FIRST-LEVEL ZofCMS TEMPLATE AND MAIN CONFIG FILE KEYS

Top

plugins

    plugins => [
        qw/GooglePageRank/
    ],

Mangatory. You need to add the plugin to list of plugins to execute.

plug_google_page_rank

    plug_google_page_rank => {
        uri     => 'zoffix.com',
        timeout => 20,
        agent   => 'Opera 9.6',
        host    => 'suggestqueries.google.com',
        cell    => 't',
        key     => 'plug_google_page_rank',
    },

    plug_google_page_rank => {
        my ( $t, $q, $config ) = @_;
        return {
            uri     => 'zoffix.com',
            timeout => 20,
            agent   => 'Opera 9.6',
            host    => 'suggestqueries.google.com',
            cell    => 't',
            key     => 'plug_google_page_rank',
        };
    },

Mandatory. Takes a hashref or a subref as a value. If subref is specified, its return value will be assigned to plug_google_page_rank as if it was already there. If sub returns an undef, then plugin will stop further processing. The @_ of the subref will contain (in that order): ZofCMS Tempalate hashref, query parameters hashref and App::ZofCMS::Config object. The plug_google_page_rank first-level key can be set in either (or both) ZofCMS Template and Main Config File files. If set in both, the values of keys that are set in ZofCMS Template take precedence. Possible keys/values are as follows:

uri

    uri => 'zoffix.com',

    uri => [
        'zoffix.com',
        'haslayout.net',
        'http://zofdesign.com',
    ],

    uri => sub {
        my ( $t, $q, $config ) = @_;
    },

Optional. Takes a string, a coderef or an arrayref of strings each of which would specify the page(s) for which to obtain Google Page Rank. If the value is a coderef, then it will be exectued and its value will be assigned to uri. The @_ will contain (in that order): ZofCMS Template hashref, query parameters hashref, App::ZofCMS::Config object. Defaults to: if not specified, then the URI of the current page will be calculated. Note that this may depend on the server and is made up as: 'http://' . $ENV{HTTP_HOST} . $ENV{REQUEST_URI}

timeout

    timeout => 20,

Optional. Takes a positive integer as a value. Specifies a Page Rank request timeout in seconds. Defaults to: 20

agent

    agent => 'Opera 9.6',

Optional. Takes a string as a value that specifies the User-Agent string to use when making the requests. Defaults to: 'Opera 9.6'

host

    host => 'suggestqueries.google.com',

Optional. Specifies which google host to use for making requests. Defaults to: suggestqueries.google.com (Note: if all your queries failing try to set this on to toolbarqueries.google.com)

cell

    cell => 't',

Optional. Specifies the first-level key in ZofCMS Template hashref into which to store the result. Must point to an undef or a hashref. Defaults to: t

key

    key => 'plug_google_page_rank',

Optional. Specifies the second-level key inside cell first-level key into which to put the results. Defaults to: plug_google_page_rank

OUTPUT

Top

Depending on whether the uri argument was set to a string (or not set at all) or an arrayref the output will be either a string indicating page's rank or an arrayref of hashrefs - enabling you to use a simple <tmpl_loop>, each of the hashrefs will contain two keys: rank and uri - the rank of the page referenced by that URI.

If there was an error while obtaining the rank (i.e. request timeout) the rank will be shown as string 'N/A'.

EXAMPLE DUMP 1

    plug_google_page_rank => {
        uri => [
            'zoffix.com',
            'haslayout.net',
            'http://zofdesign.com',
            'yahoo.com',
        ],
    },

    't' => {
        'plug_google_page_rank' => [
            {
                'rank' => '3',
                'uri' => 'http://zoffix.com'
            },
            {
                'rank' => '3',
                'uri' => 'http://haslayout.net'
            },
            {
                'rank' => '3',
                'uri' => 'http://zofdesign.com'
            },
            {
                'rank' => '9',
                'uri' => 'http://yahoo.com'
            }
        ]

EXAMPLE DUMP 2

    plug_google_page_rank => {
        uri => 'zoffix.com',
    },




    't' => {
        'plug_google_page_rank' => '3'
    }

EXAMPLE DUMP 3

    # URI became http://zcms/ which is a local address and not pageranked
    plug_google_page_rank => {},




    't' => {
        'plug_google_page_rank' => 'N/A'
    }

AUTHOR

Top

'Zoffix, <'zoffix at cpan.org'> (http://haslayout.net/, http://zoffix.com/, http://zofdesign.com/)

BUGS

Top

Please report any bugs or feature requests to bug-app-zofcms-plugin-googlepagerank at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=App-ZofCMS-Plugin-GooglePageRank. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

SUPPORT

Top

You can find documentation for this module with the perldoc command.

    perldoc App::ZofCMS::Plugin::GooglePageRank

You can also look for information at:

* RT: CPAN's request tracker

http://rt.cpan.org/NoAuth/Bugs.html?Dist=App-ZofCMS-Plugin-GooglePageRank

* AnnoCPAN: Annotated CPAN documentation

http://annocpan.org/dist/App-ZofCMS-Plugin-GooglePageRank

* CPAN Ratings

http://cpanratings.perl.org/d/App-ZofCMS-Plugin-GooglePageRank

* Search CPAN

http://search.cpan.org/dist/App-ZofCMS-Plugin-GooglePageRank/

COPYRIGHT & LICENSE

Top


App-ZofCMS-Plugin-GooglePageRank documentation Contained in the App-ZofCMS-Plugin-GooglePageRank distribution.

package App::ZofCMS::Plugin::GooglePageRank;

use warnings;
use strict;

use WWW::Google::PageRank;
use base 'App::ZofCMS::Plugin::Base';

our $VERSION = '0.0103';

sub _key { 'plug_google_page_rank' }
sub _defaults {
    return (
        timeout => 20,
        agent   => 'Opera 9.6',
        host    => 'suggestqueries.google.com',
        cell    => 't',
        key     => 'plug_google_page_rank',
        # uri   => 'obtain from query',
    );
}
sub _do {
    my ( $self, $conf, $t, $q, $config ) = @_;

    if ( ref $conf->{uri} eq 'CODE' ) {
        $conf->{uri} = $conf->{uri}->( $t, $q, $config );
    }

    $conf->{uri} = 'http://' . $ENV{HTTP_HOST} . $ENV{REQUEST_URI}
        unless defined $conf->{uri}
            and length $conf->{uri};

    my $pr = WWW::Google::PageRank->new(
        timeout => $conf->{timeout},
        agent   => $conf->{agent},
        host    => $conf->{host},
    );

    if ( ref $conf->{uri} eq 'ARRAY' ) {
        for ( @{ $conf->{uri} } ) {
            unless ( m|https?://| ) {
                $_ = "http://$_";
            }
        
            my $rank = $pr->get($_);
            push @{ $t->{ $conf->{cell} }{ $conf->{key} } }, +{
                rank    => defined $rank ? $rank : 'N/A',
                uri     => $_,
            };
        }
    }
    else {
        unless ( $conf->{uri} =~ m|https?://| ) {
            $conf->{uri} = "http://$conf->{uri}";
        }
        my $rank = $pr->get( $conf->{uri} );
        $t->{ $conf->{cell} }{ $conf->{key} } = defined $rank ? $rank : 'N/A';
    }
}

1;
__END__