]> git.mxchange.org Git - friendica.git/commitdiff
Rewrite:
authorRoland Häder <roland@mxchange.org>
Tue, 21 Jun 2022 09:44:23 +0000 (11:44 +0200)
committerRoland Häder <roland@mxchange.org>
Tue, 21 Jun 2022 11:47:38 +0000 (13:47 +0200)
- avoid having array|string for $table to have a "string" type-hint for $table
- you now have to do it for yourself by giving 'schema.table' as parameter

src/Content/BoundariesPager.php
src/Content/Pager.php
src/Core/UserImport.php
src/Database/DBA.php
src/Database/DBStructure.php
src/Database/Database.php
src/Module/Admin/Summary.php
src/Util/PidFile.php

index a8b873f22aa2203a4ef3994e375c749f5036a796..dbfa4ca73bdc5dec6da69e4443719960f70a0c43 100644 (file)
@@ -130,7 +130,7 @@ class BoundariesPager extends Pager
                return Renderer::replaceMacros($tpl, ['pager' => $data]);
        }
 
-       public function renderFull($itemCount)
+       public function renderFull(int $itemCount)
        {
                throw new \BadMethodCallException();
        }
index bf5a5f691442032346a97ee0e9eda73efcb70375..4e8a760a178bceeceaa08b6bf06085ef4ddf8fd8 100644 (file)
@@ -160,7 +160,7 @@ class Pager
         * @return string HTML string of the pager
         * @throws \Exception
         */
-       public function renderMinimal(int $itemCount)
+       public function renderMinimal(int $itemCount): string
        {
                $displayedItemCount = max(0, intval($itemCount));
 
@@ -203,7 +203,7 @@ class Pager
         * @return string HTML string of the pager
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
-       public function renderFull($itemCount)
+       public function renderFull(int $itemCount): string
        {
                $totalItemCount = max(0, intval($itemCount));
 
index b6ecd74a244e631b467e2396e1fb8ba0820b6dc0..339ce0b65b0aaac1a7b33fc45ec43f47523a012d 100644 (file)
@@ -86,7 +86,7 @@ class UserImport
         * @return array|bool
         * @throws \Exception
         */
-       private static function dbImportAssoc($table, $arr)
+       private static function dbImportAssoc(string $table, array $arr)
        {
                if (isset($arr['id'])) {
                        unset($arr['id']);
@@ -105,10 +105,11 @@ class UserImport
         * Import account file exported from mod/uexport
         *
         * @param array $file array from $_FILES
+        * @return void
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         * @throws \ImagickException
         */
-       public static function importAccount($file)
+       public static function importAccount(array $file)
        {
                Logger::notice("Start user import from " . $file['tmp_name']);
                /*
index a797d3235b1a84464733afcf06390a41ef0e57e7..cb501596878a1dc4e9c290699007655e6063ce50 100644 (file)
@@ -289,14 +289,13 @@ class DBA
        /**
         * Insert a row into a table
         *
-        * @param string|array $table          Table name or array [schema => table]
-        * @param array        $param          parameter array
-        * @param int          $duplicate_mode What to do on a duplicated entry
-        *
+        * @param string $table          Table name or array [schema => table]
+        * @param array  $param          parameter array
+        * @param int    $duplicate_mode What to do on a duplicated entry
         * @return boolean was the insert successful?
         * @throws \Exception
         */
-       public static function insert($table, array $param, int $duplicate_mode = Database::INSERT_DEFAULT): bool
+       public static function insert(string $table, array $param, int $duplicate_mode = Database::INSERT_DEFAULT): bool
        {
                return DI::dba()->insert($table, $param, $duplicate_mode);
        }
@@ -305,13 +304,12 @@ class DBA
         * 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|array $table Table name or array [schema => table]
-        * @param array        $param parameter array
-        *
+        * @param string $table Table name or array [schema => table]
+        * @param array  $param parameter array
         * @return boolean was the insert successful?
         * @throws \Exception
         */
-       public static function replace($table, array $param): bool
+       public static function replace(string $table, array $param): bool
        {
                return DI::dba()->replace($table, $param);
        }
@@ -331,12 +329,11 @@ class DBA
         *
         * This function can be extended in the future to accept a table array as well.
         *
-        * @param string|array $table Table name or array [schema => table]
-        *
+        * @param string $table Table name or array [schema => table]
         * @return boolean was the lock successful?
         * @throws \Exception
         */
-       public static function lock($table): bool
+       public static function lock(string $table): bool
        {
                return DI::dba()->lock($table);
        }
@@ -385,13 +382,13 @@ class DBA
        /**
         * Delete a row from a table
         *
-        * @param string|array $table      Table name
-        * @param array        $conditions Field condition(s)
+        * @param string $table      Table name
+        * @param array  $conditions Field condition(s)
         *
         * @return boolean was the delete successful?
         * @throws \Exception
         */
-       public static function delete($table, array $conditions, array $options = []): bool
+       public static function delete(string $table, array $conditions, array $options = []): bool
        {
                return DI::dba()->delete($table, $conditions, $options);
        }
@@ -417,7 +414,7 @@ class DBA
         * 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|array  $table      Table name or array [schema => table]
+        * @param string        $table      Table name or array [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)
@@ -426,7 +423,7 @@ class DBA
         * @return boolean was the update successfull?
         * @throws \Exception
         */
-       public static function update($table, array $fields, array $condition, $old_fields = [], array $params = []): bool
+       public static function update(string $table, array $fields, array $condition, $old_fields = [], array $params = []): bool
        {
                return DI::dba()->update($table, $fields, $condition, $old_fields, $params);
        }
@@ -467,10 +464,10 @@ class DBA
        /**
         * Select rows from a table
         *
-        * @param string|array $table     Table name or array [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
+        * @param string $table     Table name or array [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
         *
         * @return boolean|object
         *
@@ -487,7 +484,7 @@ class DBA
         * $data = DBA::select($table, $fields, $condition, $params);
         * @throws \Exception
         */
-       public static function select($table, array $fields = [], array $condition = [], array $params = [])
+       public static function select(string $table, array $fields = [], array $condition = [], array $params = [])
        {
                return DI::dba()->select($table, $fields, $condition, $params);
        }
@@ -495,9 +492,9 @@ class DBA
        /**
         * Counts the rows from a table satisfying the provided condition
         *
-        * @param string|array $table     Table name or array [schema => table]
-        * @param array        $condition array of fields for condition
-        * @param array        $params    Array of several parameters
+        * @param string $table     Table name or array [schema => table]
+        * @param array  $condition array of fields for condition
+        * @param array  $params    Array of several parameters
         *
         * @return int
         *
@@ -511,7 +508,7 @@ class DBA
         * $count = DBA::count($table, $condition);
         * @throws \Exception
         */
-       public static function count($table, array $condition = [], array $params = []): int
+       public static function count(string $table, array $condition = [], array $params = []): int
        {
                return DI::dba()->count($table, $condition, $params);
        }
@@ -524,15 +521,11 @@ class DBA
         * - [table1, table2, ...]
         * - [schema1 => table1, schema2 => table2, table3, ...]
         *
-        * @param string|array $tables
+        * @param array $tables Table names
         * @return string
         */
-       public static function buildTableString($tables): string
+       public static function buildTableString(array $tables): string
        {
-               if (is_string($tables)) {
-                       $tables = [$tables];
-               }
-
                $quotedTables = [];
 
                foreach ($tables as $schema => $table) {
index 3c82986fa914f706f79771a3732f658d1e174a77..8f68cc2b0a9cde14c214d0bc0dc90bac7859a2ec 100644 (file)
@@ -465,19 +465,19 @@ class DBStructure
        private static function createIndex(string $indexName, array $fieldNames, string $method = 'ADD')
        {
                $method = strtoupper(trim($method));
-               if ($method != "" && $method != "ADD") {
+               if ($method != '' && $method != 'ADD') {
                        throw new Exception("Invalid parameter 'method' in self::createIndex(): '$method'");
                }
 
-               if (in_array($fieldNames[0], ["UNIQUE", "FULLTEXT"])) {
+               if (in_array($fieldNames[0], ['UNIQUE', 'FULLTEXT'])) {
                        $index_type = array_shift($fieldNames);
                        $method .= " " . $index_type;
                }
 
                $names = "";
                foreach ($fieldNames as $fieldName) {
-                       if ($names != "") {
-                               $names .= ",";
+                       if ($names != '') {
+                               $names .= ',';
                        }
 
                        if (preg_match('|(.+)\((\d+)\)|', $fieldName, $matches)) {
@@ -487,7 +487,7 @@ class DBStructure
                        }
                }
 
-               if ($indexName == "PRIMARY") {
+               if ($indexName == 'PRIMARY') {
                        return sprintf("%s PRIMARY KEY(%s)", $method, $names);
                }
 
@@ -1106,7 +1106,7 @@ class DBStructure
         */
        public static function existsForeignKeyForField(string $table, string $field): bool
        {
-               return DBA::exists(['INFORMATION_SCHEMA' => 'KEY_COLUMN_USAGE'],
+               return DBA::exists('INFORMATION_SCHEMA.KEY_COLUMN_USAGE',
                        ["`TABLE_SCHEMA` = ? AND `TABLE_NAME` = ? AND `COLUMN_NAME` = ? AND `REFERENCED_TABLE_SCHEMA` IS NOT NULL",
                        DBA::databaseName(), $table, $field]);
        }
@@ -1126,7 +1126,7 @@ class DBStructure
 
                $condition = ['table_schema' => DBA::databaseName(), 'table_name' => $table];
 
-               return DBA::exists(['information_schema' => 'tables'], $condition);
+               return DBA::exists('information_schema.tables', $condition);
        }
 
        /**
@@ -1181,9 +1181,9 @@ class DBStructure
 
                if (self::existsTable('user') && !DBA::exists('user', ['uid' => 0])) {
                        $user = [
-                               "verified" => true,
-                               "page-flags" => User::PAGE_FLAGS_SOAPBOX,
-                               "account-type" => User::ACCOUNT_TYPE_RELAY,
+                               'verified' => true,
+                               'page-flags' => User::PAGE_FLAGS_SOAPBOX,
+                               'account-type' => User::ACCOUNT_TYPE_RELAY,
                        ];
                        DBA::insert('user', $user);
                        $lastid = DBA::lastInsertId();
@@ -1287,8 +1287,10 @@ class DBStructure
        {
                $isUpdate = false;
 
-               $processes = DBA::select(['information_schema' => 'processlist'], ['info'],
-                       ['db' => DBA::databaseName(), 'command' => ['Query', 'Execute']]);
+               $processes = DBA::select('information_schema.processlist', ['info'], [
+                       'db' => DBA::databaseName(),
+                       'command' => ['Query', 'Execute']
+               ]);
 
                while ($process = DBA::fetch($processes)) {
                        $parts = explode(' ', $process['info']);
index 8c2cd0241d7c9d686ed14ca0613380ae23bbbb43..fcc6f6337908b48054afff2937e96ce0d026aa2c 100644 (file)
@@ -820,13 +820,13 @@ class Database
        /**
         * Check if data exists
         *
-        * @param string|array $table     Table name or array [schema => table]
-        * @param array        $condition array of fields for condition
+        * @param string $table     Table name or array [schema => table]
+        * @param array  $condition Array of fields for condition
         *
         * @return boolean Are there rows for that condition?
         * @throws \Exception
         */
-       public function exists($table, array $condition): bool
+       public function exists(string $table, array $condition): bool
        {
                if (empty($table)) {
                        return false;
@@ -1003,14 +1003,14 @@ class Database
        /**
         * Insert a row into a table. Field value objects will be cast as string.
         *
-        * @param string|array $table          Table name or array [schema => table]
-        * @param array        $param          parameter array
-        * @param int          $duplicate_mode What to do on a duplicated entry
+        * @param string $table          Table name or array [schema => table]
+        * @param array  $param          parameter array
+        * @param int    $duplicate_mode What to do on a duplicated entry
         *
         * @return boolean was the insert successful?
         * @throws \Exception
         */
-       public function insert($table, array $param, int $duplicate_mode = self::INSERT_DEFAULT): bool
+       public function insert(string $table, array $param, int $duplicate_mode = self::INSERT_DEFAULT): bool
        {
                if (empty($table) || empty($param)) {
                        $this->logger->info('Table and fields have to be set');
@@ -1019,7 +1019,7 @@ class Database
 
                $param = $this->castFields($table, $param);
 
-               $table_string = DBA::buildTableString($table);
+               $table_string = DBA::buildTableString([$table]);
 
                $fields_string = implode(', ', array_map([DBA::class, 'quoteIdentifier'], array_keys($param)));
 
@@ -1054,13 +1054,12 @@ 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|array $table Table name or array [schema => table]
-        * @param array        $param parameter array
-        *
+        * @param string $table Table name or array [schema => table]
+        * @param array  $param parameter array
         * @return boolean was the insert successful?
         * @throws \Exception
         */
-       public function replace($table, array $param): bool
+       public function replace(string $table, array $param): bool
        {
                if (empty($table) || empty($param)) {
                        $this->logger->info('Table and fields have to be set');
@@ -1069,7 +1068,7 @@ class Database
 
                $param = $this->castFields($table, $param);
 
-               $table_string = DBA::buildTableString($table);
+               $table_string = DBA::buildTableString([$table]);
 
                $fields_string = implode(', ', array_map([DBA::class, 'quoteIdentifier'], array_keys($param)));
 
@@ -1103,12 +1102,11 @@ class Database
         *
         * This function can be extended in the future to accept a table array as well.
         *
-        * @param string|array $table Table name or array [schema => table]
-        *
+        * @param string $table Table name or array [schema => table]
         * @return boolean was the lock successful?
         * @throws \Exception
         */
-       public function lock($table): bool
+       public function lock(string $table): bool
        {
                // See here: https://dev.mysql.com/doc/refman/5.7/en/lock-tables-and-transactions.html
                if ($this->driver == self::PDO) {
@@ -1118,7 +1116,7 @@ class Database
                        $this->connection->autocommit(false);
                }
 
-               $success = $this->e("LOCK TABLES " . DBA::buildTableString($table) . " WRITE");
+               $success = $this->e("LOCK TABLES " . DBA::buildTableString([$table]) . " WRITE");
 
                if ($this->driver == self::PDO) {
                        $this->connection->setAttribute(PDO::ATTR_EMULATE_PREPARES, $this->pdo_emulate_prepares);
@@ -1265,14 +1263,14 @@ class Database
         * @return boolean was the delete successful?
         * @throws \Exception
         */
-       public function delete($table, array $conditions): bool
+       public function delete(string $table, array $conditions): bool
        {
                if (empty($table) || empty($conditions)) {
                        $this->logger->info('Table and conditions have to be set');
                        return false;
                }
 
-               $table_string = DBA::buildTableString($table);
+               $table_string = DBA::buildTableString([$table]);
 
                $condition_string = DBA::buildCondition($conditions);
 
@@ -1302,7 +1300,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|array  $table      Table name or array [schema => table]
+        * @param string        $table      Table name or array [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)
@@ -1312,7 +1310,7 @@ class Database
         * @throws \Exception
         * @todo Implement "bool $update_on_duplicate" to avoid mixed type for $old_fields
         */
-       public function update($table, array $fields, array $condition, $old_fields = [], array $params = [])
+       public function update(string $table, array $fields, array $condition, $old_fields = [], array $params = [])
        {
                if (empty($table) || empty($fields) || empty($condition)) {
                        $this->logger->info('Table, fields and condition have to be set');
@@ -1345,7 +1343,7 @@ class Database
 
                $fields = $this->castFields($table, $fields);
 
-               $table_string = DBA::buildTableString($table);
+               $table_string = DBA::buildTableString([$table]);
 
                $condition_string = DBA::buildCondition($condition);
 
@@ -1469,14 +1467,14 @@ class Database
         *
         * $data = DBA::select($table, $fields, $condition, $params);
         *
-        * @param string|array $table     Table name or array [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
+        * @param string $table     Table name or array [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
         * @return boolean|object
         * @throws \Exception
         */
-       public function select($table, array $fields = [], array $condition = [], array $params = [])
+       public function select(string $table, array $fields = [], array $condition = [], array $params = [])
        {
                if (empty($table)) {
                        return false;
@@ -1489,7 +1487,7 @@ class Database
                        $select_string = '*';
                }
 
-               $table_string = DBA::buildTableString($table);
+               $table_string = DBA::buildTableString([$table]);
 
                $condition_string = DBA::buildCondition($condition);
 
@@ -1509,9 +1507,9 @@ class Database
        /**
         * Counts the rows from a table satisfying the provided condition
         *
-        * @param string|array $table     Table name or array [schema => table]
-        * @param array        $condition Array of fields for condition
-        * @param array        $params    Array of several parameters
+        * @param string $table     Table name or array [schema => table]
+        * @param array  $condition Array of fields for condition
+        * @param array  $params    Array of several parameters
         *
         * @return int Count of rows
         *
@@ -1525,13 +1523,13 @@ class Database
         * $count = DBA::count($table, $condition);
         * @throws \Exception
         */
-       public function count($table, array $condition = [], array $params = []): int
+       public function count(string $table, array $condition = [], array $params = []): int
        {
                if (empty($table)) {
                        throw new InvalidArgumentException('Parameter "table" cannot be empty.');
                }
 
-               $table_string = DBA::buildTableString($table);
+               $table_string = DBA::buildTableString([$table]);
 
                $condition_string = DBA::buildCondition($condition);
 
@@ -1619,7 +1617,7 @@ class Database
                                return $fields;
                        }
 
-                       foreach(array_keys($fields) as $field) {
+                       foreach (array_keys($fields) as $field) {
                                if (!empty($views[$table]['fields'][$field])) {
                                        $viewdef = $views[$table]['fields'][$field];
                                        if (!empty($tables[$viewdef[0]]['fields'][$viewdef[1]]['type'])) {
@@ -1823,14 +1821,14 @@ class Database
        /**
         * Replaces a string in the provided fields of the provided table
         *
-        * @param string $table_name Table name
+        * @param string $table  Table name
         * @param array  $fields List of field names in the provided table
-        * @param string $search
-        * @param string $replace
+        * @param string $search String to search for
+        * @param string $replace String to replace with
         * @return void
         * @throws \Exception
         */
-       public function replaceInTableFields(string $table_name, array $fields, string $search, string $replace)
+       public function replaceInTableFields(string $table, array $fields, string $search, string $replace)
        {
                $search = $this->escape($search);
                $replace = $this->escape($replace);
@@ -1843,9 +1841,9 @@ class Database
 
                $upds = implode(', ', $upd);
 
-               $r = $this->e(sprintf("UPDATE %s SET %s;", DBA::quoteIdentifier($table_name), $upds));
+               $r = $this->e(sprintf("UPDATE %s SET %s;", DBA::quoteIdentifier($table), $upds));
                if (!$this->isResult($r)) {
-                       throw new \RuntimeException("Failed updating `$table_name`: " . $this->errorMessage());
+                       throw new \RuntimeException("Failed updating `$table`: " . $this->errorMessage());
                }
        }
 }
index 557ecd7f5801dc410e87fd573da1e2d257cc3a16..667b3224228664f99fc1fce35837203d65e32244 100644 (file)
@@ -54,12 +54,12 @@ class Summary extends BaseAdmin
                        $warningtext[] = DI::l10n()->t('Template engine (%s) error: %s', $templateEngine::$name, $error);
                }
 
-               if (DBA::count(['information_schema' => 'tables'], ['engine' => 'myisam', 'table_schema' => DBA::databaseName()])) {
+               if (DBA::count('information_schema.tables', ['engine' => 'myisam', 'table_schema' => DBA::databaseName()])) {
                        $warningtext[] = DI::l10n()->t('Your DB still runs with MyISAM tables. You should change the engine type to InnoDB. As Friendica will use InnoDB only features in the future, you should change this! See <a href="%s">here</a> for a guide that may be helpful converting the table engines. You may also use the command <tt>php bin/console.php dbstructure toinnodb</tt> of your Friendica installation for an automatic conversion.<br />', 'https://dev.mysql.com/doc/refman/5.7/en/converting-tables-to-innodb.html');
                }
 
                // are there InnoDB tables in Antelope in the DB? If so, trigger a warning message
-               if (DBA::count(['information_schema' => 'tables'], ['ENGINE' => 'InnoDB', 'ROW_FORMAT' => ['COMPACT', 'REDUNDANT'], 'table_schema' => DBA::databaseName()])) {
+               if (DBA::count('information_schema.tables', ['ENGINE' => 'InnoDB', 'ROW_FORMAT' => ['COMPACT', 'REDUNDANT'], 'table_schema' => DBA::databaseName()])) {
                        $warningtext[] = DI::l10n()->t('Your DB still runs with InnoDB tables in the Antelope file format. You should change the file format to Barracuda. Friendica is using features that are not provided by the Antelope format. See <a href="%s">here</a> for a guide that may be helpful converting the table engines. You may also use the command <tt>php bin/console.php dbstructure toinnodb</tt> of your Friendica installation for an automatic conversion.<br />', 'https://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html');
                }
 
index 6f8233a6a009954b4fddc6fd03d0df53e2fa50fd..38408bcf4bbf498aafd36fe32d19ec6a8aeb2c2d 100644 (file)
@@ -97,7 +97,8 @@ class PidFile
         *
         * @return boolean|string PID or "false" if not created
         */
-       static public function create($file) {
+       static public function create(string $file)
+       {
                $pid = self::pidFromFile($file);
 
                // We have a process id? then we quit
@@ -119,7 +120,8 @@ class PidFile
         *
         * @return boolean Is it running?
         */
-       static public function delete($file) {
+       static public function delete(string $file): bool
+       {
                return @unlink($file);
        }
 }