Line #
Revision
Author
1
3
ahitrov@rambler.ru
package SQL::LinkTable;
2
3
use strict;
4
use base 'SQL::ProtoTable';
5
6
sub db_table
7
{
8
return 'links';
9
}
10
11
sub available_filters {
12
my @available_filters = qw(
13
_class_filter
14
_status_filter
15
_in_id_filter
16
_id_filter
17
_name_filter
18
_class_excludes_filter
19
_excludes_filter
20
_datetime_filter
21
_date_equal_filter
22
_date_filter
23
24
_dest_id_filter
25
_source_id_filter
26
_source_class_filter
27
_dest_class_filter
28
);
29
return \@available_filters;
30
}
31
32
# ----------------------------------------------------------------------------
33
# �������� ������ � ��������, ������ ��� ������� �����!
34
# ��� ����� �������� - ���������� ��� ���� ����������.
35
#
36
# attr - ������������ ��������, �������� ��������;
37
# type - ��� ���������, ��������� ��� ������������;
38
# rusname - ������� ��������, ����� �� ��������� ��� �����������;
39
# hidden - ����� 1, �����
40
# readonly - ������������� ��� ������ ������ ��� ��������� � ����������
41
# db_field - ���� � �������
42
# default - �������� �� ��������� (���� ������ ����� ��� ��������)
43
# ----------------------------------------------------------------------------
44
sub required_properties
45
{
46
return (
47
{ # ������������� ���������, �������� �� ���� �����...
48
'attr' => 'id',
49
'type' => 'integer',
50
'rusname' => '������������� ���������',
51
'hidden' => 1,
52
'auto' => 1,
53
'db_field' => 'id',
54
'readonly' => 1,
55
'db_type' => 'integer',
56
},
57
{ # ����� ���������...
58
'attr' => 'class',
59
'type' => 'string',
60
'rusname' => '����� ���������',
61
'hidden' => 1,
62
'db_field' => 'class',
63
'readonly' => 1,
64
'db_type' => 'varchar(48)',
65
},
66
{ # ��� ���������...
67
'attr' => 'source_id',
68
'type' => 'string',
69
'rusname' => 'ID ���������',
70
'db_field' => 'source_id',
71
'db_type' => 'integer',
72
},
73
{ # ��� ���������...
74
'attr' => 'source_class',
75
'type' => 'string',
76
'rusname' => '����� ���������',
77
'db_field' => 'source_class',
78
'db_type' => 'varchar(48)',
79
},
80
{ # ��� ���������...
81
'attr' => 'dest_id',
82
'type' => 'string',
83
'rusname' => 'ID ����',
84
'db_field' => 'dest_id',
85
'db_type' => 'integer',
86
},
87
{ # ��� ���������...
88
'attr' => 'dest_class',
89
'type' => 'string',
90
'rusname' => '����� ����',
91
'db_field' => 'dest_class',
92
'db_type' => 'varchar(48)',
93
},
94
{ # ����� �������� ���������, ��������� ����...
95
'attr' => 'ctime',
96
'type' => 'datetime',
97
'rusname' => '����� ��������',
98
'hidden' => 1,
99
'auto' => 1,
100
'db_field' => 'ctime',
101
'readonly' => 1,
102
'default' => 'CURRENT_TIMESTAMP',
103
'db_type' => 'timestamp',
104
},
105
{ # ����� ����������� ���������, ��������� ����...
106
'attr' => 'mtime',
107
'type' => 'datetime',
108
'rusname' => '����� �����������',
109
'hidden' => 1,
110
'auto' => 1,
111
'db_field' => 'mtime',
112
'default' => 'CURRENT_TIMESTAMP',
113
'db_type' => 'timestamp',
114
},
115
{ # ���� ���� ������� �������� ����������...
116
'attr' => 'status',
117
'type' => 'status',
118
'rusname' => '������',
119
'db_field' => 'status',
120
'db_type' => 'integer',
121
},
122
);
123
}
124
125
126
########### FILTERS DESCRIPTION ####################################################################################
127
sub _dest_id_filter {
128
my ($self,%opts)=@_;
129
return undef unless ( exists($opts{dest_id}) );
130
return &SQL::Common::_generic_int_filter('d.dest_id', $opts{dest_id});
131
}
132
133
sub _source_id_filter {
134
my ($self,%opts)=@_;
135
return undef unless ( exists($opts{source_id}) );
136
return &SQL::Common::_generic_int_filter('d.source_id', $opts{source_id});
137
}
138
139
sub _source_class_filter {
140
my ($self, %opts)=@_;
141
return undef unless ( exists($opts{source_class}) );
142
return &SQL::Common::_generic_text_filter('d.source_class', $opts{source_class});
143
}
144
145
sub _dest_class_filter {
146
my ($self, %opts)=@_;
147
return undef unless ( exists($opts{dest_class}) );
148
return &SQL::Common::_generic_text_filter('d.dest_class', $opts{dest_class});
149
}
150
151
1;
152
Небольшая справка по веткам
cnddist – контейнер, в котором хранятся все дистрибутивы всех библиотек и программных пакетов, которые использовались при построении различных версий Contenido. Если какой-то библиотеки в данном хранилище нет, инсталлятор сделает попытку "подтянуть" ее с веба (например, с CPAN). Если библиотека слишком старая, есть очень большая вероятность, что ее там уже нет. Поэтому мы храним весь хлам от всех сборок. Если какой-то дистрибутив вдруг отсутствует в cnddist - напишите нам, мы положим его туда.
koi8 – отмирающая ветка, чей код, выдача и все внутренние библиотеки заточены на кодировку KOI8-R. Вносятся только те дополнения, которые касаются внешнего вида и функционала админки, баги ядра, обязательные обновления портов и мелочи, которые легко скопипастить. В дальнейшем планируется полная остановка поддержки по данной ветке.
utf8 – актуальная ветка, заточенная под UTF-8.
Внутри каждой ветки: core – исходники ядра; install – скрипт установки инсталляции; plugins – плагины; samples – "готовые к употреблению" проекты, которые можно поставить, запустить и посмотреть, как они работают.