Revision 3 (by ahitrov@rambler.ru, 2010/03/24 15:19:32) The CORE
<%ARGS>
	$_URL		=> 'rate/ok.html'
	$id		=> undef
	$vote		=> undef
</%ARGS>
<%ONCE>
	use Apache::Cookie;
	use Rate::Main;
</%ONCE>
<%INIT>
	&abort404() unless ($id);
	&abort404() unless ($vote=~/^[1-5]$/);

	my $document;
	foreach (@{$state->rate->allowed_classes}) {
		$document = $keeper->get_document_by_id($id,class=>$_);
		last if $document;
	}
	&abort404() unless $document;

	my $ip		= $r->header_in("X-Real-IP");
	my (@ip_list)	= split(/\s*,\s*/, $ip);
	my $real_ip	= shift @ip_list;

	my $referer	= $r->header_in("Referer");


	my $cookie_name = $state->rate->cookie;
        my $cookie      = Apache::Cookie->new($r);
        my $cookies     = $cookie->parse;
	my $key		= $cookies->{$cookie_name} ? $cookies->{$cookie_name}->value() : $real_ip;

	#here we have user key and both values
	Rate::Main->write_one($key, $id, $vote, $real_ip, $referer, time());

        $_URL =~ s/^\///;
        $r->header_out("Location", "/".$_URL);
        $r->status(302);
        $r->send_http_header();
        $m->out('<html><body>redirect</body></html>');
        $m->abort();
</%INIT>