$limit_clause = "LIMIT $outer_limit";
$offset_clause = "OFFSET $offset" if (defined $offset and int($offset) > 0);
- my (@types,@forms,@lang,@aud,@lit_form);
- my ($t_filter, $f_filter) = ('','');
+ my (@types,@forms,@lang,@aud,@lit_form,@vformats);
+ my ($t_filter, $f_filter, $v_filter) = ('','','');
my ($a_filter, $l_filter, $lf_filter) = ('','','');
- my ($ot_filter, $of_filter) = ('','');
+ my ($ot_filter, $of_filter, $ov_filter) = ('','','');
my ($oa_filter, $ol_filter, $olf_filter) = ('','','');
if (my $a = $args{audience}) {
$ot_filter = ' AND ord.item_type IN ('.join(',',map{'?'}@types).')';
}
+ if (my $v = $args{vr_format}) {
+ $v = [$v] if (!ref($v));
+ @vformats = @$v;
+
+ $v_filter = ' AND rd.vr_format IN ('.join(',',map{'?'}@vformats).')';
+ $ov_filter = ' AND ord.vr_format IN ('.join(',',map{'?'}@vformats).')';
+ }
+
# XXX legacy format and item type support
if ($args{format}) {
AND ord.record = mrs.source
$ot_filter
$of_filter
+ $ov_filter
$oa_filter
$ol_filter
$olf_filter
AND src.transcendant IS TRUE
$ot_filter
$of_filter
+ $ov_filter
$oa_filter
$ol_filter
$olf_filter
AND src.transcendant IS TRUE
$ot_filter
$of_filter
+ $ov_filter
$oa_filter
$ol_filter
$olf_filter
)
$ot_filter
$of_filter
+ $ov_filter
$oa_filter
$ol_filter
$olf_filter
my $recs = $_cdbi->{title}->db_Main->selectall_arrayref(
$select, {},
@bonus_values,
- @types, @forms, @aud, @lang, @lit_form,
- @types, @forms, @aud, @lang, @lit_form,
+ @types, @forms, @vformats, @aud, @lang, @lit_form,
+ @types, @forms, @vformats, @aud, @lang, @lit_form,
# ($self->api_name =~ /staff/o ? (@types, @forms, @aud, @lang, @lit_form) : () )
);
$limit_clause = "LIMIT $outer_limit";
$offset_clause = "OFFSET $offset" if (defined $offset and int($offset) > 0);
- my (@types,@forms,@lang,@aud,@lit_form);
- my ($t_filter, $f_filter) = ('','');
+ my (@types,@forms,@lang,@aud,@lit_form,@vformats);
+ my ($t_filter, $f_filter, $v_filter) = ('','','');
my ($a_filter, $l_filter, $lf_filter) = ('','','');
- my ($ot_filter, $of_filter) = ('','');
+ my ($ot_filter, $of_filter, $ov_filter) = ('','','');
my ($oa_filter, $ol_filter, $olf_filter) = ('','','');
if (my $a = $args{audience}) {
$ot_filter = ' AND ord.item_type IN ('.join(',',map{'?'}@types).')';
}
+ if (my $v = $args{vr_format}) {
+ $v = [$v] if (!ref($v));
+ @vformats = @$v;
+
+ $v_filter = ' AND rd.vr_format IN ('.join(',',map{'?'}@vformats).')';
+ $ov_filter = ' AND ord.vr_format IN ('.join(',',map{'?'}@vformats).')';
+ }
+
# XXX legacy format and item type support
if ($args{format}) {
my ($t, $f) = split '-', $args{format};
$join_table_list
$t_filter
$f_filter
+ $v_filter
$a_filter
$l_filter
$lf_filter
my $recs = $_cdbi->{title}->db_Main->selectall_arrayref(
$select, {},
- @bonus_values, @types, @forms, @aud, @lang, @lit_form
+ @bonus_values, @types, @forms, @vformats, @aud, @lang, @lit_form
);
$log->debug("Search yielded ".scalar(@$recs)." results.",DEBUG);