[interchange-cvs] interchange - racke modified lib/Vend/Table/Shadow.pm

interchange-core@icdevgroup.org interchange-core@icdevgroup.org
Mon Sep 30 16:59:01 2002


User:      racke
Date:      2002-09-30 20:58:05 GMT
Modified:  lib/Vend/Table Shadow.pm
Log:
fixed _map_column and implemented fallback option

Revision  Changes    Path
1.13      +22 -7     interchange/lib/Vend/Table/Shadow.pm


rev 1.13, prev_rev 1.12
Index: Shadow.pm
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
RCS file: /var/cvs/interchange/lib/Vend/Table/Shadow.pm,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- Shadow.pm	30 Sep 2002 11:13:41 -0000	1.12
+++ Shadow.pm	30 Sep 2002 20:58:05 -0000	1.13
@@ -1,6 +1,6 @@
 # Vend::Table::Shadow - Access a virtual "Shadow" table
 #
-# $Id: Shadow.pm,v 1.12 2002/09/30 11:13:41 racke Exp $
+# $Id: Shadow.pm,v 1.13 2002/09/30 20:58:05 racke Exp $
 #
 # Copyright (C) 2002 Stefan Hornburg (Racke) <racke@linuxia.de>
 #
@@ -20,7 +20,7 @@
 # MA  02111-1307  USA.
=20
 package Vend::Table::Shadow;
-$VERSION =3D substr(q$Revision: 1.12 $, 10);
+$VERSION =3D substr(q$Revision: 1.13 $, 10);
=20
 # TODO
 #
@@ -241,20 +241,21 @@
 	my ($s, $key, $href) =3D @_;
=20
     for (keys %$href) {
-		$href->{$_} =3D $s->_map_column($key, $_);
+		$href->{$_} =3D $s->_map_column($key, $_, 1, $href->{$_});
 	}
=20
 	$href;
 }
=20
 sub _map_column {
-	my ($s, $key, $column) =3D @_;
-	my ($map, $db, $value);
+	my ($s, $key, $column, $done, $orig) =3D @_;
+	my ($map, $mapentry, $db, $value);
=20
 	my $locale =3D $::Scratch->{mv_locale} || 'default';
=20
 	if (exists $s->[$CONFIG]->{MAP}->{$column}->{$locale}) {
-		$map =3D $s->[$CONFIG]->{MAP}->{$column}->{$locale};
+		$mapentry =3D $s->[$CONFIG]->{MAP}->{$column};
+		$map =3D $mapentry->{$locale};
 		if (exists $map->{table}) {
 			$db =3D Vend::Data::database_exists_ref($map->{table})
 					   or die "unknown table $map->{table} in mapping for column $column =
of $s->[$TABLE] for locale $locale";
@@ -266,8 +267,22 @@
 		} else {
 			$value =3D $s->field($key, $map->{column});
 		}
-		$value;
+		if (! $value && $mapentry->{fallback}) {
+			# nothing found, so we fallback to the original entry
+			if ($done) {
+				$value =3D $orig;
+			} else {
+				$value =3D $s->field($key, $column);
+			}
+		}
+	} elsif ($done) {
+		# column lookup already took place
+		$value =3D $orig;
+	} else {
+		$value =3D $s->field($key, $column);
 	}
+
+	return $value;
 }
=20
 1;