base
This commit is contained in:
@@ -0,0 +1,192 @@
|
||||
package TTXConfig;
|
||||
#
|
||||
# This module is a part of Trouble Ticket Express package
|
||||
# http://www.troubleticketexpress.com
|
||||
#
|
||||
# COPYRIGHT: 2002-2005, United Web Coders
|
||||
# http://www.unitedwebcoders.com
|
||||
#
|
||||
# $Revision: 198 $
|
||||
# $Date: 2006-07-14 08:41:19 -0400 (Fri, 14 Jul 2006) $
|
||||
#
|
||||
|
||||
$TTXConfig::VERSION='2.22';
|
||||
|
||||
BEGIN {
|
||||
$TTXConfig::REVISION = '$Revision: 198 $';
|
||||
if ($TTXConfig::REVISION =~ /(\d+)/) {
|
||||
$TTXConfig::REVISION = $1;
|
||||
}
|
||||
};
|
||||
|
||||
use strict;
|
||||
|
||||
my %errmsgs = (
|
||||
NOFILENAME => 'Missing file name',
|
||||
NOFILE => 'File does not exist',
|
||||
OPENERR => 'Error reading file',
|
||||
WRERR => 'Error writing file'
|
||||
);
|
||||
my %defaults = (
|
||||
userdb => 'users.cgi',
|
||||
ticketdb => 'tickets.cgi',
|
||||
ticketid => 'ticketid.txt'
|
||||
);
|
||||
# ========================================================================== new
|
||||
|
||||
sub new {
|
||||
my $class = shift;
|
||||
my $self = {};
|
||||
bless($self, $class);
|
||||
if ($_[0] ne undef) {
|
||||
$self->load($_[0]);
|
||||
}
|
||||
return $self;
|
||||
}
|
||||
# ========================================================================== get
|
||||
|
||||
sub get {
|
||||
my $self = shift;
|
||||
my $name = shift;
|
||||
return $self->{$name};
|
||||
}
|
||||
# ========================================================================== set
|
||||
|
||||
sub set {
|
||||
my $self = shift;
|
||||
my $name = shift;
|
||||
my $value = shift;
|
||||
$value =~ s/\n//g;
|
||||
my $old = $self->{$name};
|
||||
$self->{$name} = $value;
|
||||
return $old
|
||||
}
|
||||
# ========================================================================= load
|
||||
|
||||
sub load {
|
||||
my $self = shift;
|
||||
my $fname = shift;
|
||||
if ($fname eq undef) {
|
||||
$self->{_ERROR_CODE} = 'NOFNAME';
|
||||
return 0;
|
||||
}
|
||||
if (! -f $fname) {
|
||||
$self->{_ERROR_CODE} = 'NOFILE';
|
||||
return 0;
|
||||
}
|
||||
if (!open(CFG, $fname)) {
|
||||
$self->{_ERROR_CODE} = 'OPENERR';
|
||||
return 0;
|
||||
}
|
||||
my @buff = <CFG>;
|
||||
close CFG;
|
||||
chomp @buff;
|
||||
foreach my $line (@buff) {
|
||||
$line =~ s/^\s+//;
|
||||
$line =~ s/\s+$//;
|
||||
my @parts = split(/=/, $line);
|
||||
my $name = shift @parts;
|
||||
my $value = join('=', @parts);
|
||||
$name =~ s/\s+$//;
|
||||
$value =~ s/^\s+//;
|
||||
$value =~ /(.*)/;
|
||||
$self->{$name} = $1;
|
||||
}
|
||||
$fname =~ /(.*)/;
|
||||
$self->{_CFG_FILE} = $1;
|
||||
return 1;
|
||||
}
|
||||
# ========================================================================= save
|
||||
|
||||
sub save {
|
||||
my $self = shift;
|
||||
if ($self->{_CFG_FILE} eq undef) {
|
||||
$self->{_ERROR_CODE} = 'NOFNAME';
|
||||
return 0;
|
||||
}
|
||||
if ($self->{_CFG_FILE} eq undef) {
|
||||
$self->{_ERROR_CODE} = 'NOFILE';
|
||||
return 0;
|
||||
}
|
||||
foreach my $key (keys %defaults) {
|
||||
if ($self->{$key} eq undef) {
|
||||
$self->{$key} = $self->{basedir} . "/$defaults{$key}";
|
||||
}
|
||||
}
|
||||
$self->{imgurl} = '.' if $self->{imgurl} eq undef;
|
||||
my $cfgfn = $self->{_CFG_FILE};
|
||||
$cfgfn =~ /(.*)/; $cfgfn = $1;
|
||||
if (! -e $cfgfn) {
|
||||
if (open(CFG, ">$cfgfn")) {
|
||||
close CFG;
|
||||
}
|
||||
}
|
||||
if (!open(CFG, "+<$cfgfn")) {
|
||||
$self->{_ERROR_CODE} = 'WRERR';
|
||||
return 0;
|
||||
}
|
||||
flock CFG, 2;
|
||||
seek(CFG, 0, 0);
|
||||
my $vars = $self->ashash();
|
||||
foreach my $key (sort keys %{$vars}) {
|
||||
next if $key =~ /^_/;
|
||||
next if $vars->{$key} eq undef;
|
||||
print CFG "$key=".$vars->{$key}."\n";
|
||||
}
|
||||
truncate(CFG, tell(CFG));
|
||||
close CFG;
|
||||
umask(0);
|
||||
chmod(0777, $cfgfn);
|
||||
if ($self->{usecache}) {
|
||||
eval "use TTXCache";
|
||||
TTXCache::purge() if $@ eq undef;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
# ========================================================================= file
|
||||
|
||||
sub file {
|
||||
my $self = shift;
|
||||
return $self->{_CFG_FILE} if $_[0] eq undef;
|
||||
my $fn = shift;
|
||||
my $old = $self->{_CFG_FILE};
|
||||
$self->{_CFG_FILE} = $fn;
|
||||
return $old
|
||||
}
|
||||
# ======================================================================== error
|
||||
|
||||
sub error {
|
||||
my $self = shift;
|
||||
return $self->{_ERROR_CODE};
|
||||
}
|
||||
# ==================================================================== errortext
|
||||
|
||||
sub errortext {
|
||||
my $self = shift;
|
||||
return $errmsgs{$self->{_ERROR_CODE}}." [config]";
|
||||
}
|
||||
# ========================================================================= vars
|
||||
|
||||
sub vars {
|
||||
my $self = shift;
|
||||
my @list;
|
||||
foreach my $key (sort keys %$self) {
|
||||
next if $key =~ /^_/;
|
||||
@list = (@list, $key);
|
||||
}
|
||||
return @list;
|
||||
}
|
||||
# ======================================================================= ashash
|
||||
|
||||
sub ashash {
|
||||
my $self = shift;
|
||||
my $hash = {};
|
||||
foreach my $key (keys %{$self}) {
|
||||
$hash->{$key} = $self->{$key};
|
||||
}
|
||||
return $hash;
|
||||
}
|
||||
|
||||
1;
|
||||
#
|
||||
|
||||
Reference in New Issue
Block a user