]> git.mxchange.org Git - friendica.git/blobdiff - src/Database/Database.php
Replace BaseObject class with DI::* calls
[friendica.git] / src / Database / Database.php
index 6b4b621d37cdf9ff4c3db60194597a09cb1067af..1dd3524ed61c694d2bc2f26303c475ca684325c2 100644 (file)
@@ -1377,10 +1377,10 @@ class Database
         *
         * @brief Retrieve a single record from a table
         *
-        * @param string $table
-        * @param array  $fields
-        * @param array  $condition
-        * @param array  $params
+        * @param string|array $table
+        * @param array        $fields
+        * @param array        $condition
+        * @param array        $params
         *
         * @return bool|array
         * @throws \Exception
@@ -1412,7 +1412,7 @@ class Database
         * @throws \Exception
         * @see   self::select
         */
-       public function selectToArray(string $table, array $fields = [], array $condition = [], array $params = [])
+       public function selectToArray($table, array $fields = [], array $condition = [], array $params = [])
        {
                return $this->toArray($this->select($table, $fields, $condition, $params));
        }
@@ -1470,6 +1470,7 @@ class Database
         *
         * @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
         *
         * @return int
         *
@@ -1483,7 +1484,7 @@ class Database
         * $count = DBA::count($table, $condition);
         * @throws \Exception
         */
-       public function count($table, array $condition = [])
+       public function count($table, array $condition = [], array $params = [])
        {
                if (empty($table)) {
                        return false;
@@ -1493,7 +1494,15 @@ class Database
 
                $condition_string = DBA::buildCondition($condition);
 
-               $sql = "SELECT COUNT(*) AS `count` FROM " . $table_string . $condition_string;
+               if (empty($params['expression'])) {
+                       $expression = '*';
+               } elseif (!empty($params['distinct'])) {
+                       $expression = "DISTINCT " . DBA::quoteIdentifier($params['expression']);
+               } else {
+                       $expression = DBA::quoteIdentifier($params['expression']);
+               }
+
+               $sql = "SELECT COUNT(" . $expression . ") AS `count` FROM " . $table_string . $condition_string;
 
                $row = $this->fetchFirst($sql, $condition);