Line # Revision Author
1 358 ahitrov package payments::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 # configured
15 $self->{debug} = (lc('') eq 'yes');
16 $self->{project} = '';
17
18 # зашитая конфигурация плагина
19 $self->{db_type} = 'none'; ### For REAL database use 'remote'
20 $self->{db_keepalive} = 0;
21 $self->{db_host} = '';
22 $self->{db_name} = '';
23 $self->{db_user} = '';
24 $self->{db_password} = '';
25 $self->{db_port} = '';
26 $self->{store_method} = 'toast';
27 $self->{cascade} = 1;
28 $self->{db_prepare} = 0;
29
30 $self->{memcached_enable} = lc( '' ) eq 'yes' ? 1 : 0;
31 $self->{memcached_enable_compress} = 1;
32 $self->{memcached_backend} = '';
33 $self->{memcached_servers} = [qw()];
34 $self->{memcached_busy_lock} = 60;
35 $self->{memcached_delayed} = lc('') eq 'yes' ? 1 : 0;
36
37 $self->{serialize_with} = 'json'; ### or 'dumper'
38
39 # not implemented really (core compatibility)
40 $self->{binary_directory} = '/nonexistent';
41 $self->{data_directory} = '/nonexistent';
42 $self->{images_directory} = '/nonexistent';
43 $self->{preview} = '0';
44
45 $self->{moneta_app_id} = '@MNT_ID@';
46 $self->{moneta_app_secret} = '@MNT_SECRET@';
47 $self->{moneta_currency_code} = '@MNT_CURRENCY_CODE@';
48 $self->{moneta_test_mode} = int('@MNT_TEST_MODE@' || 0);
49 $self->{moneta_sig_code} = '@MNT_SIG_CODE@';
50
51 369 ahitrov my @valid_ips_default = qw(
52 94.103.26.178 94.103.26.179 94.103.26.180 94.103.26.181
53 94.103.26.182 159.255.220.247 159.255.220.248 159.255.220.249
54 159.255.220.250 159.255.220.251 159.255.220.252 159.255.220.253
55 159.255.220.254
56 );
57
58 358 ahitrov $self->{xsolla_app_id} = '@XSO_ID@';
59 $self->{xsolla_app_secret} = '@XSO_SECRET@';
60 $self->{xsolla_currency_code} = '@XSO_CURRENCY_CODE@';
61 $self->{xsolla_test_mode} = int('@XSO_TEST_MODE@' || 0);
62 369 ahitrov if ( '@XSO_VALID_IPS@' ) {
63 $self->{xsolla_valid_ips} = [qw(@XSO_VALID_IPS@)];
64 } else {
65 $self->{xsolla_valid_ips} = \@valid_ips_default;
66 }
67 358 ahitrov
68 525 ahitrov $self->{payture_app_id} = '@PTR_ID@';
69 $self->{payture_app_secret} = '@PTR_SECRET@';
70 $self->{payture_backend_secret} = '@PTR_BACKEND_SECRET@';
71 $self->{payture_currency_code} = '@PTR_CURRENCY_CODE@';
72 $self->{payture_test_mode} = int('@PTR_TEST_MODE@' || 0);
73 $self->{payture_sig_code} = '@PTR_SIG_CODE@';
74
75 358 ahitrov $self->_init_();
76 $self;
77 }
78
79 sub info {
80 my $self = shift;
81 return unless ref $self;
82
83 for (sort keys %{$self->{attributes}}) {
84 my $la = length $_;
85 warn "\t$_".("\t" x (2-int($la/8))).": $self->{$_}\n";
86 }
87 }
88
89 sub _init_ {
90 my $self = shift;
91
92 # зашитая конфигурация плагина
93 $self->{attributes}->{$_} = 'SCALAR' for qw(
94 debug
95 project
96
97 db_type
98 db_keepalive
99 db_host
100 db_port
101 db_name
102 db_user
103 db_password
104 store_method
105 cascade
106 db_prepare
107 db_client_encoding
108
109 memcached_enable
110 memcached_enable_compress
111 memcached_backend
112 memcached_servers
113 memcached_busy_lock
114 memcached_delayed
115
116 binary_directory
117 data_directory
118 images_directory
119 preview
120 );
121 }
122
123 sub AUTOLOAD {
124 my $self = shift;
125 my $attribute = $AUTOLOAD;
126
127 $attribute =~ s/.*:://;
128 return unless $attribute =~ /[^A-Z]/; # Отключаем методы типа DESTROY
129
130 if (!exists $self->{attributes}->{$attribute}) {
131 warn "Contenido Error (payments::State): Вызов метода, для которого не существует обрабатываемого свойства: ->$attribute()\n";
132 return;
133 }
134
135 $self->{$attribute} = shift @_ if $#_>=0;
136 $self->{$attribute};
137 }
138
139 1;