Lines 50-61
sub build_new_cookie_value {
Link Here
|
50 |
} |
50 |
} |
51 |
|
51 |
|
52 |
# To a cookie (the user is not logged in) |
52 |
# To a cookie (the user is not logged in) |
|
|
53 |
my $now = dt_from_string; |
54 |
my $id = $now->year . $now->month . $now->day . $now->hour . $now->minute . $now->second . int(rand(100)); |
53 |
push @recent_searches, { |
55 |
push @recent_searches, { |
54 |
query_desc => $query_desc, |
56 |
query_desc => $query_desc, |
55 |
query_cgi => $query_cgi, |
57 |
query_cgi => $query_cgi, |
56 |
total => "$total", |
58 |
total => "$total", |
57 |
type => $type, |
59 |
type => $type, |
58 |
time => output_pref({ dt => dt_from_string(), dateformat => 'iso' }), |
60 |
time => output_pref({ dt => $now, dateformat => 'iso' }), |
|
|
61 |
id => $id, |
59 |
}; |
62 |
}; |
60 |
|
63 |
|
61 |
shift @recent_searches if (@recent_searches > 15); |
64 |
shift @recent_searches if (@recent_searches > 15); |
Lines 65-86
sub build_new_cookie_value {
Link Here
|
65 |
|
68 |
|
66 |
sub delete { |
69 |
sub delete { |
67 |
my ( $params ) = @_; |
70 |
my ( $params ) = @_; |
|
|
71 |
my $id = $params->{id}; |
68 |
my $userid = $params->{userid}; |
72 |
my $userid = $params->{userid}; |
69 |
my $sessionid = $params->{sessionid}; |
73 |
my $sessionid = $params->{sessionid}; |
70 |
my $type = $params->{type} || q{}; |
74 |
my $type = $params->{type} || q{}; |
71 |
my $previous = $params->{previous} || 0; |
75 |
my $previous = $params->{previous} || 0; |
72 |
|
76 |
|
73 |
unless ( $userid ) { |
77 |
unless ( ref( $id ) ) { |
74 |
warn "ERROR: userid is required for history search"; |
78 |
$id = $id ? [ $id ] : []; |
|
|
79 |
} |
80 |
|
81 |
unless ( $userid or @$id ) { |
82 |
warn "ERROR: userid or id is required for history deletion"; |
75 |
return; |
83 |
return; |
76 |
} |
84 |
} |
77 |
|
85 |
|
78 |
my $dbh = C4::Context->dbh; |
86 |
my $dbh = C4::Context->dbh; |
79 |
my $query = q{ |
87 |
my $query = q{ |
80 |
DELETE FROM search_history |
88 |
DELETE FROM search_history |
81 |
WHERE userid = ? |
89 |
WHERE 1 |
82 |
}; |
90 |
}; |
83 |
|
91 |
|
|
|
92 |
$query .= q{ AND id IN ( } . join( q{,}, (q{?}) x @$id ) . q{ )} |
93 |
if @$id; |
94 |
|
95 |
$query .= q{ |
96 |
AND userid = ? |
97 |
} if $userid; |
98 |
|
84 |
if ( $sessionid ) { |
99 |
if ( $sessionid ) { |
85 |
$query .= $previous |
100 |
$query .= $previous |
86 |
? q{ AND sessionid != ?} |
101 |
? q{ AND sessionid != ?} |
Lines 92-111
sub delete {
Link Here
|
92 |
|
107 |
|
93 |
$dbh->do( |
108 |
$dbh->do( |
94 |
$query, {}, |
109 |
$query, {}, |
95 |
$userid, |
110 |
( @$id ? ( @$id ) : () ), |
|
|
111 |
( $userid ? $userid : () ), |
96 |
( $sessionid ? $sessionid : () ), |
112 |
( $sessionid ? $sessionid : () ), |
97 |
( $type ? $type : () ) |
113 |
( $type ? $type : () ) |
98 |
); |
114 |
); |
99 |
} |
115 |
} |
100 |
|
116 |
|
|
|
117 |
sub delete_from_cookie { |
118 |
my ( $params ) = @_; |
119 |
my $cookie = $params->{cookie}; |
120 |
my $id = $params->{id}; |
121 |
|
122 |
return unless $cookie; |
123 |
|
124 |
unless ( ref( $id ) ) { |
125 |
$id = $id ? [ $id ] : []; |
126 |
} |
127 |
return unless @$id; |
128 |
|
129 |
my @searches; |
130 |
if ( $cookie ){ |
131 |
$cookie = uri_unescape( $cookie ); |
132 |
if (decode_json( $cookie )) { |
133 |
@searches = @{decode_json( $cookie )} |
134 |
} |
135 |
} |
136 |
|
137 |
@searches = map { |
138 |
my $search = $_; |
139 |
( grep { $_ != $search->{id} } @$id ) ? $search : () |
140 |
} @searches; |
141 |
|
142 |
return uri_escape( encode_json( \@searches ) ); |
143 |
|
144 |
} |
145 |
|
101 |
sub get { |
146 |
sub get { |
102 |
my ( $params ) = @_; |
147 |
my ( $params ) = @_; |
|
|
148 |
my $id = $params->{id}; |
103 |
my $userid = $params->{userid}; |
149 |
my $userid = $params->{userid}; |
104 |
my $sessionid = $params->{sessionid}; |
150 |
my $sessionid = $params->{sessionid}; |
105 |
my $type = $params->{type}; |
151 |
my $type = $params->{type}; |
106 |
my $previous = $params->{previous}; |
152 |
my $previous = $params->{previous}; |
107 |
|
153 |
|
108 |
unless ( $userid ) { |
154 |
unless ( ref( $id ) ) { |
|
|
155 |
$id = $id ? [ $id ] : []; |
156 |
} |
157 |
|
158 |
unless ( $userid or @$id ) { |
109 |
warn "ERROR: userid is required for history search"; |
159 |
warn "ERROR: userid is required for history search"; |
110 |
return; |
160 |
return; |
111 |
} |
161 |
} |
Lines 113-121
sub get {
Link Here
|
113 |
my $query = q{ |
163 |
my $query = q{ |
114 |
SELECT * |
164 |
SELECT * |
115 |
FROM search_history |
165 |
FROM search_history |
116 |
WHERE userid = ? |
166 |
WHERE 1 |
117 |
}; |
167 |
}; |
118 |
|
168 |
|
|
|
169 |
$query .= q{ AND id IN ( } . join( q{,}, (q{?}) x @$id ) . q{ )} |
170 |
if @$id; |
171 |
|
172 |
$query .= q{ |
173 |
AND userid = ? |
174 |
} if $userid; |
175 |
|
119 |
if ( $sessionid ) { |
176 |
if ( $sessionid ) { |
120 |
$query .= $previous |
177 |
$query .= $previous |
121 |
? q{ AND sessionid != ?} |
178 |
? q{ AND sessionid != ?} |
Lines 128-134
sub get {
Link Here
|
128 |
my $dbh = C4::Context->dbh; |
185 |
my $dbh = C4::Context->dbh; |
129 |
my $sth = $dbh->prepare( $query ); |
186 |
my $sth = $dbh->prepare( $query ); |
130 |
$sth->execute( |
187 |
$sth->execute( |
131 |
$userid, |
188 |
( @$id ? ( @$id ) : () ), |
|
|
189 |
( $userid ? $userid : () ), |
132 |
( $sessionid ? $sessionid : () ), |
190 |
( $sessionid ? $sessionid : () ), |
133 |
( $type ? $type : () ) |
191 |
( $type ? $type : () ) |
134 |
); |
192 |
); |
135 |
- |
|
|