webgui/lib/WebGUI/Macro/StorageUrl.pm
2011-12-28 11:30:38 -08:00

80 lines
1.9 KiB
Perl

package WebGUI::Macro::StorageUrl; # edit this line to match your own macro name
#-------------------------------------------------------------------
# WebGUI is Copyright 2001-2012 Plain Black Corporation.
#-------------------------------------------------------------------
# Please read the legal notices (docs/legal.txt) and the license
# (docs/license.txt) that came with this distribution before using
# this software.
#-------------------------------------------------------------------
# http://www.plainblack.com info@plainblack.com
#-------------------------------------------------------------------
use strict;
=head1 NAME
Package WebGUI::Macro::StorageUrl
=head1 DESCRIPTION
This macro gets the URL to a storage location, optionally adding a filename.
=head2 process( session, storageId [, returnType, filename ] )
=over 4
=item *
A session variable
=item *
The ID to a storage location
=item *
Optional: One of the following strings:
file - Default: Get the url to the file
thumb - Get the url to the thumbnail of an image
Only works with images
=item *
Optional: A filename to get the URL for. If not supplied, will
get the first file asciibetically in the storage location.
=back
=cut
#-------------------------------------------------------------------
sub process {
my $session = shift;
my $storageId = shift;
my $wantThumbnail = ( shift eq "thumb" ) ? 1 : 0;
my $filename = shift;
my $output = "";
# Use WebGUI::Storage because we might be getting an image
my $storage = WebGUI::Storage->get( $session, $storageId );
return "" if !$storage;
if ( !$filename ) {
$filename = $storage->getFiles->[0];
}
return "" if !$filename;
if ( $wantThumbnail && $storage->isImage( $filename ) ) {
return $storage->getThumbnailUrl( $filename );
}
else {
return $storage->getUrl( $filename );
}
}
1;
#vim:ft=perl