# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
-# You should have received a copy of the GNU General Public License along with
-# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
-# Suite 330, Boston, MA 02111-1307 USA
+# You should have received a copy of the GNU General Public License along
+# with Koha; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
use strict;
-use C4::Auth qw(:DEFAULT get_session);
+use warnings;
+
+use C4::Auth qw(:DEFAULT get_session ParseSearchHistoryCookie);
use CGI;
-use Storable qw(freeze thaw);
+use JSON qw/decode_json encode_json/;
use C4::Context;
use C4::Output;
use C4::Log;
debug => 1,
});
-$template->param(dateformat => C4::Context->preference("dateformat"));
-
# If the user is not logged in, we deal with the cookie
-if ($loggedinuser == '') {
+if (!$loggedinuser) {
# Deleting search history
if ($cgi->param('action') && $cgi->param('action') eq 'delete') {
# Deleting cookie's content
my $recentSearchesCookie = $cgi->cookie(
-name => 'KohaOpacRecentSearches',
- -value => freeze([]),
+ -value => encode_json([]),
-expires => ''
);
# Showing search history
} else {
- # Getting the cookie
- my $searchcookie = $cgi->cookie('KohaOpacRecentSearches');
- if ($searchcookie && thaw(uri_unescape($searchcookie))) {
- my @recentSearches = @{thaw(uri_unescape($searchcookie))};
+ my @recentSearches = ParseSearchHistoryCookie($cgi);
if (@recentSearches) {
# As the dates are stored as unix timestamps, let's do some formatting
$template->param(recentSearches => \@recentSearches);
}
- }
}
} else {
# And if the user is logged in, we deal with the database
my $dateformat = $date->DHTMLcalendar() . " %H:%i:%S"; # Current syspref date format + standard time format
# Getting the data with date format work done by mysql
- my $query = "SELECT userid, sessionid, query_desc, query_cgi, total, DATE_FORMAT(time, \"$dateformat\") as time FROM search_history WHERE userid = ? AND sessionid = ?";
+ my $query = "SELECT userid, sessionid, query_desc, query_cgi, total, time FROM search_history WHERE userid = ? AND sessionid = ?";
my $sth = $dbh->prepare($query);
$sth->execute($loggedinuser, $cgi->cookie("CGISESSID"));
my $searches = $sth->fetchall_arrayref({});
# If at least one search from previous sessions has been performed
if ($sth->fetchrow_array > 0) {
- $query = "SELECT userid, sessionid, query_desc, query_cgi, total, DATE_FORMAT(time, \"$dateformat\") as time FROM search_history WHERE userid = ? AND sessionid != ?";
+ $query = "SELECT userid, sessionid, query_desc, query_cgi, total, time FROM search_history WHERE userid = ? AND sessionid != ?";
$sth = $dbh->prepare($query);
$sth->execute($loggedinuser, $cgi->cookie("CGISESSID"));
my $previoussearches = $sth->fetchall_arrayref({});