[interchange-cvs] interchange - racke modified lib/Vend/Table/Shadow.pm
interchange-core@icdevgroup.org
interchange-core@icdevgroup.org
Tue Apr 22 04:08:01 2003
User: racke
Date: 2003-04-22 08:07:36 GMT
Modified: lib/Vend/Table Shadow.pm
Log:
special treatment of list=1 within query method
Revision Changes Path
1.35 +16 -5 interchange/lib/Vend/Table/Shadow.pm
rev 1.35, prev_rev 1.34
Index: Shadow.pm
===================================================================
RCS file: /anon_cvs/repository/interchange/lib/Vend/Table/Shadow.pm,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- Shadow.pm 17 Apr 2003 16:19:12 -0000 1.34
+++ Shadow.pm 22 Apr 2003 08:07:36 -0000 1.35
@@ -1,6 +1,6 @@
# Vend::Table::Shadow - Access a virtual "Shadow" table
#
-# $Id: Shadow.pm,v 1.34 2003/04/17 16:19:12 racke Exp $
+# $Id: Shadow.pm,v 1.35 2003/04/22 08:07:36 racke Exp $
#
# Copyright (C) 2002-2003 Stefan Hornburg (Racke) <racke@linuxia.de>
#
@@ -20,7 +20,7 @@
# MA 02111-1307 USA.
package Vend::Table::Shadow;
-$VERSION = substr(q$Revision: 1.34 $, 10);
+$VERSION = substr(q$Revision: 1.35 $, 10);
# TODO
#
@@ -316,15 +316,26 @@
die "key not in query, cannot handle";
}
# replace shadowed fields
- my ($pos, $name, $row, $map_entry);
- my $result = $s->[$OBJ]->query($opt, $text, @arg);
+ my ($pos, $name, $row, $map_entry, $list, @qa, $result);
+ if ($list = $opt->{list}) {
+ $opt->{list} = 0;
+ @qa = $s->[$OBJ]->query($opt, $text, @arg);
+ $result = $qa[0];
+ } else {
+ $result = $s->[$OBJ]->query($opt, $text, @arg);
+ }
for $row (@$result) {
for $pos (@map_matches) {
($name, $map_entry) = @{$map_entries[$pos]};
$row->[$pos] = $s->_map_column($row->[$keypos], $name, 1, $row->[$pos], $map_entry);
}
}
- return $result;
+ if ($list) {
+ $opt->{list} = 1;
+ return Vend::Interpolate::tag_sql_list($text, $result, $qa[1], $opt, $qa[2]);
+ } else {
+ return $result;
+ }
}
}
}