Revision 3 (by ahitrov@rambler.ru, 2010/03/24 15:19:32)
The CORE
package SQL::UserTable;
use strict;
use base 'SQL::ProtoTable';
use vars qw($available_filters @required_properties);
sub db_table
{
return 'users';
}
$available_filters = [qw(
_class_filter
_status_filter
_in_id_filter
_id_filter
_name_filter
_class_excludes_filter
_excludes_filter
_datetime_filter
_date_equal_filter
_date_filter
_groups_filter
_login_filter
)];
sub available_filters {
return $available_filters;
}
# ----------------------------------------------------------------------------
# �������� ������ � ��������, ������ ��� ������� �����!
# ��� ����� �������� - ���������� ��� ���� ����������.
#
# attr - ������������ ��������, �������� ��������;
# type - ��� ���������, ��������� ��� ������������;
# rusname - ������� ��������, ����� �� ��������� ��� �����������;
# hidden - ����� 1, �����
# readonly - ������������� ��� ������ ������ ��� ��������� � ����������
# db_field - ���� � �������
# default - �������� �� ��������� (���� ������ ����� ��� ��������)
# ----------------------------------------------------------------------------
@required_properties = (
{ # ������������� ���������, �������� �� ���� �����...
'attr' => 'id',
'type' => 'integer',
'rusname' => '������������� ���������',
'hidden' => 1,
'auto' => 1,
'readonly' => 1,
'db_field' => 'id',
'db_type' => 'integer',
},
{ # ������������� ���������, �������� �� ���� �����...
'attr' => 'login',
'type' => 'string',
'rusname' => '�����',
'db_field' => 'login',
'db_type' => 'varchar(255)',
},
{ # ����� ���������...
'attr' => 'class',
'type' => 'string',
'rusname' => '����� ���������',
'hidden' => 1,
'readonly' => 1,
'db_field' => 'class',
'db_type' => 'varchar(48)',
},
{ # ��� ���������...
'attr' => 'name',
'type' => 'string',
'rusname' => '���',
'db_field' => 'name',
'db_type' => 'varchar(255)',
},
{ # ����� �������� ���������, ��������� ����...
'attr' => 'ctime',
'type' => 'datetime',
'rusname' => '����� ��������',
'hidden' => 1,
'auto' => 1,
'readonly' => 1,
'db_field' => 'ctime',
'db_type' => 'timestamp',
'default' => 'CURRENT_TIMESTAMP',
},
{ # ����� ����������� ���������, ��������� ����...
'attr' => 'mtime',
'type' => 'datetime',
'rusname' => '����� �����������',
'hidden' => 1,
'auto' => 1,
'db_field' => 'mtime',
'db_type' => 'timestamp',
'default' => 'CURRENT_TIMESTAMP',
},
{ # ���� ���� ������� �������� ����������...
'attr' => 'status',
'type' => 'status',
'rusname' => '������',
'db_field' => 'status',
'db_type' => 'integer',
},
{ # ������
'attr' => 'passwd',
'type' => 'string',
'rusname' => '������',
'db_field' => 'passwd',
'db_type' => 'varchar(255)',
},
{ # ������
'attr' => 'groups',
'type' => 'array of integer',
'rusname' => '������',
'hidden' => 1,
'db_field' => 'groups',
'db_type' => 'integer[]',
}
);
sub required_properties {
return @required_properties;
}
########### FILTERS DESCRIPTION ####################################################################################
sub _login_filter {
my ($self,%opts)=@_;
return undef unless ( exists($opts{login}) );
return &SQL::Common::_generic_text_filter('d.login', $opts{login});
}
sub _groups_filter {
my ($self,%opts)=@_;
return undef unless ( exists($opts{s}) );
return &SQL::Common::_generic_intarray_filter('d.groups', $opts{s});
}
1;
Небольшая справка по веткам
cnddist – контейнер, в котором хранятся все дистрибутивы всех библиотек и программных пакетов, которые использовались при построении различных версий Contenido. Если какой-то библиотеки в данном хранилище нет, инсталлятор сделает попытку "подтянуть" ее с веба (например, с CPAN). Если библиотека слишком старая, есть очень большая вероятность, что ее там уже нет. Поэтому мы храним весь хлам от всех сборок. Если какой-то дистрибутив вдруг отсутствует в cnddist - напишите нам, мы положим его туда.
koi8 – отмирающая ветка, чей код, выдача и все внутренние библиотеки заточены на кодировку KOI8-R. Вносятся только те дополнения, которые касаются внешнего вида и функционала админки, баги ядра, обязательные обновления портов и мелочи, которые легко скопипастить. В дальнейшем планируется полная остановка поддержки по данной ветке.
utf8 – актуальная ветка, заточенная под UTF-8.
Внутри каждой ветки: core – исходники ядра; install – скрипт установки инсталляции; plugins – плагины; samples – "готовые к употреблению" проекты, которые можно поставить, запустить и посмотреть, как они работают.