1 package OpenILS::WWW::EGCatLoader;
2 use strict; use warnings;
3 use Apache2::Const -compile => qw(OK DECLINED FORBIDDEN HTTP_INTERNAL_SERVER_ERROR REDIRECT HTTP_BAD_REQUEST);
4 use OpenSRF::Utils::Logger qw/$logger/;
5 use OpenILS::Utils::CStoreEditor qw/:funcs/;
6 use OpenILS::Utils::Fieldmapper;
7 use OpenILS::Application::AppUtils;
8 my $U = 'OpenILS::Application::AppUtils';
10 use constant COOKIE_ANON_CACHE => 'anoncache';
11 use constant ANON_CACHE_MYLIST => 'mylist';
13 # Retrieve the users cached records AKA 'My List'
14 # Returns an empty list if there are no cached records
16 my ($self, $with_marc_xml) = @_;
19 my $cache_key = $self->cgi->cookie(COOKIE_ANON_CACHE);
23 $list = $U->simplereq(
25 'open-ils.actor.anon_cache.get_value',
26 $cache_key, ANON_CACHE_MYLIST);
34 $self->apache->log->info("Found anon-cache list [@$list]");
37 $marc_xml = $self->fetch_marc_xml_by_id($list);
40 return ($cache_key, $list, $marc_xml);
44 # Adds a record (by id) to My List, creating a new anon cache + list if necessary.
47 my $rec_id = $self->cgi->param('record');
49 my ($cache_key, $list) = $self->fetch_mylist;
50 push(@$list, $rec_id);
52 $cache_key = $U->simplereq(
54 'open-ils.actor.anon_cache.set_value',
55 $cache_key, ANON_CACHE_MYLIST, $list);
57 return $self->mylist_action_redirect($cache_key);
60 # Removes a record ID from My List
63 my @rec_ids = $self->cgi->param('record');
65 my ($cache_key, $list) = $self->fetch_mylist;
66 return $self->mylist_action_redirect unless $cache_key;
69 foreach my $id (@$list) { push(@keep, $id) unless grep { $id eq $_ } @rec_ids; }
71 $cache_key = $U->simplereq(
73 'open-ils.actor.anon_cache.set_value',
74 $cache_key, ANON_CACHE_MYLIST, \@keep
77 return $self->mylist_action_redirect($cache_key);
80 sub load_cache_clear {
82 $self->clear_anon_cache;
83 return $self->mylist_action_redirect;
86 # Wipes the entire anonymous cache, including My List
87 sub clear_anon_cache {
91 my $cache_key = $self->cgi->cookie(COOKIE_ANON_CACHE) or return;
95 'open-ils.actor.anon_cache.delete_session', $cache_key)
100 # Called after an anon-cache / My List action occurs. Redirect
101 # to the redirect_url (cgi param) or referrer or home.
102 sub mylist_action_redirect {
104 my $cache_key = shift;
106 return $self->generic_redirect(
109 -name => COOKIE_ANON_CACHE,
111 -value => ($cache_key) ? $cache_key : '',
112 -expires => ($cache_key) ? undef : '-1h'
119 (undef, $self->ctx->{mylist}, $self->ctx->{mylist_marc_xml}) =
120 $self->fetch_mylist(1);
122 return Apache2::Const::OK;