Apache-PageKit
view release on metacpan or search on metacpan
lib/Apache/PageKit/Model.pm view on Meta::CPAN
$model->pnotes('pkit_env_lang_is_set' => 1);
$ENV{LC_MESSAGES} = $model->{pkit_pk}->{lang} || 'en';
# notice changes in the .mo file if reload eq 'yes'
my $reload = $config->get_server_attr('reload') || 'no';
if ( $reload eq 'yes' ) {
#my ( $textdomain ) = $config->get_global_attr('model_base_class') =~ m/^([^:]+)/;
my $textdomain = 'PageKit';
Locale::gettext::textdomain($textdomain);
}
}
return Locale::gettext::gettext($text);
}
sub pkit_query {
my ($model, @p) = @_;
my $pk = $model->{pkit_pk};
my $view = $pk->{view};
# will need to change once Template-Toolkit is supported
unless(exists $view->{record}){
$pk->open_view;
}
return $view->{record}->{html_template}->query(@p);
}
# $media_type and $content_encoding is optional
# $ref_or_fname can be a ref to a filenhandle, a ref to a scalar or a scalar,
# that holds the filename
sub pkit_send {
my ($model, $ref_or_fname, $media_type, $content_encoding) = @_;
my $type = ref $ref_or_fname;
my $apr = $model->apr;
unless ( $media_type ) {
unless ( $type ) {
# is filename
require MIME::Types;
( $media_type ) = MIME::Types::by_suffix($ref_or_fname);
}
$media_type ||= 'application/octet-stream';
}
my $apr = $model->apr;
$apr->content_type($media_type);
if ( $content_encoding && $media_type eq 'text/html' ) {
$apr->content_encoding($content_encoding)
} elsif ( !$type ) {
$apr->headers_out->set('Content-Length' => -s $ref_or_fname);
}
$apr->send_http_header if $apr->is_main;
unless ($apr->header_only) {
# NOT a head request, send the data
if ( $type eq 'SCALAR' ) {
$apr->print($$ref_or_fname);
} elsif ( $type eq 'GLOB' ) {
$apr->send_fd($ref_or_fname);
} else {
if ( open SENDFH, "<$ref_or_fname" ) {
binmode SENDFH;
$apr->send_fd(\*SENDFH);
close SENDFH;
}
else {
warn "can not open file: $ref_or_fname ($!)";
return NOT_FOUND;
}
}
}
return DONE;
}
# helper function for output_convert
# it converts all hash values to the desired charset INPLACE
# is this a good idea or better clone it?
sub _change_params {
sub _change_array {
my ($converter, $aref) = @_;
foreach (@$aref) {
my $type = ref $_;
if ( $type eq 'HASH' ) {
_change_hash( $converter, $_ );
} elsif ( $type eq 'ARRAY' ) {
_change_array( $converter, $_ );
} else {
$_ = $converter->convert($_) || die "Can not convert from default_input_charset to default_output_charset" if $_;
}
}
}
sub _change_hash {
my ($converter, $href) = @_;
foreach ( values %$href ) {
my $type = ref $_;
if ( $type eq 'HASH' ) {
_change_hash( $converter, $_ );
} elsif ( $type eq 'ARRAY' ) {
_change_array( $converter, $_ );
} else {
$_ = $converter->convert($_) || die "Can not convert from default_input_charset to default_output_charset" if $_;
}
}
}
my $converter = shift;
for ( my $i = 1 ; $i <= $#_ ; $i += 2 ) {
my $type = ref $_[$i];
if ( $type eq 'HASH' ) {
_change_hash( $converter, $_[$i] );
} elsif ( $type eq 'ARRAY' ) {
_change_array( $converter, $_[$i] );
} else {
$_[$i] = $converter->convert($_[$i]) || die "Can not convert from default_input_charset to default_output_charset" if $_[$i];
}
}
}
1;
__END__
( run in 1.086 second using v1.01-cache-2.11-cpan-39bf76dae61 )