cvsuser     02/01/30 11:47:21

  Modified:    P5EEx/Blue/P5EEx/Blue/Repository DBI.pm
  Log:
  variable renaming. {no_auto_in_param}. !expr! parameter values.
  
  Revision  Changes    Path
  1.6       +32 -15    p5ee/P5EEx/Blue/P5EEx/Blue/Repository/DBI.pm
  
  Index: DBI.pm
  ===================================================================
  RCS file: /cvs/public/p5ee/P5EEx/Blue/P5EEx/Blue/Repository/DBI.pm,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -w -r1.5 -r1.6
  --- DBI.pm    25 Jan 2002 19:24:28 -0000      1.5
  +++ DBI.pm    30 Jan 2002 19:47:21 -0000      1.6
  @@ -1,13 +1,13 @@
   
   ######################################################################
  -## File: $Id: DBI.pm,v 1.5 2002/01/25 19:24:28 spadkins Exp $
  +## File: $Id: DBI.pm,v 1.6 2002/01/30 19:47:21 spadkins Exp $
   ######################################################################
   
   use P5EEx::Blue::P5EE;
   use P5EEx::Blue::Repository;
   
   package P5EEx::Blue::Repository::DBI;
  -$VERSION = do { my @r=(q$Revision: 1.5 $=~/\d+/g); sprintf "%d."."%02d"x$#r,@r};
  +$VERSION = do { my @r=(q$Revision: 1.6 $=~/\d+/g); sprintf "%d."."%02d"x$#r,@r};
   
   use P5EEx::Blue::Repository;
   @ISA = ( "P5EEx::Blue::Repository" );
  @@ -380,7 +380,12 @@
               }
               else {
                   $value = $paramvalues->{$colstr};
  +                if ($value =~ s/^!expr!//) {
  +                    $quoted = 0;
  +                }
  +                else {
                   $quoted = (defined $column_def->{quoted}) ? ($column_def->{quoted}) 
: ($value !~ /^-?[0-9.]+$/);
  +                }
                   if ($quoted) {
                       $value =~ s/'/\\'/g;
                       $value = ($sqlop eq "like") ? "'%$value%'" : "'$value'";
  @@ -421,14 +426,14 @@
   #               $startrow, $endrow,
   #               \@sortdircols, \@keycolidx, \@writeable, \@columntype, 
\@summarykeys);
   sub mk_select_joined_rows_sql {
  -    my ($self, $table, $cols, $params, $paramvaluehref, $ordercols, $startrow, 
$endrow,
  +    my ($self, $table, $cols, $params, $paramvalues, $ordercols, $startrow, $endrow,
           $sortdircols, $keycolidx, $writeref, $reptyperef, $summarykeys) = @_;
   
       if ($P5EEx::Blue::Repository::DEBUG && 
P5EEx::Blue::Repository->dbg(ref($self),"mk_select_joined_rows_sql")) {
  -        P5EEx::Blue::Repository->dbgprint("mk_select_joined_rows_sql($table, 
col=$cols, p=$params, pv=$paramvaluehref, oc=$ordercols start=$startrow end=$endrow 
dir=$sortdircols, key=$keycolidx, w=$writeref, typ=$reptyperef, sum=$summarykeys)");
  +        P5EEx::Blue::Repository->dbgprint("mk_select_joined_rows_sql($table, 
col=$cols, p=$params, pv=$paramvalues, oc=$ordercols start=$startrow end=$endrow 
dir=$sortdircols, key=$keycolidx, w=$writeref, typ=$reptyperef, sum=$summarykeys)");
           P5EEx::Blue::Repository->dbgprint("   cols=[",     join(",",@$cols),     
"]") if ($cols);
           P5EEx::Blue::Repository->dbgprint("   params=[",      join(",",@$params),   
   "]") if ($params);
  -        P5EEx::Blue::Repository->dbgprint("   
paramvaluehref=[",join(",",%$paramvaluehref),"]") if ($paramvaluehref);
  +        P5EEx::Blue::Repository->dbgprint("   
paramvalues=[",join(",",%$paramvalues),"]") if ($paramvalues);
           P5EEx::Blue::Repository->dbgprint("   ordercols=[",   
join(",",@$ordercols),   "]") if ($ordercols);
           P5EEx::Blue::Repository->dbgprint("   sortdircols=[", 
join(",",@$sortdircols), "]") if ($sortdircols);
           P5EEx::Blue::Repository->dbgprint("   keycolidx=[",  join(",",@$keycolidx), 
 "]") if ($keycolidx);
  @@ -649,6 +654,8 @@
       # create initial where conditions for the selected rows
       ############################################################
   
  +    #print $self->{context}->dump(), "\n";
  +
       my %op = (
           'contains' => 'like',
           'eq'       => '=',
  @@ -661,14 +668,14 @@
       );
   
       my ($where_condition, @join_conditions, @criteria_conditions, $param, $sqlop, 
$paramvalue);
  -    if (!defined $params && ref($paramvaluehref) eq "HASH") {
  -        $params = [ keys %$paramvaluehref ];
  +    if (!defined $params && ref($paramvalues) eq "HASH") {
  +        $params = [ keys %$paramvalues ];
       }
       for ($idx = 0; $idx <= $#$params; $idx++) {
   
           $param = $params->[$idx];
           next if (!defined $param || $param eq "");
  -        next if (!defined $paramvaluehref || $paramvaluehref->{$param} eq "");
  +        next if (!defined $paramvalues || $paramvalues->{$param} eq "");
   
           $column = $param;
   
  @@ -712,12 +719,22 @@
   
           next if (!defined $column_def);  # skip if the column is unknown
   
  -        if (! defined $paramvaluehref->{$param}) {
  +        if (! defined $paramvalues->{$param}) {
               $paramvalue = "?";   # TODO: make this work with the "contains" operator
           }
           else {
  -            $paramvalue = $paramvaluehref->{$param};
  +            $paramvalue = $paramvalues->{$param};
  +
  +            next if (defined $table_def->{param}{$param}{all_value} &&
  +                     $paramvalue eq $table_def->{param}{$param}{all_value});
  +
  +            if ($paramvalue =~ s/^!expr!//) {
  +                $quoted = 0;
  +            }
  +            else {
               $quoted = (defined $column_def->{quoted}) ? ($column_def->{quoted}) : 
($paramvalue !~ /^-?[0-9.]+$/);
  +            }
  +
               if ($sqlop eq "like") {
                   $paramvalue =~ s/'/\\'/g;
                   $paramvalue = "'%$paramvalue%'";
  @@ -725,7 +742,7 @@
               elsif ($sqlop eq "in" || $sqlop eq "=") {
                   if ($quoted) {
                       $paramvalue =~ s/'/\\'/g;
  -                    if ($paramvalue =~ /,/) {
  +                    if ($paramvalue =~ /,/ && ! 
$table_def->{param}{$param}{no_auto_in_param}) {
                           $paramvalue =~ s/,/','/g;
                           $paramvalue = "('$paramvalue')";
                           $sqlop = "in";
  @@ -736,7 +753,7 @@
                       }
                   }
                   else {
  -                    if ($paramvalue =~ /,/) {
  +                    if ($paramvalue =~ /,/ && ! 
$table_def->{param}{$param}{no_auto_in_param}) {
                           $paramvalue = "($paramvalue)";
                           $sqlop = "in";
                       }
  @@ -863,7 +880,7 @@
           $sql .= "where " . join("\n  and ",@join_conditions) . "\n";
       }
       $critsense = "AND";
  -    $critsense = $paramvaluehref->{"_query.critsense"} if (defined $paramvaluehref);
  +    $critsense = $paramvalues->{"_query.critsense"} if (defined $paramvalues);
       $critsense = "AND" if (!defined $critsense);
       if ($#criteria_conditions >= 0) {
           $sql .= ($#join_conditions == -1 ? "where " : "  and ");
  
  
  


Reply via email to