X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FDatabase%2FDatabase.php;h=9527fefb0f46310ef2fe49dcab9baa541540361d;hb=f87eeb2f2866f21511069df9adf199bf68610c1d;hp=036e6ec2cbf6d8ad52d2cce7a4d058f42af60684;hpb=c2c563be26697169f734f2654ab491a4e8ffff2f;p=friendica.git diff --git a/src/Database/Database.php b/src/Database/Database.php index 036e6ec2cb..9527fefb0f 100644 --- a/src/Database/Database.php +++ b/src/Database/Database.php @@ -1,6 +1,6 @@ configCache = $configCache; - $this->profiler = $profiler; + $this->config = $config; $this->dbaDefinition = $dbaDefinition; $this->viewDefinition = $viewDefinition; - // Temporary NullLogger until we can fetch the logger class from the config + // Use dummy values - necessary for the first factory call of the logger itself $this->logger = new NullLogger(); + $this->profiler = new Profiler($config); $this->connect(); } + /** + * @param IManageConfigValues $config + * @param Profiler $profiler + * @param LoggerInterface $logger + * + * @return void + * + * @todo Make this method obsolet - use a clean pattern instead ... + */ + public function setDependency(IManageConfigValues $config, Profiler $profiler, LoggerInterface $logger) + { + $this->logger = $logger; + $this->profiler = $profiler; + $this->config = $config; + } + /** * Tries to connect to database * @@ -110,32 +126,32 @@ class Database $this->connected = false; $port = 0; - $serveraddr = trim($this->configCache->get('database', 'hostname') ?? ''); + $serveraddr = trim($this->config->get('database', 'hostname') ?? ''); $serverdata = explode(':', $serveraddr); $host = trim($serverdata[0]); if (count($serverdata) > 1) { $port = trim($serverdata[1]); } - if (trim($this->configCache->get('database', 'port') ?? 0)) { - $port = trim($this->configCache->get('database', 'port') ?? 0); + if (trim($this->config->get('database', 'port') ?? 0)) { + $port = trim($this->config->get('database', 'port') ?? 0); } - $user = trim($this->configCache->get('database', 'username')); - $pass = trim($this->configCache->get('database', 'password')); - $database = trim($this->configCache->get('database', 'database')); - $charset = trim($this->configCache->get('database', 'charset')); - $socket = trim($this->configCache->get('database', 'socket')); + $user = trim($this->config->get('database', 'username')); + $pass = trim($this->config->get('database', 'password')); + $database = trim($this->config->get('database', 'database')); + $charset = trim($this->config->get('database', 'charset')); + $socket = trim($this->config->get('database', 'socket')); if (!$host && !$socket || !$user) { return false; } - $persistent = (bool)$this->configCache->get('database', 'persistent'); + $persistent = (bool)$this->config->get('database', 'persistent'); - $this->pdo_emulate_prepares = (bool)$this->configCache->get('database', 'pdo_emulate_prepares'); + $this->pdo_emulate_prepares = (bool)$this->config->get('database', 'pdo_emulate_prepares'); - if (!$this->configCache->get('database', 'disable_pdo') && class_exists('\PDO') && in_array('mysql', PDO::getAvailableDrivers())) { + if (!$this->config->get('database', 'disable_pdo') && class_exists('\PDO') && in_array('mysql', PDO::getAvailableDrivers())) { $this->driver = self::PDO; if ($socket) { $connect = 'mysql:unix_socket=' . $socket; @@ -196,21 +212,6 @@ class Database $this->testmode = $test; } - /** - * Sets the logger for DBA - * - * @note this is necessary because if we want to load the logger configuration - * from the DB, but there's an error, we would print out an exception. - * So the logger gets updated after the logger configuration can be retrieved - * from the database - * - * @param LoggerInterface $logger - */ - public function setLogger(LoggerInterface $logger) - { - $this->logger = $logger; - } - /** * Sets the profiler for DBA * @@ -317,7 +318,7 @@ class Database private function logIndex(string $query) { - if (!$this->configCache->get('system', 'db_log_index')) { + if (!$this->config->get('system', 'db_log_index')) { return; } @@ -336,18 +337,18 @@ class Database return; } - $watchlist = explode(',', $this->configCache->get('system', 'db_log_index_watch')); - $denylist = explode(',', $this->configCache->get('system', 'db_log_index_denylist')); + $watchlist = explode(',', $this->config->get('system', 'db_log_index_watch')); + $denylist = explode(',', $this->config->get('system', 'db_log_index_denylist')); while ($row = $this->fetch($r)) { - if ((intval($this->configCache->get('system', 'db_loglimit_index')) > 0)) { + if ((intval($this->config->get('system', 'db_loglimit_index')) > 0)) { $log = (in_array($row['key'], $watchlist) && - ($row['rows'] >= intval($this->configCache->get('system', 'db_loglimit_index')))); + ($row['rows'] >= intval($this->config->get('system', 'db_loglimit_index')))); } else { $log = false; } - if ((intval($this->configCache->get('system', 'db_loglimit_index_high')) > 0) && ($row['rows'] >= intval($this->configCache->get('system', 'db_loglimit_index_high')))) { + if ((intval($this->config->get('system', 'db_loglimit_index_high')) > 0) && ($row['rows'] >= intval($this->config->get('system', 'db_loglimit_index_high')))) { $log = true; } @@ -358,7 +359,7 @@ class Database if ($log) { $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); @file_put_contents( - $this->configCache->get('system', 'db_log_index'), + $this->config->get('system', 'db_log_index'), DateTimeFormat::utcNow() . "\t" . $row['key'] . "\t" . $row['rows'] . "\t" . $row['Extra'] . "\t" . basename($backtrace[1]["file"]) . "\t" . @@ -533,7 +534,7 @@ class Database $orig_sql = $sql; - if ($this->configCache->get('system', 'db_callstack') !== null) { + if ($this->config->get('system', 'db_callstack') !== null) { $sql = "/*" . System::callstack() . " */ " . $sql; } @@ -738,16 +739,16 @@ class Database $this->profiler->stopRecording(); - if ($this->configCache->get('system', 'db_log')) { + if ($this->config->get('system', 'db_log')) { $stamp2 = microtime(true); $duration = (float)($stamp2 - $stamp1); - if (($duration > $this->configCache->get('system', 'db_loglimit'))) { + if (($duration > $this->config->get('system', 'db_loglimit'))) { $duration = round($duration, 3); $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); @file_put_contents( - $this->configCache->get('system', 'db_log'), + $this->config->get('system', 'db_log'), DateTimeFormat::utcNow() . "\t" . $duration . "\t" . basename($backtrace[1]["file"]) . "\t" . $backtrace[1]["line"] . "\t" . $backtrace[2]["function"] . "\t" . @@ -833,7 +834,7 @@ class Database /** * Check if data exists * - * @param string $table Table name in format schema.table (while scheme is optiona) + * @param string $table Table name in format [schema.]table * @param array $condition Array of fields for condition * * @return boolean Are there rows for that condition? @@ -1017,7 +1018,7 @@ class Database /** * Insert a row into a table. Field value objects will be cast as string. * - * @param string $table Table name in format schema.table (while scheme is optiona) + * @param string $table Table name in format [schema.]table * @param array $param parameter array * @param int $duplicate_mode What to do on a duplicated entry * @@ -1068,7 +1069,7 @@ class Database * Inserts a row with the provided data in the provided table. * If the data corresponds to an existing row through a UNIQUE or PRIMARY index constraints, it updates the row instead. * - * @param string $table Table name in format schema.table (while scheme is optiona) + * @param string $table Table name in format [schema.]table * @param array $param parameter array * @return boolean was the insert successful? * @throws \Exception @@ -1116,7 +1117,7 @@ class Database * * This function can be extended in the future to accept a table array as well. * - * @param string $table Table name in format schema.table (while scheme is optiona) + * @param string $table Table name in format [schema.]table * @return boolean was the lock successful? * @throws \Exception */ @@ -1314,7 +1315,7 @@ class Database * Only set $old_fields to a boolean value when you are sure that you will update a single row. * When you set $old_fields to "true" then $fields must contain all relevant fields! * - * @param string $table Table name in format schema.table (while scheme is optiona) + * @param string $table Table name in format [schema.]table * @param array $fields contains the fields that are updated * @param array $condition condition array with the key values * @param array|boolean $old_fields array with the old field values that are about to be replaced (true = update on duplicate, false = don't update identical fields) @@ -1380,7 +1381,7 @@ class Database /** * Retrieve a single record from a table and returns it in an associative array * - * @param string $table Table name in format schema.table (while scheme is optiona) + * @param string $table Table name in format [schema.]table * @param array $fields Array of selected fields, empty for all * @param array $condition Array of fields for condition * @param array $params Array of several parameters @@ -1406,7 +1407,7 @@ class Database /** * Select rows from a table and fills an array with the data * - * @param string $table Table name in format schema.table (while scheme is optiona) + * @param string $table Table name in format [schema.]table * @param array $fields Array of selected fields, empty for all * @param array $condition Array of fields for condition * @param array $params Array of several parameters @@ -1479,7 +1480,7 @@ class Database * * $data = DBA::select($table, $fields, $condition, $params); * - * @param string $table Table name in format schema.table (while scheme is optiona) + * @param string $table Table name in format [schema.]table * @param array $fields Array of selected fields, empty for all * @param array $condition Array of fields for condition * @param array $params Array of several parameters @@ -1519,7 +1520,7 @@ class Database /** * Counts the rows from a table satisfying the provided condition * - * @param string $table Table name in format schema.table (while scheme is optiona) + * @param string $table Table name in format [schema.]table * @param array $condition Array of fields for condition * @param array $params Array of several parameters *