X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FDatabase%2FDatabase.php;h=fde5bd9f10133b20fd63f8bc4a12add3a8e77d99;hb=ec8377a8c7b519dfbd0a5f18a94f52381b7e9340;hp=6e5e147da942280a90802dcb22161fa94c4b51ae;hpb=3c70d592f642267b0397a429e83bec7b76eb1dd8;p=friendica.git diff --git a/src/Database/Database.php b/src/Database/Database.php index 6e5e147da9..fde5bd9f10 100644 --- a/src/Database/Database.php +++ b/src/Database/Database.php @@ -23,6 +23,8 @@ namespace Friendica\Database; use Friendica\Core\Config\ValueObject\Cache; use Friendica\Core\System; +use Friendica\Database\Definition\DbaDefinition; +use Friendica\Database\Definition\ViewDefinition; use Friendica\Network\HTTPException\ServiceUnavailableException; use Friendica\Util\DateTimeFormat; use Friendica\Util\Profiler; @@ -66,27 +68,28 @@ class Database protected $connection; protected $driver = ''; protected $pdo_emulate_prepares = false; - private $error = false; + private $error = ''; private $errorno = 0; private $affected_rows = 0; protected $in_transaction = false; protected $in_retrial = false; protected $testmode = false; private $relation = []; + /** @var DbaDefinition */ + protected $dbaDefinition; + /** @var ViewDefinition */ + protected $viewDefinition; - public function __construct(Cache $configCache, Profiler $profiler, LoggerInterface $logger) + public function __construct(Cache $configCache, Profiler $profiler, DbaDefinition $dbaDefinition, ViewDefinition $viewDefinition, LoggerInterface $logger) { // We are storing these values for being able to perform a reconnect - $this->configCache = $configCache; - $this->profiler = $profiler; - $this->logger = $logger; + $this->configCache = $configCache; + $this->profiler = $profiler; + $this->logger = $logger; + $this->dbaDefinition = $dbaDefinition; + $this->viewDefinition = $viewDefinition; $this->connect(); - - if ($this->isConnected()) { - // Loads DB_UPDATE_VERSION constant - DBStructure::definition($configCache->get('system', 'basepath'), false); - } } /** @@ -555,8 +558,8 @@ class Database if (count($args) == 0) { if (!$retval = $this->connection->query($this->replaceParameters($sql, $args))) { $errorInfo = $this->connection->errorInfo(); - $this->error = $errorInfo[2]; - $this->errorno = (int) $errorInfo[1]; + $this->error = (string)$errorInfo[2]; + $this->errorno = (int)$errorInfo[1]; $retval = false; $is_error = true; break; @@ -568,8 +571,8 @@ class Database /** @var $stmt mysqli_stmt|PDOStatement */ if (!$stmt = $this->connection->prepare($sql)) { $errorInfo = $this->connection->errorInfo(); - $this->error = $errorInfo[2]; - $this->errorno = (int) $errorInfo[1]; + $this->error = (string)$errorInfo[2]; + $this->errorno = (int)$errorInfo[1]; $retval = false; $is_error = true; break; @@ -588,8 +591,8 @@ class Database if (!$stmt->execute()) { $errorInfo = $stmt->errorInfo(); - $this->error = $errorInfo[2]; - $this->errorno = (int) $errorInfo[1]; + $this->error = (string)$errorInfo[2]; + $this->errorno = (int)$errorInfo[1]; $retval = false; $is_error = true; } else { @@ -607,8 +610,8 @@ class Database if (!$can_be_prepared || (count($args) == 0)) { $retval = $this->connection->query($this->replaceParameters($sql, $args)); if ($this->connection->errno) { - $this->error = $this->connection->error; - $this->errorno = $this->connection->errno; + $this->error = (string)$this->connection->error; + $this->errorno = (int)$this->connection->errno; $retval = false; $is_error = true; } else { @@ -624,8 +627,8 @@ class Database $stmt = $this->connection->stmt_init(); if (!$stmt->prepare($sql)) { - $this->error = $stmt->error; - $this->errorno = $stmt->errno; + $this->error = (string)$stmt->error; + $this->errorno = (int)$stmt->errno; $retval = false; $is_error = true; break; @@ -655,8 +658,8 @@ class Database } if (!$stmt->execute()) { - $this->error = $this->connection->error; - $this->errorno = $this->connection->errno; + $this->error = (string)$this->connection->error; + $this->errorno = (int)$this->connection->errno; $retval = false; $is_error = true; } else { @@ -723,8 +726,8 @@ class Database } } - $this->error = $error; - $this->errorno = (int) $errorno; + $this->error = (string)$error; + $this->errorno = (int)$errorno; } $this->profiler->stopRecording(); @@ -1435,7 +1438,7 @@ class Database array_walk($fields, function(&$value, $key) use ($options) { $field = $value; - $value = '`' . str_replace('`', '``', $value) . '`'; + $value = DBA::quoteIdentifier($field); if (!empty($options['group_by']) && !in_array($field, $options['group_by'])) { $value = 'ANY_VALUE(' . $value . ') AS ' . $value; @@ -1609,10 +1612,10 @@ class Database $types = []; - $tables = DBStructure::definition('', false); + $tables = $this->dbaDefinition->getAll(); if (empty($tables[$table])) { // When a matching table wasn't found we check if it is a view - $views = View::definition('', false); + $views = $this->viewDefinition->getAll(); if (empty($views[$table])) { return $fields; }