App-Chronicle

 view release on metacpan or  search on metacpan

lib/Chronicle/Plugin/Archived.pm  view on Meta::CPAN


=head1 NAME

Chronicle::Plugin::Archived - Generate dated-posts.

=head1 DESCRIPTION

This module is disabled by default, but if it is enabled your generated
blog will contain links to dated posts.

For example by default a blog entry might be generated with a URL such
as C<http://example.com/my_first_post.html>.  With this module enabled
that will change to C<http://example.com/2015/09/my_first_post.html>.

B<NOTE> If you enable or disable this plugin you will need to regenerate
your SQLite database.

See also C<Chronicle::Plugin::InPlacePosts>.

=cut

=head1 METHODS

Now follows documentation on the available methods.

=cut

package Chronicle::Plugin::Archived;

use strict;
use warnings;


our $VERSION = "5.1.7";


use Date::Format;
use Date::Parse;

=head2 on_insert

The C<on_insert> method is automatically invoked when a new blog post
must be inserted into the SQLite database, that might be because a post
is new, or because it has been updated.

The method is designed to return an updated blog-post structure,
after performing any massaging required.  If the method returns undef
then the post is not inserted.

In this method we rewrite the link of the pending post such that it
is prefixed with the year and month - turning the link into a dated
one.

=cut

sub on_insert
{
    my ( $self, %args ) = (@_);

    my $dbh    = $args{ 'dbh' };
    my $config = $args{ 'config' };
    my $data   = $args{ 'data' };

    #
    #  Convert the date of the post to a seconds past epoch.
    #
    my $date = str2time( $data->{ 'date' } );

    #
    #  Now build up a new prefix for the file
    #
    $date = time2str( "%Y/%m/", $date );

    #
    #  And prepend that to the link.
    #
    $data->{ 'link' }->path_prepend($date);

    return ($data);
}


1;


=head1 LICENSE

This module is free software; you can redistribute it and/or modify it
under the terms of either:

a) the GNU General Public License as published by the Free Software
Foundation; either version 2, or (at your option) any later version,
or

b) the Perl "Artistic License".

=cut

=head1 AUTHOR

Steve Kemp <steve@steve.org.uk>

=cut



( run in 0.900 second using v1.01-cache-2.11-cpan-39bf76dae61 )