summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Schneider2011-04-13 15:35:19 +0000
committerChristian Schneider2011-04-13 15:35:19 +0000
commit8d4bd65f9d80902a8c82126648011e145f686cc1 (patch)
tree6cca9f4669e8a7a50ecf6290f259f1d922a78fdd
parent5ab78a46ebfab91a9a8fa0f7d6e4da5a7ff4d43e (diff)
downloaditools-8d4bd65f9d80902a8c82126648011e145f686cc1.tar.gz
itools-8d4bd65f9d80902a8c82126648011e145f686cc1.tar.bz2
itools-8d4bd65f9d80902a8c82126648011e145f686cc1.zip
Fix iteration over localized fields, added test for it
-rw-r--r--it_dbi.class6
-rwxr-xr-xtests/it_dbi.t10
2 files changed, 14 insertions, 2 deletions
diff --git a/it_dbi.class b/it_dbi.class
index b02960d..a8503d3 100644
--- a/it_dbi.class
+++ b/it_dbi.class
@@ -590,10 +590,14 @@ function iterate()
{
if ($this->_data = mysql_fetch_assoc($this->_result))
{
+ if ($localizedfields = $this->_localizedfields)
+ foreach ($localizedfields as $field => $dummy)
+ unset($this->$field);
+
foreach ($this->_data as $field => $value)
$this->$field = isset($value) && $this->_isint[$field] ? ($this->_data[$field] = intval($value)) : $value;
- if ($localizedfields = $this->_localizedfields)
+ if ($localizedfields)
{
$lang = T_lang();
foreach ($localizedfields as $field => $dummy)
diff --git a/tests/it_dbi.t b/tests/it_dbi.t
index c885930..4a58188 100755
--- a/tests/it_dbi.t
+++ b/tests/it_dbi.t
@@ -227,14 +227,22 @@ $dbi->query('create temporary table it_dbi_testlocalized (
$record = new it_dbi($db + array('table' => "it_dbi_testlocalized"));
$record->insert(array('foobar_de' => "deutsch", 'foobar_fr' => "franz"));
+$record->insert(array('foobar_de' => "deutsch2", 'foobar_fr' => "franz2"));
T_set_language('de');
-$record->read(1);
+$record->select(array());
+$record->iterate();
is(
array($record->_key, $record->foobar),
array(1, "deutsch"),
"localized field foobar_de"
);
+$record->iterate();
+is(
+ array($record->_key, $record->foobar),
+ array(2, "deutsch2"),
+ "localized field foobar_de iterate"
+);
T_set_language('fr');
$record->read(1);