diff --git a/dibi/libs/DibiDatabaseInfo.php b/dibi/libs/DibiDatabaseInfo.php index 2c01060a..0c0e5593 100644 --- a/dibi/libs/DibiDatabaseInfo.php +++ b/dibi/libs/DibiDatabaseInfo.php @@ -85,6 +85,7 @@ class DibiDatabaseInfo extends DibiObject */ public function getTable($name) { + $name = DibiTranslator::substitute($name); $this->init(); $l = strtolower($name); if (isset($this->tables[$l])) { @@ -103,6 +104,7 @@ class DibiDatabaseInfo extends DibiObject */ public function hasTable($name) { + $name = DibiTranslator::substitute($name); $this->init(); return isset($this->tables[strtolower($name)]); } @@ -227,6 +229,7 @@ class DibiTableInfo extends DibiObject */ public function getColumn($name) { + $name = DibiTranslator::substitute($name); $this->initColumns(); $l = strtolower($name); if (isset($this->columns[$l])) { @@ -245,6 +248,7 @@ class DibiTableInfo extends DibiObject */ public function hasColumn($name) { + $name = DibiTranslator::substitute($name); $this->initColumns(); return isset($this->columns[strtolower($name)]); } @@ -396,6 +400,7 @@ class DibiResultInfo extends DibiObject */ public function getColumn($name) { + $name = DibiTranslator::substitute($name); $this->initColumns(); $l = strtolower($name); if (isset($this->names[$l])) { @@ -414,6 +419,7 @@ class DibiResultInfo extends DibiObject */ public function hasColumn($name) { + $name = DibiTranslator::substitute($name); $this->initColumns(); return isset($this->names[strtolower($name)]); } diff --git a/dibi/libs/DibiTranslator.php b/dibi/libs/DibiTranslator.php index 6e95c433..5d2a9557 100644 --- a/dibi/libs/DibiTranslator.php +++ b/dibi/libs/DibiTranslator.php @@ -564,11 +564,7 @@ final class DibiTranslator extends DibiObject */ private function delimite($value) { - if (strpos($value, ':') !== FALSE) { // provide substitution - $value = preg_replace_callback('#:([^:\s]*):#', array(__CLASS__, 'subCb'), $value); - } - - $parts = explode('.', $value); + $parts = explode('.', self::substitute($value)); foreach ($parts as & $value) { $value = $value === '*' ? '*' : $this->driver->escape($value, dibi::IDENTIFIER); } @@ -577,6 +573,20 @@ final class DibiTranslator extends DibiObject + /** + * Provides substitution. + * @return string + */ + public static function substitute($value) + { + if (strpos($value, ':') !== FALSE) { // provide substitution + return preg_replace_callback('#:([^:\s]*):#', array(__CLASS__, 'subCb'), $value); + } + return $value; + } + + + /** * Substitution callback. * @param array