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

(-)a/C4/Utils/DataTables.pm (-73 / +1 lines)
Lines 25-31 use vars qw(@ISA @EXPORT); Link Here
25
BEGIN {
25
BEGIN {
26
26
27
    @ISA        = qw(Exporter);
27
    @ISA        = qw(Exporter);
28
    @EXPORT     = qw(dt_build_orderby dt_build_having dt_get_params dt_build_query);
28
    @EXPORT     = qw(dt_build_orderby dt_build_having dt_get_params);
29
}
29
}
30
30
31
=head1 NAME
31
=head1 NAME
Lines 209-283 sub dt_get_params { Link Here
209
    return %dtparam;
209
    return %dtparam;
210
}
210
}
211
211
212
=head2 dt_build_query_simple
213
214
    my ( $query, $params )= dt_build_query_simple( $value, $field )
215
216
    This function takes a value and a field (table.field).
217
218
    It returns (undef, []) if not $value.
219
    Else, returns a SQL where string and an arrayref containing parameters
220
    for the execute method of the statement.
221
222
=cut
223
sub dt_build_query_simple {
224
    my ( $value, $field ) = @_;
225
    my $query;
226
    my @params;
227
    if( $value ) {
228
        $query .= " AND $field = ? ";
229
        push @params, $value;
230
    }
231
    return ( $query, \@params );
232
}
233
234
=head2 dt_build_query_dates
235
236
    my ( $query, $params )= dt_build_query_dates( $datefrom, $dateto, $field)
237
238
    This function takes a datefrom, dateto and a field (table.field).
239
240
    It returns (undef, []) if not $value.
241
    Else, returns a SQL where string and an arrayref containing parameters
242
    for the execute method of the statement.
243
244
=cut
245
sub dt_build_query_dates {
246
    my ( $datefrom, $dateto, $field ) = @_;
247
    my $query;
248
    my @params;
249
    if ( $datefrom ) {
250
        $query .= " AND $field >= ? ";
251
        push @params, eval { output_pref( { dt => dt_from_string( $datefrom ), dateonly => 1, dateformat => 'iso' } ); };
252
    }
253
    if ( $dateto ) {
254
        $query .= " AND $field <= ? ";
255
        push @params, eval { output_pref( { dt => dt_from_string( $dateto ), dateonly => 1, dateformat => 'iso' } ); };
256
    }
257
    return ( $query, \@params );
258
}
259
260
=head2 dt_build_query
261
262
    my ( $query, $filter ) = dt_build_query( $type, @params )
263
264
    This function takes a value and a list of parameters.
265
266
    It calls dt_build_query_dates or dt_build_query_simple function of $type.
267
268
    $type can contain 'simple' or 'range_dates'.
269
    if $type is not matched it returns undef
270
271
=cut
272
sub dt_build_query {
273
    my ( $type, @params ) = @_;
274
    if ( $type =~ m/simple/ ) {
275
        return dt_build_query_simple(@params);
276
    }
277
    elsif ( $type =~ m/range_dates/ ) {
278
        return dt_build_query_dates(@params);
279
    }
280
    return;
281
}
282
283
1;
212
1;
284
- 

Return to bug 27715