Revision 469 (by ahitrov, 2014/12/24 13:57:26) |
Moving Contenido to Apache 2
|
#!/usr/bin/perl
use strict;
BEGIN { require '../libs.pl' };
use vars qw($DEBUG);
$DEBUG = 0;
use Data::Dumper;
use Contenido::Init;
use Rate::Main;
&check_pid();
Contenido::Init::init();
$Contenido::Keeper::DEBUG = $DEBUG;
$Contenido::Project::DEBUG = $DEBUG;
$Contenido::State::DEBUG = $DEBUG;
$PhoenixDBI::DEBUG = $DEBUG;
$Data::Dumper::Indent = 0 unless ($DEBUG);
# ������������ � ���� ������ ��� ������������ � ��������...
my $keeper = Contenido::Keeper->new($state);
$keeper->{TSQLStable} = 1;
warn Data::Dumper::Dumper($state->rate()) if ($DEBUG);
my $set={};
foreach my $serial (($state->rate->days-2..0),undef) {
Rate::Main->parse_single_file($set,$serial);
}
warn Data::Dumper::Dumper($set) if ($DEBUG);
my $id_hash=();
while (my ($client,$votes)=each(%$set)) {
while (my ($id,$vote)= each(%$votes)) {
$id_hash->{$id}->{$vote}++;
$id_hash->{$id}->{votes}++;
$id_hash->{$id}->{total}+=$vote;
}
}
warn Data::Dumper::Dumper($id_hash) if ($DEBUG);
my $time=time();
while (my ($id,$votes)=each(%$id_hash)) {
my $document=undef;
foreach (@{$state->rate->allowed_classes}) {
$document = $keeper->get_document_by_id($id,class=>$_);
last if $document;
}
unless ($document) {
warn "wrong document id: '$id'";
next;
}
my $document_votes=$document->get_image('rating');
$document_votes->{LAST}=$votes;
$document_votes->{LAST}->{mtime}=$time;
foreach (qw(1 2 3 4 5 votes total mtime)) {
$document_votes->{OLD}->{$_}||=0;
$document_votes->{LAST}->{$_}||=0;
$document_votes->{TOTAL}->{$_}=$document_votes->{OLD}->{$_}+$document_votes->{LAST}->{$_};
}
my $raw_rating = Data::Dumper::Dumper($document_votes);
#rating changed!!!
#comparing Data::Dumper results is cheap hack but no fast and easy way compare two data structure
if ($raw_rating ne $document->rating) {
$document->rating($raw_rating);
$document->store();
}
}
Небольшая справка по веткам
cnddist – контейнер, в котором хранятся все дистрибутивы всех библиотек и программных пакетов, которые использовались при построении различных версий Contenido. Если какой-то библиотеки в данном хранилище нет, инсталлятор сделает попытку "подтянуть" ее с веба (например, с CPAN). Если библиотека слишком старая, есть очень большая вероятность, что ее там уже нет. Поэтому мы храним весь хлам от всех сборок. Если какой-то дистрибутив вдруг отсутствует в cnddist - напишите нам, мы положим его туда.
koi8 – отмирающая ветка, чей код, выдача и все внутренние библиотеки заточены на кодировку KOI8-R. Вносятся только те дополнения, которые касаются внешнего вида и функционала админки, баги ядра, обязательные обновления портов и мелочи, которые легко скопипастить. В дальнейшем планируется полная остановка поддержки по данной ветке.
utf8 – актуальная ветка, заточенная под UTF-8.
Внутри каждой ветки: core – исходники ядра; install – скрипт установки инсталляции; plugins – плагины; samples – "готовые к употреблению" проекты, которые можно поставить, запустить и посмотреть, как они работают.