the evidence of the problem doesn't show up until the next hit. Even more fun, the error message gets lower-case-ified as part of conicialization so if you ack for it without -i, you won't even find where the error came from. So perhaps it's best to log the error sooner than later.
66 lines
1.9 KiB
Perl
66 lines
1.9 KiB
Perl
package WebGUI::Macro::FileUrl;
|
|
|
|
#-------------------------------------------------------------------
|
|
# WebGUI is Copyright 2001-2009 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;
|
|
use WebGUI::Asset;
|
|
use WebGUI::Storage;
|
|
use WebGUI::International;
|
|
|
|
=head1 NAME
|
|
|
|
Package WebGUI::Macro::FileUrl
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
Macro for returning the file system URL to a File or Image Asset,
|
|
identified by it's asset URL.
|
|
|
|
#-------------------------------------------------------------------
|
|
|
|
=head2 process ( url )
|
|
|
|
returns the file system URL if url is the URL for an Asset in the
|
|
system that has storageId and filename properties. If no Asset
|
|
with that URL exists, then an internationalized error message will
|
|
be returned.
|
|
|
|
=head3 url
|
|
|
|
The URL to the Asset.
|
|
|
|
=cut
|
|
|
|
sub process {
|
|
my $session = shift;
|
|
my $url = shift;
|
|
my $asset = WebGUI::Asset->newByUrl($session,$url);
|
|
my $i18n = WebGUI::International->new($session, 'Macro_FileUrl');
|
|
if (not defined $asset) {
|
|
$session->log->warn("Invalid Asset URL for url: " . $url);
|
|
return $i18n->get('invalid url');
|
|
}
|
|
my $storageId = $asset->get('storageId');
|
|
if (not defined $storageId) {
|
|
$session->log->warn("No Storage Location for assetId: " . $asset->getId . " url: $url");
|
|
return $i18n->get('no storage');
|
|
}
|
|
my $filename = $asset->get('filename');
|
|
if (not defined $filename) {
|
|
$session->log->warn("No Filename for assetId: " . $asset->getId . " url: $url");
|
|
return $i18n->get('no filename');
|
|
}
|
|
my $storage = WebGUI::Storage->get($session,$storageId);
|
|
return $storage->getUrl($filename);
|
|
}
|
|
|
|
|
|
1;
|