Line # Revision Author
1 234 ahitrov package blogs::State;
2
3 use strict;
4 use warnings 'all';
5 use vars qw($AUTOLOAD);
6
7
8 sub new {
9 my ($proto) = @_;
10 my $class = ref($proto) || $proto;
11 my $self = {};
12 bless $self, $class;
13
14 # зашитая конфигурация плагина
15 $self->{db_type} = 'none';
16 $self->{db_keepalive} = 0;
17 $self->{db_host} = '';
18 $self->{db_name} = '';
19 $self->{db_user} = '';
20 $self->{db_password} = '';
21 $self->{db_port} = '';
22
23 $self->{data_directory} = '';
24 $self->{images_directory} = '';
25 $self->{binary_directory} = '';
26 $self->{preview} = '';
27 $self->{debug} = '';
28 $self->{store_method} = '';
29 $self->{cascade} = '';
30 $self->{memcached_enable} = '';
31
32 $self->_init_();
33 $self;
34 }
35
36 sub info {
37 my $self = shift;
38 return unless ref $self;
39
40 for (sort keys %{$self->{attributes}}) {
41 my $la = length $_;
42 warn "\t$_".("\t" x (2-int($la/8))).": $self->{$_}\n";
43 }
44 }
45
46 sub _init_ {
47 my $self = shift;
48
49 # зашитая конфигурация плагина
50 $self->{attributes}->{$_} = 'SCALAR' for qw(
51 db_type
52 db_keepalive
53 db_host
54 db_port
55 db_name
56 db_user
57 db_password
58 data_directory images_directory binary_directory preview debug store_method cascade memcached_enable
59 );
60 }
61
62 sub AUTOLOAD {
63 my $self = shift;
64 my $attribute = $AUTOLOAD;
65
66 $attribute =~ s/.*:://;
67 return unless $attribute =~ /[^A-Z]/; # Отключаем методы типа DESTROY
68
69 if (!exists $self->{attributes}->{$attribute}) {
70 warn "Contenido Error (blogs::State): Вызов метода, для которого не существует обрабатываемого свойства: ->$attribute()\n";
71 return;
72 }
73
74 $self->{$attribute} = shift @_ if $#_>=0;
75 $self->{$attribute};
76 }
77
78 1;