Skip to content

Commit

Permalink
Merge branch 'MDL-49293-master' of git://github.com/andrewnicols/moodle
Browse files Browse the repository at this point in the history
  • Loading branch information
stronk7 committed Aug 11, 2015
2 parents 30deee1 + 9b16c1a commit 789d40a
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 15 deletions.
6 changes: 1 addition & 5 deletions lib/dml/mssql_native_moodle_database.php
Expand Up @@ -1207,11 +1207,7 @@ public function sql_concat_join($separator="' '", $elements=array()) {
for ($n=count($elements)-1; $n > 0 ; $n--) {
array_splice($elements, $n, 0, $separator);
}
$s = implode(' + ', $elements);
if ($s === '') {
return " '' ";
}
return " $s ";
return call_user_func_array(array($this, 'sql_concat'), $elements);
}

public function sql_isempty($tablename, $fieldname, $nullablefield, $textfield) {
Expand Down
7 changes: 1 addition & 6 deletions lib/dml/sqlsrv_native_moodle_database.php
Expand Up @@ -1272,12 +1272,7 @@ public function sql_concat_join($separator = "' '", $elements = array ()) {
for ($n = count($elements) - 1; $n > 0; $n--) {
array_splice($elements, $n, 0, $separator);
}
$s = implode(' + ', $elements);

if ($s === '') {
return " '' ";
}
return " $s ";
return call_user_func_array(array($this, 'sql_concat'), $elements);
}

public function sql_isempty($tablename, $fieldname, $nullablefield, $textfield) {
Expand Down
61 changes: 57 additions & 4 deletions lib/dml/tests/dml_test.php
Expand Up @@ -3988,12 +3988,65 @@ public function test_sql_concat() {

}

public function test_concat_join() {
public function sql_concat_join_provider() {
return array(
// All strings.
array(
"' '",
array("'name'", "'name2'", "'name3'"),
array(),
'name name2 name3',
),
// All strings using placeholders
array(
"' '",
array("?", "?", "?"),
array('name', 'name2', 'name3'),
'name name2 name3',
),
// All integers.
array(
"' '",
array(1, 2, 3),
array(),
'1 2 3',
),
// All integers using placeholders
array(
"' '",
array("?", "?", "?"),
array(1, 2, 3),
'1 2 3',
),
// Mix of strings and integers.
array(
"' '",
array(1, "'2'", 3),
array(),
'1 2 3',
),
// Mix of strings and integers using placeholders.
array(
"' '",
array(1, '2', 3),
array(),
'1 2 3',
),
);
}

/**
* @dataProvider sql_concat_join_provider
* @param string $concat The string to use when concatanating.
* @param array $fields The fields to concatanate
* @param array $params Any parameters to provide to the query
* @param @string $expected The expected result
*/
public function test_concat_join($concat, $fields, $params, $expected) {
$DB = $this->tdb;
$sql = "SELECT ".$DB->sql_concat_join("' '", array("?", "?", "?"))." AS fullname ".$DB->sql_null_from_clause();
$params = array("name", "name2", "name3");
$sql = "SELECT " . $DB->sql_concat_join($concat, $fields) . " AS result" . $DB->sql_null_from_clause();
$result = $DB->get_field_sql($sql, $params);
$this->assertEquals("name name2 name3", $result);
$this->assertEquals($expected, $result);
}

public function test_sql_fullname() {
Expand Down

0 comments on commit 789d40a

Please sign in to comment.