From 84172591d5fd3dff6d6e18eebf4f05629836fac9 Mon Sep 17 00:00:00 2001 From: David Grudl Date: Wed, 7 Jan 2009 17:30:01 +0000 Subject: [PATCH] - added %ex modifier for keys in arrays --- dibi/libs/DibiTranslator.php | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/dibi/libs/DibiTranslator.php b/dibi/libs/DibiTranslator.php index 0de40969..fcada269 100644 --- a/dibi/libs/DibiTranslator.php +++ b/dibi/libs/DibiTranslator.php @@ -208,10 +208,18 @@ final class DibiTranslator extends DibiObject } else foreach ($value as $k => $v) { if (is_string($k)) { $pair = explode('%', $k, 2); // split into identifier & modifier - $k = $this->delimite($pair[0]); - $v = $this->formatValue($v, isset($pair[1]) ? $pair[1] : FALSE); - $op = isset($pair[1]) && $pair[1] === 'l' ? 'IN' : ($v === 'NULL' ? 'IS' : '='); - $vx[] = $k . ' ' . $op . ' ' . $v; + $k = $this->delimite($pair[0]) . ' '; + if (!isset($pair[1])) { + $v = $this->formatValue($v, FALSE); + $vx[] = $k . ($v === 'NULL' ? 'IS ' : '= ') . $v; + + } elseif ($pair[1] === 'ex') { + $vx[] = $k . $this->formatValue($v, 'sql'); + + } else { + $v = $this->formatValue($v, $pair[1]); + $vx[] = $k . ($pair[1] === 'l' ? 'IN ' : ($v === 'NULL' ? 'IS ' : '= ')) . $v; + } } else { $vx[] = $this->formatValue($v, 'sql');