View | Details | Raw Unified | Return to bug 11430
Collapse All | Expand All

(-)a/C4/Search/History.pm (-9 / +66 lines)
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
- 

Return to bug 11430