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

(-)a/C4/ShelfBrowser.pm (-10 / +13 lines)
Lines 141-182 sub GetNearbyItems { Link Here
141
141
142
    # Build the query for previous and next items
142
    # Build the query for previous and next items
143
    my $prev_query = '
143
    my $prev_query = '
144
        SELECT itemnumber, biblionumber, cn_sort, itemcallnumber
144
        SELECT items.itemnumber, items.biblionumber, items.cn_sort, items.itemcallnumber
145
        FROM items
145
        FROM items
146
        LEFT JOIN biblio
147
        ON ( items.biblionumber = biblio.biblionumber )
146
        WHERE
148
        WHERE
147
            ((cn_sort = ? AND itemnumber < ?) OR cn_sort < ?) ';
149
            ((items.cn_sort = ? AND items.itemnumber < ?) OR items.cn_sort < ?) ';
148
    my $next_query = '
150
    my $next_query = '
149
        SELECT itemnumber, biblionumber, cn_sort, itemcallnumber
151
        SELECT items.itemnumber, items.biblionumber, items.cn_sort, items.itemcallnumber
150
        FROM items
152
        FROM items
153
        LEFT JOIN biblio
154
        ON ( items.biblionumber = biblio.biblionumber )
151
        WHERE
155
        WHERE
152
            ((cn_sort = ? AND itemnumber >= ?) OR cn_sort > ?) ';
156
            ((items.cn_sort = ? AND items.itemnumber >= ?) OR items.cn_sort > ?) ';
153
    my @params;
157
    my @params;
154
    my $query_cond;
158
    my $query_cond;
155
    push @params, ( $start_cn_sort, $itemnumber, $start_cn_sort );
159
    push @params, ( $start_cn_sort, $itemnumber, $start_cn_sort );
156
160
157
    if ($start_homebranch) {
161
    if ($start_homebranch) {
158
        $query_cond .= 'AND homebranch = ? ';
162
        $query_cond .= 'AND items.homebranch = ? ';
159
        push @params, $start_homebranch->{code};
163
        push @params, $start_homebranch->{code};
160
    }
164
    }
161
    if ($start_location) {
165
    if ($start_location) {
162
        $query_cond .= 'AND location = ? ';
166
        $query_cond .= 'AND items.location = ? ';
163
        push @params, $start_location->{code};
167
        push @params, $start_location->{code};
164
    }
168
    }
165
    if ($start_ccode) {
169
    if ($start_ccode) {
166
        $query_cond .= 'AND ccode = ? ';
170
        $query_cond .= 'AND items.ccode = ? ';
167
        push @params, $start_ccode->{code};
171
        push @params, $start_ccode->{code};
168
    }
172
    }
169
173
170
    my @prev_items = @{
174
    my @prev_items = @{
171
        $dbh->selectall_arrayref(
175
        $dbh->selectall_arrayref(
172
            $prev_query . $query_cond . ' ORDER BY cn_sort DESC, itemnumber DESC LIMIT ?',
176
            $prev_query . $query_cond . ' ORDER BY items.cn_sort DESC, biblio.title DESC LIMIT ?',
173
            { Slice => {} },
177
            { Slice => {} },
174
            ( @params, $gap )
178
            ( @params, $gap )
175
        )
179
        )
176
    };
180
    };
177
    my @next_items = @{
181
    my @next_items = @{
178
        $dbh->selectall_arrayref(
182
        $dbh->selectall_arrayref(
179
            $next_query . $query_cond . ' ORDER BY cn_sort, itemnumber LIMIT ?',
183
            $next_query . $query_cond . ' ORDER BY items.cn_sort, itemnumber LIMIT ?',
180
            { Slice => {} },
184
            { Slice => {} },
181
            ( @params, $gap + 1 )
185
            ( @params, $gap + 1 )
182
        )
186
        )
183
- 

Return to bug 35484