X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FDatabase%2FDBA.php;h=9ce2b61473c30e528f233ee9fbb70bf05302c120;hb=86105635ca3b0e096d128718b778b313b5eaa88e;hp=68fb32f9a27aa7b96fd76da5ef3ab842caa76781;hpb=945cd1a2c22a43012086637651678ccb98a30f4d;p=friendica.git diff --git a/src/Database/DBA.php b/src/Database/DBA.php index 68fb32f9a2..9ce2b61473 100644 --- a/src/Database/DBA.php +++ b/src/Database/DBA.php @@ -77,7 +77,7 @@ class DBA * * @return string with either "pdo" or "mysqli" */ - public static function getDriver() + public static function getDriver(): string { return DI::dba()->getDriver(); } @@ -218,7 +218,7 @@ class DBA /** * Check if data exists * - * @param string $table Table name or array [schema => table] + * @param string $table Table name in format schema.table (while scheme is optiona) * @param array $condition Array of fields for condition * @return boolean Are there rows for that condition? * @throws \Exception @@ -289,7 +289,7 @@ class DBA /** * Insert a row into a table * - * @param string $table Table name or array [schema => table] + * @param string $table Table name in format schema.table (while scheme is optiona) * @param array $param parameter array * @param int $duplicate_mode What to do on a duplicated entry * @return boolean was the insert successful? @@ -304,7 +304,7 @@ 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 $table Table name or array [schema => table] + * @param string $table Table name in format schema.table (while scheme is optiona) * @param array $param parameter array * @return boolean was the insert successful? * @throws \Exception @@ -329,7 +329,7 @@ class DBA * * This function can be extended in the future to accept a table array as well. * - * @param string $table Table name or array [schema => table] + * @param string $table Table name in format schema.table (while scheme is optiona) * @return boolean was the lock successful? * @throws \Exception */ @@ -414,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 $table Table name or array [schema => table] + * @param string $table Table name in format schema.table (while scheme is optiona) * @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) @@ -431,7 +431,7 @@ class DBA /** * Retrieve a single record from a table and returns it in an associative array * - * @param string|array $table Table name or array [schema => table] + * @param string|array $table Table name in format schema.table (while scheme is optiona) * @param array $fields * @param array $condition * @param array $params @@ -447,7 +447,7 @@ class DBA /** * Select rows from a table and fills an array with the data * - * @param string $table Table name or array [schema => table] + * @param string $table Table name in format schema.table (while scheme is optiona) * @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 @@ -464,7 +464,7 @@ class DBA /** * Select rows from a table * - * @param string $table Table name or array [schema => table] + * @param string $table Table name in format schema.table (while scheme is optiona) * @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 @@ -492,7 +492,7 @@ class DBA /** * Counts the rows from a table satisfying the provided condition * - * @param string $table Table name or array [schema => table] + * @param string $table Table name in format schema.table (while scheme is optiona) * @param array $condition array of fields for condition * @param array $params Array of several parameters * @@ -526,32 +526,25 @@ class DBA */ public static function buildTableString(array $tables): string { - $quotedTables = []; - - foreach ($tables as $schema => $table) { - if (is_numeric($schema)) { - $str = ''; - foreach (explode('.', $table) as $part) { - $str .= self::quoteIdentifier($part) . '.'; - } - $quotedTables[] = rtrim($str, '.'); - } else { - $quotedTables[] = self::quoteIdentifier($schema) . '.' . self::quoteIdentifier($table); - } - } - - return implode(', ', $quotedTables); + // Quote each entry + return implode(',', array_map(['self', 'quoteIdentifier'], $tables)); } /** - * Escape an identifier (table or field name) + * Escape an identifier (table or field name) optional with a schema like (schema.)table * - * @param $identifier - * @return string + * @param $identifier Table, field name + * @return string Quotes table or field name */ public static function quoteIdentifier(string $identifier): string { - return '`' . str_replace('`', '``', $identifier) . '`'; + return implode( + '.', + array_map( + function (string $identifier) { return '`' . str_replace('`', '``', $identifier) . '`'; }, + explode('.', $identifier) + ) + ); } /**