Platon Technologies
neprihlásený Prihlásiť Registrácia
SlovakEnglish
open source software development oslavujeme 10 rokov vývoja otvoreného softvéru! Štvrtok, 18. apríl 2024

Súbor: [Platon] / web-apps / finance-manager / index.fcgi (stiahnutie)

Revízia 1.5, Tue Apr 13 06:50:56 2004 UTC (20 years ago) by rajo


Zmeny od 1.4: +90 -4 [lines]

Manage Events.

#!/usr/bin/perl -w

#
# index.fcgi
#
# Developed by Lubomir Host 'rajo' <rajo AT platon.sk>
# Copyright (c) 2004 Platon SDG, http://platon.sk/
# Licensed under terms of GNU General Public License.
# All rights reserved.
#
# Changelog:
# 08/02/2004 - created
#

# $Platon: web-apps/finance-manager/index.fcgi,v 1.4 2004/04/09 09:18:15 rajo Exp $

use strict;

umask 022;

use lib qw( ./modules );

use FCGI;
use CGI::Lite;
use Time::HiRes qw(gettimeofday tv_interval); 

use globals;
use template;
use db;
use Event;
use Source;
use restart;

use vars qw (
    $in_reply
    $cgi $req $globals
    $template $dbh
    $event $source
    $restart
);

#
# Function declaration
#
sub to_ascii($;);
sub Main($;);
sub Sources($;);
sub NewSource($;);
sub EditSource($;);
sub Events($;);
sub NewEvent($;);
sub EditEvent($;);

$cgi = CGI::Lite->new();
$req = FCGI::Request();
$globals    = globals->new();
$template    = template->new($globals);
$dbh        = db->new($globals);
$event        = Event->new($globals, $dbh);
$source        = Source->new($globals, $dbh);
$restart    = restart->new({
        restart_func            => sub { $req->LastCall() },
        CHECK_USER_MODULES        => 'true',
        CHECK_SYSTEM_MODULES    => 'false',
    });

# signal handlers {{{
local $SIG{ALRM}= sub { $req->LastCall(); };
local $SIG{SEGV}= sub { die "SIGSEGV received!!: $!"; };
local $SIG{TERM}= sub { $req->LastCall(); };
local $SIG{ABRT}= sub { $req->LastCall(); };
local $SIG{KILL}= sub { $req->LastCall(); };
local $SIG{XCPU}= sub { $req->LastCall(); };
local $SIG{XFSZ}= sub { $req->LastCall(); }; 
# }}}

# All modules loaded, push them to the restart.pm:
$restart->add_loaded_modules();

#
# MAIN:
#
# {{{
while ( $globals->run && ($req->Accept() >= 0) ) {

    my %query;
    my %cookie;
    $in_reply = 0; # no output yet

    %query = $cgi->parse_new_form_data();
    %cookie = $cgi->parse_cookies(); 

    foreach (keys(%query)) { # simplify query if they are arrays
        $query{$_} = $query{$_}[0] if (ref $query{$_});
    }         
    foreach (keys(%cookie)) { # simplify cookies if they are arrays
        $cookie{$_} = $cookie{$_}[0] if (ref $cookie{$_});
    } 

    if (!defined($query{action}) or $query{action} eq '') {
        $query{action} = "default";
    }

    if ($query{action} eq 'default') {
        Main(\%query);
    }

    if ($query{action} eq 'newsource') {
        NewSource(\%query);
    }
    elsif ($query{action} eq 'editsource') {
        EditSource(\%query);
    }
    elsif ($query{action} eq 'newevent') {
        NewEvent(\%query);
    }
    elsif ($query{action} eq 'editevent') {
        EditEvent(\%query);
    }

    if ($query{action} eq 'sources') {
        Sources(\%query);
    }
    elsif ($query{action} eq 'events') {
        Events(\%query);
    }
    elsif ($query{action} eq 'about') {
        my    $template_data = {
            query        => \%query,
        };

        $in_reply = 1;
        $template->process('about.tt2', $template_data) or die $template->error(), "\n";
    }

    if ($in_reply == 0) {
        Main(\%query);
    }
         
    $restart->restart($ENV{SCRIPT_FILENAME});
    $req->Finish();

    undef %cookie;
    undef %query;

} # }}}


exit 0;

sub Main($;)
{ # {{{
    my ($ref_query) = @_;
    
    my    $template_data = {
        query        => $ref_query,
    };

    $in_reply = 1;
    $template->process('index.tt2', $template_data) or die $template->error(), "\n";

} # }}} Main


sub Sources($;)
{ # {{{
    my ($ref_query) = @_;
    
    my    $template_data = {
        query        => $ref_query,
        sources        => $source->list(),
    };

    $in_reply = 1;
    $template->process('sources.tt2', $template_data) or die $template->error(), "\n";

} # }}} Sources

sub NewSource($;)
{ # {{{
    my ($ref_query) = @_;
    my $template_data;

    if (defined $ref_query->{store} and $ref_query->{store} eq '1') { # save data into db
        $template_data = {
            query        => $ref_query,
        };
        $ref_query->{active} = (defined($ref_query->{active}) and $ref_query->{active} =~ m/^\d$/) ? $ref_query->{active} : 0;
        $source->new_source($ref_query);
        
        $ref_query->{action} = "sources";
    }
    else {
        $template_data = {
            query        => $ref_query,
        };
        
        $in_reply = 1;
        $template->process('newsource.tt2', $template_data) or die $template->error(), "\n";
    }

} # }}} EditSource

sub EditSource($;)
{ # {{{
    my ($ref_query) = @_;
    my $template_data;

    if (defined $ref_query->{store} and $ref_query->{store} eq '1') { # save data into db
        $template_data = {
            query        => $ref_query,
        };
        $ref_query->{active} = (defined($ref_query->{active}) and $ref_query->{active} =~ m/^\d$/) ? $ref_query->{active} : 0;
        $source->update_source($ref_query);
        
        $ref_query->{action} = "sources";
    }
    else { # read data from db and fill formular
        $template_data = {
            query        => $ref_query,
            source        => $source->get($ref_query->{sourceid}),
        };
        
        $in_reply = 1;
        $template->process('editsource.tt2', $template_data) or die $template->error(), "\n";
    }

} # }}} EditSource


sub Events($;)
{ # {{{
    my ($ref_query) = @_;
    
    my    $template_data = {
        query        => $ref_query,
        events        => $event->list(),
        sources        => $source->list(),
    };

    $in_reply = 1;
    $template->process('events.tt2', $template_data) or die $template->error(), "\n";

} # }}} Events

sub NewEvent($;)
{ # {{{
    my ($ref_query) = @_;
    my $template_data;

    if (defined $ref_query->{store} and $ref_query->{store} eq '1') { # save data into db
        $template_data = {
            query        => $ref_query,
        };
        $ref_query->{active} = (defined($ref_query->{active}) and $ref_query->{active} =~ m/^\d$/) ? $ref_query->{active} : 0;
        $event->new_event($ref_query);
        
        $ref_query->{action} = "events";
    }
    else {
        $template_data = {
            query        => $ref_query,
        };
        
        $in_reply = 1;
        $template->process('newevent.tt2', $template_data) or die $template->error(), "\n";
    }

} # }}} EditEvent

sub EditEvent($;)
{ # {{{
    my ($ref_query) = @_;
    my $template_data;

    if (defined $ref_query->{store} and $ref_query->{store} eq '1') { # save data into db
        $template_data = {
            query        => $ref_query,
        };
        $ref_query->{active} = (defined($ref_query->{active}) and $ref_query->{active} =~ m/^\d$/) ? $ref_query->{active} : 0;
        $event->update_event($ref_query);
        
        $ref_query->{action} = "events";
    }
    else { # read data from db and fill formular
        $template_data = {
            query        => $ref_query,
            event        => $event->get($ref_query->{eventid}),
        };
        
        $in_reply = 1;
        $template->process('editevent.tt2', $template_data) or die $template->error(), "\n";
    }

} # }}} EditEvent



sub to_ascii($;)
{ # {{{
    my ($str) = @_;
    
    $str =~ tr/AÁÄBCČDĎEÉĚËFGHIÍJKLĹźMNŇOÓÔÖPQRŔŘSŠTUÚŮÜVWXYÝZŽaáäbcčdďeéěëfghiíjklĺžmnňoóôöpqrŕřsštuúůüvwxyýzž/AAABCCDDEEEEFGHIIJKLLLMNNOOOOPQRRRSSTTUUUUVWXYYZZaaabccddeeeefghiijklllmnnoooopqrrrssttuuuuvwxyyzz/;

    return $str;

} # }}} 


# vim: ft=perl
# vim600: fdm=marker fdl=0 fdc=3


Platon Group <platon@platon.sk> http://platon.sk/
Copyright © 2002-2006 Platon Group
Stránka používa redakčný systém Metafox
Na začiatok