}
+
+if($prm_vc &&$prm_vc ne ""){
+#TODO (2020-11-05) This is a subrotine candidate. It gets too complicated. should not have both $prm_vc and $prm_vc_lst;
+ $prm_xc =~ s/^0*//g;$prm_xc_lst=~ s/^\,$//g;
+ if(!$prm_vc_lst||$prm_vc_lst==0){#} && index($prm_xc, ',') > 0){
+ $prm_vc_lst = $prm_vc;
+ }else{
+ my $f;
+ my @vc_lst = split /\,/, $prm_vc_lst; @vc_lst = uniq(sort { $a <=> $b } @vc_lst);
+ foreach my $n(@vc_lst){
+ if($n == $prm_vc){ $f=1; last; }
+ }
+ if(!$f){#not found view was clicked changing category but not adding it to vc list. Let's add it to the list.
+ $prm_vc_lst .= ",$prm_vc";
+ }
+ $prm_vc_lst=~ s/\,$//g;$prm_vc_lst=~ s/\,\,/\,/g;
+ }
+
+
+ if ($cgi->param('sss_vc') eq 'on'){
+ $sss->param('sss_vc', $prm_xc);
+ $sss->param('sss_vc_lst', $prm_xc_lst);
+ }
+ else{
+ $sss->clear('sss_vc');
+ $sss->clear('sss_vc_lst');
+ }
+
+}else{
+ $prm_vc = $sss->param('sss_vc');
+ $prm_vc_lst = $sss->param('sss_vc_lst');
+}
+
if($prm_xc &&$prm_xc ne ""){
#TODO (2020-02-23) It gets too complicated. should not have both $prm_xc and $prm_xc_lst;
$prm_xc =~ s/^0*//g;$prm_xc_lst=~ s/^\,$//g;
$sss->clear('sss_xc_lst');
}
-
}else{
$prm_xc = $sss->param('sss_xc');
$prm_xc_lst = $sss->param('sss_xc_lst');
my @keywords = split / /, $rs_keys;
if ($prm_vc && $prm_vc != $prm_xc) {
- $stmS .= $prm_aa . " ID_CAT='" . $prm_vc . "' AND";
+
+
+ if(@vc_lst){
+ $stmS .= $prm_aa;
+ foreach (@vc_lst){
+ $stmS .= " ID_CAT=$_ OR";
+ }
+ }
+ else{ $stmS .= $prm_aa . " ID_CAT=$prm_vc AND"; }
+
}
else {
if($prm_xc>0){
if(@xc_lst){
+ $stmS .= $prm_aa;
foreach (@xc_lst){
- $stmS .= $prm_aa . " ID_CAT!=$_ AND";
+ $stmS .= " ID_CAT!=$_ AND";
}
}
else{ $stmS .= $prm_aa . " ID_CAT!=$prm_xc AND"; }
}
if ($stmD) {
- $stmS = $stmS .$prm_aa . $stmD . " AND";
+ $stmS .= $stmD . " AND";
}
if (@keywords) {
foreach (@keywords) {
- $stmS = $stmS . " LOWER(LOG) REGEXP '\\b" . lc $_ . "\\b'";
+ $stmS .= " LOWER(LOG) REGEXP '\\b" . lc $_ . "\\b'";
if ( \$_ != \$keywords[-1] ) {
$stmS = $stmS . " OR ";
}
$sqlVWL = $stmS . $stmE;
}
}
- elsif ($prm_vc && $prm_vc != $prm_xc) {
+ elsif ($prm_vc) {
+
+
+ if(@vc_lst){
+ foreach (@vc_lst){
+ $stmS .= " ID_CAT=$_ OR";
+ }
+ $sqlVWL = $stmS . $prm_aa; $sqlVWL =~ s/OR$//g;
+ $sqlVWL .= $stmE;
+ }
+ elsif ($stmD) {
+ $sqlVWL = $stmS . $prm_aa . $stmD . " AND ID_CAT=" . $prm_vc . $stmE;
+ }
+ else {
+ $sqlVWL = $stmS . $prm_aa . " ID_CAT=" . $prm_vc . $stmE;
+ }
+
- if ($stmD) {
- $sqlVWL = $stmS . $prm_aa . $stmD . " AND ID_CAT=" . $prm_vc .$prm_aa. $stmE;
- }
- else {
- $sqlVWL = $stmS . $prm_aa . " ID_CAT=" . $prm_vc . $stmE;
- }
}
else {
$st -> execute() or LifeLogException->throw("Execute failed [$DBI::errstri]", show_trace=>1);
return $st;
}catch{
- LifeLogException->throw(error=>"database error encountered.", show_trace=>1);
+ LifeLogException->throw(error=>"Database error encountered.", show_trace=>1);
}
}