#!/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;
}

#
# ..........
#