From 9df140ba6ed4d485d9760bc9d584a356dbaed9dd Mon Sep 17 00:00:00 2001
From: Olav Morken <olav.morken@uninett.no>
Date: Fri, 5 Mar 2010 15:12:00 +0000
Subject: [PATCH] SAML2_Utils: Add the new extractStrings()-function.

git-svn-id: https://simplesamlphp.googlecode.com/svn/trunk@2199 44740490-163a-0410-bde0-09ae8108e29a
---
 lib/SAML2/Assertion.php |  5 +----
 lib/SAML2/Utils.php     | 19 +++++++++++++++++++
 2 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/lib/SAML2/Assertion.php b/lib/SAML2/Assertion.php
index f5b670cc0..6bbe5621f 100644
--- a/lib/SAML2/Assertion.php
+++ b/lib/SAML2/Assertion.php
@@ -338,10 +338,7 @@ class SAML2_Assertion implements SAML2_SignedElement {
 			}
 			switch ($node->localName) {
 			case 'AudienceRestriction':
-				$audiences = SAML2_Utils::xpQuery($node, './saml_assertion:Audience');
-				foreach ($audiences as &$audience) {
-					$audience = trim($audience->textContent);
-				}
+				$audiences = SAML2_Utils::extractStrings($node, './saml_assertion:Audience');
 				if ($this->validAudiences === NULL) {
 					/* The first (and probably last) AudienceRestriction element. */
 					$this->validAudiences = $audiences;
diff --git a/lib/SAML2/Utils.php b/lib/SAML2/Utils.php
index 45bd0bbc4..8cf84426a 100644
--- a/lib/SAML2/Utils.php
+++ b/lib/SAML2/Utils.php
@@ -348,4 +348,23 @@ class SAML2_Utils {
 		return $ret;
 	}
 
+
+	/**
+	 * Extract strings from a set of nodes.
+	 *
+	 * @param DOMElement $parent  The element we should rund the XPath query on.
+	 * @param string $query  The XPath query we should use to retrieve the nodes.
+	 * @return array  The string values of the various nodes.
+	 */
+	public static function extractStrings(DOMElement $parent, $query) {
+		assert('is_string($query)');
+
+		$ret = array();
+		foreach (self::xpQuery($parent, $query) as $node) {
+			$ret[] = trim($node->textContent);
+		}
+
+		return $ret;
+	}
+
 }
-- 
GitLab