summaryrefslogtreecommitdiff
path: root/modules/openid/openid.inc
diff options
context:
space:
mode:
Diffstat (limited to 'modules/openid/openid.inc')
-rw-r--r--modules/openid/openid.inc24
1 files changed, 14 insertions, 10 deletions
diff --git a/modules/openid/openid.inc b/modules/openid/openid.inc
index 74cd7c494..4d4163805 100644
--- a/modules/openid/openid.inc
+++ b/modules/openid/openid.inc
@@ -658,22 +658,26 @@ function openid_extract_namespace($response, $extension_namespace, $fallback_pre
*
* @param $values
* An array as returned by openid_extract_namespace(..., OPENID_NS_AX).
- * @param $aliases
- * An array of aliases used in the fetch request.
+ * @param $uris
+ * An array of identifier URIs.
* @return
* An array of values.
* @see http://openid.net/specs/openid-attribute-exchange-1_0.html#fetch_response
*/
-function openid_extract_ax_values($values, $aliases) {
+function openid_extract_ax_values($values, $uris) {
$output = array();
- foreach ($aliases as $alias) {
- if (isset($values['count.' . $alias])) {
- for ($i = 1; $i <= $values['count.' . $alias]; $i++) {
- $output[] = $values['value.' . $alias . '.' . $i];
+ foreach ($values as $key => $value) {
+ if (in_array($value, $uris) && preg_match('/^type\.([^.]+)$/', $key, $matches)) {
+ $alias = $matches[1];
+ if (isset($values['count.' . $alias])) {
+ for ($i = 1; $i <= $values['count.' . $alias]; $i++) {
+ $output[] = $values['value.' . $alias . '.' . $i];
+ }
}
- }
- elseif (isset($values['value.' . $alias])) {
- $output[] = $values['value.' . $alias];
+ elseif (isset($values['value.' . $alias])) {
+ $output[] = $values['value.' . $alias];
+ }
+ break;
}
}
return $output;