diff --git a/lib/dml/moodle_database.php b/lib/dml/moodle_database.php index a6dcbdc9a92..98941f37edc 100644 --- a/lib/dml/moodle_database.php +++ b/lib/dml/moodle_database.php @@ -2321,10 +2321,10 @@ abstract class moodle_database { * This function accepts variable number of string parameters. * All strings/fieldnames will used in the SQL concatenate statement generated. * + * @param string $arr,... expressions to be concatenated. * @return string The SQL to concatenate strings passed in. - * @uses func_get_args() and thus parameters are unlimited OPTIONAL number of additional field names. */ - public abstract function sql_concat(); + public abstract function sql_concat(...$arr); /** * Returns the proper SQL to do CONCAT between the elements passed diff --git a/lib/dml/mysqli_native_moodle_database.php b/lib/dml/mysqli_native_moodle_database.php index c99e98fd0a4..1fca4f71b2a 100644 --- a/lib/dml/mysqli_native_moodle_database.php +++ b/lib/dml/mysqli_native_moodle_database.php @@ -1927,12 +1927,11 @@ class mysqli_native_moodle_database extends moodle_database { * Returns the proper SQL to do CONCAT between the elements passed * Can take many parameters * - * @param string $str,... 1 or more fields/strings to concat + * @param string $arr,... 1 or more fields/strings to concat * * @return string The concat sql */ - public function sql_concat() { - $arr = func_get_args(); + public function sql_concat(...$arr) { $s = implode(', ', $arr); if ($s === '') { return "''"; diff --git a/lib/dml/oci_native_moodle_database.php b/lib/dml/oci_native_moodle_database.php index b8d55f3d1e0..5559fc64d31 100644 --- a/lib/dml/oci_native_moodle_database.php +++ b/lib/dml/oci_native_moodle_database.php @@ -1577,8 +1577,7 @@ class oci_native_moodle_database extends moodle_database { } } - public function sql_concat() { - $arr = func_get_args(); + public function sql_concat(...$arr) { if (empty($arr)) { return " ' ' "; } diff --git a/lib/dml/pdo_moodle_database.php b/lib/dml/pdo_moodle_database.php index 4dd37dd400b..8dd9a75abd2 100644 --- a/lib/dml/pdo_moodle_database.php +++ b/lib/dml/pdo_moodle_database.php @@ -534,7 +534,7 @@ abstract class pdo_moodle_database extends moodle_database { return $this->execute($sql, $params); } - public function sql_concat() { + public function sql_concat(...$arr) { throw new \moodle_exception('TODO'); } diff --git a/lib/dml/pgsql_native_moodle_database.php b/lib/dml/pgsql_native_moodle_database.php index 859917e34c6..97456d2ba6d 100644 --- a/lib/dml/pgsql_native_moodle_database.php +++ b/lib/dml/pgsql_native_moodle_database.php @@ -1508,8 +1508,7 @@ class pgsql_native_moodle_database extends moodle_database { return " $fieldname::real "; } - public function sql_concat() { - $arr = func_get_args(); + public function sql_concat(...$arr) { $s = implode(' || ', $arr); if ($s === '') { return " '' "; diff --git a/lib/dml/sqlite3_pdo_moodle_database.php b/lib/dml/sqlite3_pdo_moodle_database.php index 2a540b85a90..c6976995611 100644 --- a/lib/dml/sqlite3_pdo_moodle_database.php +++ b/lib/dml/sqlite3_pdo_moodle_database.php @@ -341,11 +341,10 @@ class sqlite3_pdo_moodle_database extends pdo_moodle_database { * Returns the proper SQL to do CONCAT between the elements passed * Can take many parameters * - * @param string $element + * @param string $elements,... * @return string */ - public function sql_concat() { - $elements = func_get_args(); + public function sql_concat(...$elements) { return implode('||', $elements); } diff --git a/lib/dml/sqlsrv_native_moodle_database.php b/lib/dml/sqlsrv_native_moodle_database.php index 9afc56b9e8c..d7c899fd209 100644 --- a/lib/dml/sqlsrv_native_moodle_database.php +++ b/lib/dml/sqlsrv_native_moodle_database.php @@ -1447,9 +1447,7 @@ class sqlsrv_native_moodle_database extends moodle_database { return $text; } - public function sql_concat() { - $arr = func_get_args(); - + public function sql_concat(...$arr) { foreach ($arr as $key => $ele) { $arr[$key] = $this->sql_cast_to_char($ele); } diff --git a/lib/dml/tests/dml_test.php b/lib/dml/tests/dml_test.php index 6b18cf53114..46fa06f032c 100644 --- a/lib/dml/tests/dml_test.php +++ b/lib/dml/tests/dml_test.php @@ -6443,7 +6443,7 @@ class moodle_database_for_testing extends moodle_database { public function update_record($table, $dataobject, $bulk=false) {} public function set_field_select($table, $newfield, $newvalue, $select, array $params=null) {} public function delete_records_select($table, $select, array $params=null) {} - public function sql_concat() {} + public function sql_concat(...$arr) {} public function sql_concat_join($separator="' '", $elements=array()) {} public function sql_group_concat(string $field, string $separator = ', ', string $sort = ''): string { return ''; diff --git a/lib/dml/tests/fixtures/test_moodle_database.php b/lib/dml/tests/fixtures/test_moodle_database.php index 589aafbe865..0b680e77b87 100644 --- a/lib/dml/tests/fixtures/test_moodle_database.php +++ b/lib/dml/tests/fixtures/test_moodle_database.php @@ -326,10 +326,10 @@ abstract class test_moodle_database extends \moodle_database { /** * Default implementation, throws Exception - * @return string $sql + * @return string $arr,... * @throws Exception */ - public function sql_concat() { + public function sql_concat(...$arr) { throw new Exception("sql_concat() not implemented"); }