webgui/lib/WebGUI/Image/Font.pm
2010-07-07 03:04:06 -05:00

217 lines
3.6 KiB
Perl

package WebGUI::Image::Font;
use strict;
use WebGUI::Storage;
use WebGUI::Paths;
#-------------------------------------------------------------------
=head2 canDelete
=cut
sub canDelete {
my $self = shift;
return 0 if ($self->getId =~ m/^default/);
return 1;
}
#-------------------------------------------------------------------
=head2 delete
=cut
sub delete {
my $self = shift;
if ($self->canDelete) {
my $storage = WebGUI::Storage->get($self->session, $self->getStorageId);
$storage->deleteFile($self->getFilename);
$self->session->db->write('delete from imageFont where fontId=?', [
$self->getId,
]);
}
}
#-------------------------------------------------------------------
=head2 getId
=cut
sub getId {
my $self = shift;
return $self->{_properties}->{fontId};
}
#-------------------------------------------------------------------
=head2 getFontList
=cut
sub getFontList {
my $self = shift;
my $session = shift || $self->session;
return $session->db->buildHashRef('select fontId, name from imageFont');
}
#-------------------------------------------------------------------
=head2 getFile
=cut
sub getFile {
my $self = shift;
if ($self->getStorageId) {
return WebGUI::Storage->get($self->session, $self->getStorageId)->getPath($self->getFilename);
} else {
return WebGUI::Paths->share . '/default.ttf';
}
}
#-------------------------------------------------------------------
=head2 getFilename
=cut
sub getFilename {
my $self = shift;
return $self->{_properties}->{filename};
}
#-------------------------------------------------------------------
=head2 getName
=cut
sub getName {
my $self = shift;
return $self->{_properties}->{name};
}
#-------------------------------------------------------------------
=head2 getStorageId
=cut
sub getStorageId {
my $self = shift;
return $self->{_properties}->{storageId};
}
#-------------------------------------------------------------------
=head2 new
=cut
sub new {
my $class = shift;
my $session = shift;
my $fontId = shift;
my $properties = {};
if ($fontId eq 'new') {
$fontId = $session->id->generate;
$session->db->write('insert into imageFont (fontId) values (?)', [
$fontId,
]);
$properties->{fontId} = $fontId;
} else {
$properties = $session->db->quickHashRef('select * from imageFont where fontId=?', [
$fontId,
]);
unless ($properties->{fontId}) {
$properties = $session->db->quickHashRef('select * from imageFont where fontId=?', [
'defaultFont',
]);
}
}
bless {_properties => $properties, _session => $session}, $class;
}
#-------------------------------------------------------------------
=head2 session
=cut
sub session {
my $self = shift;
return $self->{_session};
}
#-------------------------------------------------------------------
=head2 setFilename
=cut
sub setFilename {
my $self = shift;
my $filename = shift;
$self->session->db->write('update imageFont set filename=? where fontId=?', [
$filename,
$self->getId,
]);
$self->{_properties}->{filename} = $filename;
}
#-------------------------------------------------------------------
=head2 setName
=cut
sub setName {
my $self = shift;
my $name = shift;
$self->session->db->write('update imageFont set name=? where fontId=?', [
$name,
$self->getId,
]);
$self->{_properties}->{name} = $name;
}
#-------------------------------------------------------------------
=head2 setStorageId
=cut
sub setStorageId {
my $self = shift;
my $storageId = shift;
$self->session->db->write('update imageFont set storageId=? where fontId=?', [
$storageId,
$self->getId,
]);
$self->{_properties}->{storageId} = $storageId;
}
1;