Line #
Revision
Author
1
8
ahitrov@rambler.ru
package SQL::UserTable;
2
3
use strict;
4
use base 'SQL::ProtoTable';
5
use vars qw($available_filters @required_properties);
6
7
sub db_table
8
{
9
return 'users';
10
}
11
12
$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
_groups_filter
25
_login_filter
26
)];
27
28
sub available_filters {
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
@required_properties = (
45
{ # Идентификатор документа, сквозной по всем типам...
46
'attr' => 'id',
47
'type' => 'integer',
48
'rusname' => 'Идентификатор документа',
49
'hidden' => 1,
50
'auto' => 1,
51
'readonly' => 1,
52
'db_field' => 'id',
53
'db_type' => 'integer',
54
},
55
{ # Идентификатор документа, сквозной по всем типам...
56
'attr' => 'login',
57
'type' => 'string',
58
'rusname' => 'Логин',
59
'db_field' => 'login',
60
'db_type' => 'varchar(255)',
61
},
62
{ # Класс документа...
63
'attr' => 'class',
64
'type' => 'string',
65
'rusname' => 'Класс документа',
66
'hidden' => 1,
67
'readonly' => 1,
68
'db_field' => 'class',
69
'db_type' => 'varchar(48)',
70
},
71
{ # Имя документа...
72
'attr' => 'name',
73
'type' => 'string',
74
'rusname' => 'ФИО',
75
'db_field' => 'name',
76
'db_type' => 'varchar(255)',
77
},
78
{ # Время создания документа, служебное поле...
79
'attr' => 'ctime',
80
'type' => 'datetime',
81
'rusname' => 'Время создания',
82
'hidden' => 1,
83
'auto' => 1,
84
'readonly' => 1,
85
'db_field' => 'ctime',
86
'db_type' => 'timestamp',
87
'default' => 'CURRENT_TIMESTAMP',
88
},
89
{ # Время модификации документа, служебное поле...
90
'attr' => 'mtime',
91
'type' => 'datetime',
92
'rusname' => 'Время модификации',
93
'hidden' => 1,
94
'auto' => 1,
95
'db_field' => 'mtime',
96
'db_type' => 'timestamp',
97
'default' => 'CURRENT_TIMESTAMP',
98
},
99
{ # Одно поле статуса является встроенным...
100
'attr' => 'status',
101
'type' => 'status',
102
'rusname' => 'Статус',
103
'db_field' => 'status',
104
'db_type' => 'integer',
105
},
106
{ # Пароль
107
'attr' => 'passwd',
108
'type' => 'string',
109
'rusname' => 'Пароль',
110
'db_field' => 'passwd',
111
'db_type' => 'varchar(255)',
112
},
113
{ # Группы
114
'attr' => 'groups',
115
'type' => 'array of integer',
116
'rusname' => 'Группы',
117
'hidden' => 1,
118
'db_field' => 'groups',
119
'db_type' => 'integer[]',
120
}
121
);
122
123
sub required_properties {
124
return @required_properties;
125
}
126
127
########### FILTERS DESCRIPTION ####################################################################################
128
sub _login_filter {
129
my ($self,%opts)=@_;
130
return undef unless ( exists($opts{login}) );
131
return &SQL::Common::_generic_text_filter('d.login', $opts{login});
132
}
133
134
sub _groups_filter {
135
my ($self,%opts)=@_;
136
return undef unless ( exists($opts{s}) );
137
return &SQL::Common::_generic_intarray_filter('d.groups', $opts{s});
138
}
139
140
1;
Небольшая справка по веткам
cnddist – контейнер, в котором хранятся все дистрибутивы всех библиотек и программных пакетов, которые использовались при построении различных версий Contenido. Если какой-то библиотеки в данном хранилище нет, инсталлятор сделает попытку "подтянуть" ее с веба (например, с CPAN). Если библиотека слишком старая, есть очень большая вероятность, что ее там уже нет. Поэтому мы храним весь хлам от всех сборок. Если какой-то дистрибутив вдруг отсутствует в cnddist - напишите нам, мы положим его туда.
koi8 – отмирающая ветка, чей код, выдача и все внутренние библиотеки заточены на кодировку KOI8-R. Вносятся только те дополнения, которые касаются внешнего вида и функционала админки, баги ядра, обязательные обновления портов и мелочи, которые легко скопипастить. В дальнейшем планируется полная остановка поддержки по данной ветке.
utf8 – актуальная ветка, заточенная под UTF-8.
Внутри каждой ветки: core – исходники ядра; install – скрипт установки инсталляции; plugins – плагины; samples – "готовые к употреблению" проекты, которые можно поставить, запустить и посмотреть, как они работают.