Line # Revision Author
1 234 ahitrov package blogs::SQL::CommentsTable;
2
3 use strict;
4 use base 'SQL::DocumentTable';
5
6 sub db_table
7 {
8 return 'blog_comments';
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 _sfilter_filter
20 _datetime_filter
21 _date_equal_filter
22 _date_filter
23 _previous_days_filter
24 _s_filter
25
26 _excludes_filter
27 _link_filter
28 _uid_filter
29 _pid_filter
30 _blog_id_filter
31 _record_id_filter
32 );
33 return \@available_filters;
34 }
35
36 # ----------------------------------------------------------------------------
37 # Свойства храним в массивах, потому что порядок важен!
38 # Это общие свойства - одинаковые для всех документов.
39 #
40 # attr - обязательный параметр, название атрибута;
41 # type - тип аттрибута, требуется для отображдения;
42 # rusname - русское название, опять же требуется для отображения;
43 # hidden - равен 1, когда
44 # readonly - инициализации при записи только без изменения в дальнейшем
45 # db_field - поле в таблице
46 # default - значение по умолчанию (поле всегда имеет это значение)
47 # ----------------------------------------------------------------------------
48 sub required_properties
49 {
50 my $self = shift;
51
52 my @parent_properties = $self->SUPER::required_properties;
53 return (
54 @parent_properties,
55 { # Пользователь...
56 'attr' => 'uid',
57 'type' => 'integer',
58 'rusname' => 'Пользователь',
59 'db_field' => 'uid',
60 'db_type' => 'integer',
61 'db_opts' => 'not null',
62 },
63 { # Блог...
64 'attr' => 'blog_id',
65 'type' => 'integer',
66 'rusname' => 'Блог',
67 'db_field' => 'blog_id',
68 'db_type' => 'integer',
69 'db_opts' => 'not null',
70 },
71 { # Запись блога...
72 'attr' => 'record_id',
73 'type' => 'integer',
74 'rusname' => 'Запись блога',
75 'db_field' => 'record_id',
76 'db_type' => 'integer',
77 'db_opts' => 'not null',
78 },
79 { # Родитель...
80 'attr' => 'pid',
81 'type' => 'integer',
82 'rusname' => 'Родитель',
83 'db_field' => 'pid',
84 'db_type' => 'integer',
85 'db_opts' => 'not null',
86 },
87 );
88 }
89
90 sub _uid_filter {
91 my ($self,%opts)=@_;
92 return undef unless ( exists $opts{uid} && $opts{uid} );
93 return &SQL::Common::_generic_int_filter('d.uid', $opts{uid});
94 }
95
96 sub _blog_id_filter {
97 my ($self,%opts)=@_;
98 return undef unless ( exists $opts{blog_id} );
99 return &SQL::Common::_generic_int_filter('d.blog_id', $opts{blog_id});
100 }
101
102 sub _record_id_filter {
103 my ($self,%opts)=@_;
104 return undef unless ( exists $opts{record_id} );
105 return &SQL::Common::_generic_int_filter('d.record_id', $opts{record_id});
106 }
107
108 sub _pid_filter {
109 my ($self,%opts)=@_;
110 return undef unless ( exists $opts{pid} );
111 return &SQL::Common::_generic_int_filter('d.pid', $opts{pid});
112 }
113
114 sub _get_orders {
115 my ($self, %opts) = @_;
116
117 if ($opts{order_by}) {
118 return ' order by '.$opts{order_by};
119 } else {
120 return ' order by ctime';
121 }
122 return undef;
123 }
124
125 1;
126