package Bucky::SVN;
use base "Bucky";
use Bucky::Session;
sub svn_secret
{ return shift->config("SVN_SECRET"); }
sub list
{
my ($self, $count) = @_;
$count ||= 7;
return $self->db->select("svn", "ORDER BY date DESC LIMIT $count");
}
sub query_incoming
{
my ($self) = @_;
my $session = new Bucky::Session;
error() unless scalar $session->q->param && length $session->q->param("secret") && $session->q->param("secret") eq $self->svn_secret();
if ($session->q->param("user"))
{
print $self->query_add($session);
}
else
{
print "Content-type: text/html\n\n";
print $self->query_list;
}
}
sub query_list
{
my ($self) = @_;
my $svns = $self->list;
my $out .= <<__HEAD__;
__HEAD__
my $r = 0;
foreach my $svn (@$svns)
{
$r = $r ? 0 : 1;
my $user = $svn->{'user'};
$user = "default" if $user eq "root";
my $user_profile = "/cgi-bin/bucky/profile/$user";
my $user_img = "/bucky/data/profile/.thumb/am.$user.jpg";
my $date = $self->show_date($svn->{'date'});
my $revision = $svn->{'revision'};
my $comment = $svn->{'comment'};
$out .= <<__SVN__;
|
$revision: $comment
|
__SVN__
}
$out .= <<__FOOT__;
__FOOT__
return $out;
}
sub query_add
{
my ($self, $session) = @_;
my $user = $session->q->param("user");
my $revision = $session->q->param("revision");
my $comment = $session->q->param("comment");
my $date = time;
error("missing some parameters\npossible: secret, user, revision, comment\n")
unless $user && $comment && $revision
&& $self->is_number($revision) && length $user && length $comment;
my $query =
{
user => $user,
comment => $comment,
revision => $revision,
date => $date,
};
if (my $id = $self->db->insert("svn", $query))
{ success("Successfully inserted $id"); }
else
{ error("Unable to insert!"); }
}
sub success
{
my ($success) = @_;
$success ||= "NICE ONE";
print "Content-type: text/plain\n\nSUCCESS: $success";
exit;
}
sub error
{
my ($error) = @_;
$error ||= "SORRY GUY";
print "Content-type: text/plain\n\nERROR: $error";
exit;
}
1;