#!/usr/bin/perl -w
########################################################################
#
# $Id: wb.html,v 1.1 2002/10/12 22:09:53 gosha Exp $
#
# Copyright (c) Okunev Igor gosha@prv.mts-nn.ru 2001-2002
#
########################################################################
package WB;
use strict;
use CGI qw( param cookie header );
#
# ........
#
use WB::Configs;
use WB::Templates::Filters;
#
# .......
#
#
# Обработка шаблонов.
#
sub parse_template {
my ( $self, $file, $ptr, $output_handler ) = @_;
my $r_file;
local $_;
unless ( $self->flag( 'No_Parse_Template' ) ) {
$self->env( 'Template_Self' => undef );
} else {
unless ( defined $self->env( 'Template_Self' ) ) {
$self->env( 'Template_Self' => [ $file, $ptr, $output_handler ] );
}
return $ptr;
}
#
# Если file ссылка на массив то ишем первый существующий файл из
# данного списка...
#
unless ( ref $file eq 'ARRAY' ) {
$r_file = $file;
} else {
for ( 0 .. $#$file ) {
if ( -e $self->cfg( 'Home_Dir' ) . '/' . $file->[$_] ) {
$r_file = $file->[$_];
last;
}
}
}
unless ( defined $r_file and
-e $self->cfg( 'HOME_DIR' ) . '/' . $r_file ) {
$self->print("Internal ERROR [".__LINE__."]\n");
$self->log_error("No such template file '$r_file'...");
return 0;
}
$ptr = {} unless ref $ptr eq 'HASH';
#
# .......
#
$ptr->{WEB_REMOTE_ADDR} = $self->sys_env( 'REMOTE_ADDR' );
$ptr->{WEB_REMOTE_IDENT} = $self->sys_env( 'REMOTE_IDENT' );
$ptr->{WEB_HTTP_USER_AGENT} = $self->sys_env( 'HTTP_USER_AGENT' );
$ptr->{WEB_HTTP_X_FORWARDED_FOR}= $self->sys_env( 'HTTP_X_FORWARDED_FOR' );
$ptr->{INC} = { 'WB_Templates_' . $self->cfg( 'TEMPLATE_MODULE' ) => 1,
'WB_Sendmails_' . $self->cfg( 'SENDMAIL_MODULE' ) => 1 };
$ptr->{COOKIE_USER_ID} = CGI::cookie( 'uid' ) || '';
( $ptr->{REVISION} ) = '$Revision: 1.1 $' =~ /^\S+\s+(\S+)\s+/;
( $ptr->{REVISION_DATE} ) = '$Date: 2002/10/12 22:09:53 $' =~ /^\S+\s+(.*?)\s+\$$/;
$ptr->{REQ_CMD} = $self->r_param( 'cmd' );
if ( ref $self->cfg( 'TOKENS' ) eq 'HASH' ) {
foreach ( keys %{ $self->cfg( 'TOKENS' ) } ) {
$ptr->{$_} = $self->cfg( 'TOKENS' )->{$_};
}
}
no strict qw/refs/;
return &{'WB::Templates::' . $self->cfg( 'TEMPLATE_MODULE' ) . '::process_template'}( $self, $self->cfg( 'HOME_DIR' ) . '/' . $r_file, $ptr, $output_handler );
}
#
# Проверка инициализации параметров... Если все Ok то
# возвращаем 1 иначе 0
#
sub param_check {
my $self = shift;
my $arg;
local $_;
foreach $arg ( @_ ) {
if ( not defined $self->r_param( $arg ) or
$self->r_param( $arg ) =~ /^\s*$/ ) {
$self->parse_template( ['full_messages/1.tt', 'error.tt' ], {
ERROR_NUM => 0 . '-' . join( '-', ( caller(1) )[2,3] ),
BAD_PARAM => $arg,
DATA => $self->msg( '1' ) . $arg } );
return 0;
}
}
return 1;
}
#
# ..........
#