summaryrefslogtreecommitdiff
path: root/lib/VNDB/Handler/ULists.pm
blob: 03c079b192eb735c1982361d27b7854621c21190 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51

package VNDB::Handler::ULists;

use strict;
use warnings;
use TUWF ':xml';
use VNDB::Func;
use VNDB::Types;


TUWF::register(
  qr{r([1-9]\d*)/list},  \&rlist_e,
  qr{xml/rlist.xml},     \&rlist_e,
);


sub rlist_e {
  my($self, $id) = @_;

  my $rid = $id;
  if(!$rid) {
    my $f = $self->formValidate({ get => 'id', required => 1, template => 'id' });
    return $self->resNotFound if $f->{_err};
    $rid = $f->{id};
  }

  my $uid = $self->authInfo->{id};
  return $self->htmlDenied() if !$uid;

  return if !$self->authCheckCode;
  my $f = $self->formValidate(
    { get => 'e', required => 1, enum => [ -1, keys %RLIST_STATUS ] },
    { get => 'ref', required => 0, default => "/r$rid" }
  );
  return $self->resNotFound if $f->{_err};

  $self->dbRListDel($uid, $rid) if $f->{e} == -1;
  $self->dbRListAdd($uid, $rid, $f->{e}) if $f->{e} >= 0;

  if($id) {
    $self->resRedirect($f->{ref}, 'temp');
  } else {
    # doesn't really matter what we return, as long as it's XML
    $self->resHeader('Content-type' => 'text/xml');
    xml;
    tag 'done', '';
  }
}

1;