mirror of
https://github.com/dg/dibi.git
synced 2025-08-05 05:37:39 +02:00
DibiDatabaseInfo: provides substitutions
This commit is contained in:
@@ -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)]);
|
||||
}
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user