Revision 191 (by ahitrov, 2012/03/15 18:22:24) |
Session plug-in
|
package session::State;
use strict;
use warnings 'all';
use vars qw($AUTOLOAD);
sub new {
my ($proto) = @_;
my $class = ref($proto) || $proto;
my $self = {};
bless $self, $class;
# ������� ������������ �������
$self->{db_type} = 'none';
$self->{storage} = '@SESSION_STORAGE@' || 'FILE'; ## ��������: FILE POSTGRES MEMCACHED
$self->{session_dir} = '@SESSIONS@';
$self->{session_directory} = '@SESSIONS@';
$self->{domain} = '@SESSION_DOMAIN@';
$self->{cookie} = 'lsid';
$self->{expires} = '@SESSION_EXPIRES@' || '';
$self->{lifetime} = '@SESSION_LIFETIME@';
$self->{lifetime} *= 3600;
$self->{checkout} = $self->{lifetime} - int ($self->{lifetime} / 2);
$self->{db_keepalive} = 0;
$self->{db_host} = '';
$self->{db_name} = '';
$self->{db_user} = '';
$self->{db_password} = '';
$self->{db_port} = '';
$self->{data_directory} = '';
$self->{images_directory} = '';
$self->{binary_directory} = '';
$self->{preview} = '';
$self->{debug} = '';
$self->{store_method} = '';
$self->{cascade} = '';
$self->{memcached_enable} = '';
$self->{facebook_app_id} = '@FACEBOOK_APP_ID@';
$self->{facebook_app_key} = '@FACEBOOK_APP_KEY@';
$self->{facebook_app_secret} = '@FACEBOOK_APP_SECRET@';
$self->{facebook_authorize_url} = '@FACEBOOK_AUTHORIZE_URL@';
$self->{facebook_access_token_url} = '@FACEBOOK_ACCESS_TOKEN_URL@';
$self->{facebook_user_info_url} = '@FACEBOOK_USER_INFO_URL@';
$self->{facebook_redirect_uri} = '@FACEBOOK_REDIRECT_URL@';
$self->{facebook_user_post_url} = '@FACEBOOK_USER_POST_URL@';
$self->{vk_app_id} = '@VK_APP_ID@';
$self->{vk_app_secret} = '@VK_APP_SECRET@';
$self->{vk_authorize_url} = '@VK_AUTHORIZE_URL@' || 'http://api.vkontakte.ru/oauth/authorize';
$self->{vk_access_token_url} = '@VK_ACCESS_TOKEN_URL@' || 'https://api.vkontakte.ru/oauth/access_token';
$self->{vk_user_info_url} = '@VK_USER_INFO_URL@' || 'https://api.vkontakte.ru/method/getProfiles';
$self->{vk_redirect_uri} = '@VK_REDIRECT_URL@';
$self->{vk_user_post_url} = '@VK_USER_POST_URL@';
$self->{connection_timeout} = '@CONNECTION_TIMEOUT@';
$self->_init_();
$self;
}
sub info {
my $self = shift;
return unless ref $self;
for (sort keys %{$self->{attributes}}) {
my $la = length $_;
warn "\t$_".("\t" x (2-int($la/8))).": $self->{$_}\n";
}
}
sub _init_ {
my $self = shift;
# ������� ������������ �������
$self->{attributes}->{$_} = 'SCALAR' for qw(
db_type
session_dir
session_directory
domain
cookie
expires
storage
lifetime
checkout
db_keepalive
db_host
db_port
db_name
db_user
db_password
data_directory images_directory binary_directory preview debug store_method cascade memcached_enable
);
}
sub AUTOLOAD {
my $self = shift;
my $attribute = $AUTOLOAD;
$attribute =~ s/.*:://;
return unless $attribute =~ /[^A-Z]/; # ��������� ������ ���� DESTROY
if (!exists $self->{attributes}->{$attribute}) {
warn "Contenido Error (session::State): ����� ������, ��� �������� �� ���������� ��������������� ��������: ->$attribute()\n";
return;
}
$self->{$attribute} = shift @_ if $#_>=0;
$self->{$attribute};
}
1;
Небольшая справка по веткам
cnddist – контейнер, в котором хранятся все дистрибутивы всех библиотек и программных пакетов, которые использовались при построении различных версий Contenido. Если какой-то библиотеки в данном хранилище нет, инсталлятор сделает попытку "подтянуть" ее с веба (например, с CPAN). Если библиотека слишком старая, есть очень большая вероятность, что ее там уже нет. Поэтому мы храним весь хлам от всех сборок. Если какой-то дистрибутив вдруг отсутствует в cnddist - напишите нам, мы положим его туда.
koi8 – отмирающая ветка, чей код, выдача и все внутренние библиотеки заточены на кодировку KOI8-R. Вносятся только те дополнения, которые касаются внешнего вида и функционала админки, баги ядра, обязательные обновления портов и мелочи, которые легко скопипастить. В дальнейшем планируется полная остановка поддержки по данной ветке.
utf8 – актуальная ветка, заточенная под UTF-8.
Внутри каждой ветки: core – исходники ядра; install – скрипт установки инсталляции; plugins – плагины; samples – "готовые к употреблению" проекты, которые можно поставить, запустить и посмотреть, как они работают.