Line # Revision Author
1 599 ahitrov package sphinx::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 603 ahitrov $self->{debug} = (lc('@DEBUG@') eq 'yes');
16 $self->{project} = '@PROJECT@';
17 $self->{contenido_notab} = 1;
18 599 ahitrov $self->{tab_name} = 'sphinx';
19
20 # зашитая конфигурация плагина
21 774 ahitrov $self->{db_type} = 'proxy'; ### For REAL database use 'remote'
22 603 ahitrov $self->{db_keepalive} = 0;
23 $self->{db_host} = '@SPHINX_HOST@';
24 599 ahitrov $self->{db_name} = '';
25 $self->{db_user} = '';
26 603 ahitrov $self->{db_password} = '';
27 $self->{db_port} = '@SPHINX_PORT@';
28 599 ahitrov $self->{store_method} = 'toast';
29 $self->{cascade} = 1;
30 $self->{db_prepare} = 0;
31
32 603 ahitrov $self->{memcached_enable} = lc( '@MEMCACHED_ENABLE@' ) eq 'yes' ? 1 : 0;
33 599 ahitrov $self->{memcached_enable_compress} = 1;
34 603 ahitrov $self->{memcached_backend} = '@MEMCACHED_BACKEND@';
35 $self->{memcached_servers} = [qw(@MEMCACHED_SERVERS@)];
36 599 ahitrov $self->{memcached_busy_lock} = 60;
37 603 ahitrov $self->{memcached_delayed} = lc('@MEMCACHED_DELAYED@') eq 'yes' ? 1 : 0;
38 599 ahitrov
39 $self->{serialize_with} = 'json'; ### or 'dumper'
40
41 # not implemented really (core compatibility)
42 $self->{binary_directory} = '/nonexistent';
43 $self->{data_directory} = '/nonexistent';
44 $self->{images_directory} = '/nonexistent';
45 $self->{preview} = '0';
46
47 603 ahitrov $self->{table_name} = '@SPHINX_TABLE@';
48 $self->{table_name_stemmed} = '@SPHINX_TABLE_STEMMED@';
49
50 599 ahitrov $self->_init_();
51 $self;
52 }
53
54 sub info {
55 my $self = shift;
56 return unless ref $self;
57
58 for (sort keys %{$self->{attributes}}) {
59 my $la = length $_;
60 warn "\t$_".("\t" x (2-int($la/8))).": $self->{$_}\n";
61 }
62 }
63
64 sub _init_ {
65 my $self = shift;
66
67 # зашитая конфигурация плагина
68 $self->{attributes}->{$_} = 'SCALAR' for qw(
69 debug
70 project
71 tab_name
72
73 db_type
74 db_keepalive
75 db_host
76 db_port
77 db_name
78 db_user
79 db_password
80 store_method
81 cascade
82 db_prepare
83 db_client_encoding
84
85 memcached_enable
86 606 ahitrov memcached_servers
87 memcached_select_timeout
88 memcached_backend
89 599 ahitrov memcached_enable_compress
90 606 ahitrov memcached_set_mode
91 memcached_object_expire
92 599 ahitrov memcached_busy_lock
93 memcached_delayed
94 606 ahitrov memcached_namespace
95 599 ahitrov
96 binary_directory
97 data_directory
98 images_directory
99 preview
100 603 ahitrov
101 table_name
102 table_name_stemmed
103 599 ahitrov );
104 }
105
106 sub AUTOLOAD {
107 my $self = shift;
108 my $attribute = $AUTOLOAD;
109
110 $attribute =~ s/.*:://;
111 return unless $attribute =~ /[^A-Z]/; # Отключаем методы типа DESTROY
112
113 if (!exists $self->{attributes}->{$attribute}) {
114 warn "Contenido Error (sphinx::State): Вызов метода, для которого не существует обрабатываемого свойства: ->$attribute()\n";
115 return;
116 }
117
118 $self->{$attribute} = shift @_ if $#_>=0;
119 $self->{$attribute};
120 }
121
122 1;