MDL-59432 auth_db: add aliases to field mapping query

This patch fixes an issue with mapping different internal fields
to the same external field.
This commit is contained in:
Marco Ferrante
2017-07-20 15:00:09 +08:00
committed by Simey Lameze
parent bc60c1a2eb
commit 4e184445f2
+6 -2
View File
@@ -171,7 +171,7 @@ class auth_plugin_db extends auth_plugin_base {
}
/**
* Returns user attribute mappings between moodle and ldap.
* Returns user attribute mappings between moodle and the external database.
*
* @return array
*/
@@ -215,8 +215,12 @@ class auth_plugin_db extends auth_plugin_base {
// If at least one field is mapped from external db, get that mapped data.
if ($selectfields) {
$select = array();
$fieldcount = 0;
foreach ($selectfields as $localname=>$externalname) {
$select[] = "$externalname";
// Without aliasing, multiple occurrences of the same external
// name can coalesce in only occurrence in the result.
$select[] = "$externalname AS F".$fieldcount;
$fieldcount++;
}
$select = implode(', ', $select);
$sql = "SELECT $select