1
0
mirror of https://github.com/dg/dibi.git synced 2025-08-05 21:58:10 +02:00

DibiDatabaseInfo: provides substitutions

This commit is contained in:
David Grudl
2010-05-19 15:03:48 +02:00
parent bec559448c
commit 27d58bff40
2 changed files with 21 additions and 5 deletions

View File

@@ -85,6 +85,7 @@ class DibiDatabaseInfo extends DibiObject
*/ */
public function getTable($name) public function getTable($name)
{ {
$name = DibiTranslator::substitute($name);
$this->init(); $this->init();
$l = strtolower($name); $l = strtolower($name);
if (isset($this->tables[$l])) { if (isset($this->tables[$l])) {
@@ -103,6 +104,7 @@ class DibiDatabaseInfo extends DibiObject
*/ */
public function hasTable($name) public function hasTable($name)
{ {
$name = DibiTranslator::substitute($name);
$this->init(); $this->init();
return isset($this->tables[strtolower($name)]); return isset($this->tables[strtolower($name)]);
} }
@@ -227,6 +229,7 @@ class DibiTableInfo extends DibiObject
*/ */
public function getColumn($name) public function getColumn($name)
{ {
$name = DibiTranslator::substitute($name);
$this->initColumns(); $this->initColumns();
$l = strtolower($name); $l = strtolower($name);
if (isset($this->columns[$l])) { if (isset($this->columns[$l])) {
@@ -245,6 +248,7 @@ class DibiTableInfo extends DibiObject
*/ */
public function hasColumn($name) public function hasColumn($name)
{ {
$name = DibiTranslator::substitute($name);
$this->initColumns(); $this->initColumns();
return isset($this->columns[strtolower($name)]); return isset($this->columns[strtolower($name)]);
} }
@@ -396,6 +400,7 @@ class DibiResultInfo extends DibiObject
*/ */
public function getColumn($name) public function getColumn($name)
{ {
$name = DibiTranslator::substitute($name);
$this->initColumns(); $this->initColumns();
$l = strtolower($name); $l = strtolower($name);
if (isset($this->names[$l])) { if (isset($this->names[$l])) {
@@ -414,6 +419,7 @@ class DibiResultInfo extends DibiObject
*/ */
public function hasColumn($name) public function hasColumn($name)
{ {
$name = DibiTranslator::substitute($name);
$this->initColumns(); $this->initColumns();
return isset($this->names[strtolower($name)]); return isset($this->names[strtolower($name)]);
} }

View File

@@ -564,11 +564,7 @@ final class DibiTranslator extends DibiObject
*/ */
private function delimite($value) private function delimite($value)
{ {
if (strpos($value, ':') !== FALSE) { // provide substitution $parts = explode('.', self::substitute($value));
$value = preg_replace_callback('#:([^:\s]*):#', array(__CLASS__, 'subCb'), $value);
}
$parts = explode('.', $value);
foreach ($parts as & $value) { foreach ($parts as & $value) {
$value = $value === '*' ? '*' : $this->driver->escape($value, dibi::IDENTIFIER); $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. * Substitution callback.
* @param array * @param array