From b047af7463a616cccc3f5a14f70202413f90b871 Mon Sep 17 00:00:00 2001 From: Jaime Perez Crespo <jaime.perez@uninett.no> Date: Wed, 15 Apr 2015 21:18:13 +0200 Subject: [PATCH] Refactor SimpleSAML_Utilities::arrayize() to SimpleSAML_Utils_Arrays:: arrayize(). Schedule SimpleSAML_Utilities:: arrayize() for removal. --- lib/SimpleSAML/Auth/LDAP.php | 2 +- lib/SimpleSAML/Configuration.php | 2 +- lib/SimpleSAML/Metadata/SAMLBuilder.php | 6 ++--- lib/SimpleSAML/Utilities.php | 4 ++- lib/SimpleSAML/Utils/Arrays.php | 22 +++++++++++++--- modules/consent/templates/consentform.php | 2 +- .../templates/frontpage_federation.tpl.php | 8 +++--- modules/saml/lib/Auth/Source/SP.php | 2 +- modules/statistics/lib/StatDataset.php | 2 +- tests/Utils/ArraysTest.php | 26 +++++++++++++++++++ 10 files changed, 60 insertions(+), 16 deletions(-) diff --git a/lib/SimpleSAML/Auth/LDAP.php b/lib/SimpleSAML/Auth/LDAP.php index 66f2788bb..f7dbebd3e 100644 --- a/lib/SimpleSAML/Auth/LDAP.php +++ b/lib/SimpleSAML/Auth/LDAP.php @@ -261,7 +261,7 @@ class SimpleSAML_Auth_LDAP { public function searchfordn($base, $attribute, $value, $allowZeroHits = FALSE) { // Traverse all search bases, returning DN if found. - $bases = SimpleSAML_Utilities::arrayize($base); + $bases = SimpleSAML_Utils_Arrays::arrayize($base); $result = NULL; foreach ($bases AS $current) { try { diff --git a/lib/SimpleSAML/Configuration.php b/lib/SimpleSAML/Configuration.php index 40941d56b..a2108ee15 100644 --- a/lib/SimpleSAML/Configuration.php +++ b/lib/SimpleSAML/Configuration.php @@ -111,7 +111,7 @@ class SimpleSAML_Configuration { $host = $_SERVER['HTTP_HOST']; if (array_key_exists($host, $config['override.host'])) { $ofs = $config['override.host'][$host]; - foreach (SimpleSAML_Utilities::arrayize($ofs) AS $of) { + foreach (SimpleSAML_Utils_Arrays::arrayize($ofs) AS $of) { $overrideFile = dirname($filename) . '/' . $of; if (!file_exists($overrideFile)) { throw new Exception('Config file [' . $filename . '] requests override for host ' . $host . ' but file does not exists [' . $of . ']'); diff --git a/lib/SimpleSAML/Metadata/SAMLBuilder.php b/lib/SimpleSAML/Metadata/SAMLBuilder.php index 70f92f565..52f71c2ae 100644 --- a/lib/SimpleSAML/Metadata/SAMLBuilder.php +++ b/lib/SimpleSAML/Metadata/SAMLBuilder.php @@ -277,9 +277,9 @@ class SimpleSAML_Metadata_SAMLBuilder { return; } - $orgName = SimpleSAML_Utilities::arrayize($metadata['OrganizationName'], 'en'); - $orgDisplayName = SimpleSAML_Utilities::arrayize($metadata['OrganizationDisplayName'], 'en'); - $orgURL = SimpleSAML_Utilities::arrayize($metadata['OrganizationURL'], 'en'); + $orgName = SimpleSAML_Utils_Arrays::arrayize($metadata['OrganizationName'], 'en'); + $orgDisplayName = SimpleSAML_Utils_Arrays::arrayize($metadata['OrganizationDisplayName'], 'en'); + $orgURL = SimpleSAML_Utils_Arrays::arrayize($metadata['OrganizationURL'], 'en'); $this->addOrganization($orgName, $orgDisplayName, $orgURL); } diff --git a/lib/SimpleSAML/Utilities.php b/lib/SimpleSAML/Utilities.php index 052c07d01..5b99a9313 100644 --- a/lib/SimpleSAML/Utilities.php +++ b/lib/SimpleSAML/Utilities.php @@ -1583,8 +1583,10 @@ class SimpleSAML_Utilities { return $doc->saveXML($root); } - /* + /** * Input is single value or array, returns an array. + * + * @deprecated This function will be removed in SSP 2.0. Please use SimpleSAML_Utils_Arrays::arrayize() instead. */ public static function arrayize($data, $index = 0) { if (is_array($data)) { diff --git a/lib/SimpleSAML/Utils/Arrays.php b/lib/SimpleSAML/Utils/Arrays.php index 7f5db6c48..db9582361 100644 --- a/lib/SimpleSAML/Utils/Arrays.php +++ b/lib/SimpleSAML/Utils/Arrays.php @@ -9,6 +9,23 @@ class SimpleSAML_Utils_Arrays { + /** + * Put a non-array variable into an array. + * + * @param array $data The data to place into an array. + * @param mixed $index The index or key of the array where to place the data. Defaults to 0. + * + * @return array An array with one element containing $data, with key $index, or $data itself if it's already an + * array. + * + * @author Andreas Solberg, UNINETT AS <andreas.solberg@uninett.no> + * @author Jaime Perez, UNINETT AS <jaime.perez@uninett.no> + */ + public static function arrayize($data, $index = 0) + { + return (is_array($data)) ? $data : array($index => $data); + } + /** * Validate and normalize an array with attributes. * @@ -24,6 +41,7 @@ class SimpleSAML_Utils_Arrays * not strings. * * @author Olav Morken, UNINETT AS <olav.morken@uninett.no> + * @author Jaime Perez, UNINETT AS <jaime.perez@uninett.no> */ public static function normalizeAttributesArray($attributes) { @@ -38,9 +56,7 @@ class SimpleSAML_Utils_Arrays throw new SimpleSAML_Error_Exception('Invalid attribute name: "'.print_r($name, true).'".'); } - if (!is_array($values)) { - $values = array($values); - } + $values = self::arrayize($values); foreach ($values as $value) { if (!is_string($value)) { diff --git a/modules/consent/templates/consentform.php b/modules/consent/templates/consentform.php index 59608f048..65056c56f 100644 --- a/modules/consent/templates/consentform.php +++ b/modules/consent/templates/consentform.php @@ -74,7 +74,7 @@ if (array_key_exists('descr_purpose', $this->data['dstMetadata'])) { array( 'SPNAME' => $dstName, 'SPDESC' => $this->getTranslation( - SimpleSAML_Utilities::arrayize( + SimpleSAML_Utils_Arrays::arrayize( $this->data['dstMetadata']['descr_purpose'], 'en' ) diff --git a/modules/core/templates/frontpage_federation.tpl.php b/modules/core/templates/frontpage_federation.tpl.php index 489188567..eb8795ac6 100644 --- a/modules/core/templates/frontpage_federation.tpl.php +++ b/modules/core/templates/frontpage_federation.tpl.php @@ -61,9 +61,9 @@ foreach ($this->data['metaentries']['hosted'] AS $hm) { if ($hm['entityid'] !== $hm['metadata-index']) echo '<br />Index: ' . $hm['metadata-index']; if (!empty($hm['name'])) - echo '<br /><strong>' . $this->getTranslation(SimpleSAML_Utilities::arrayize($hm['name'], 'en')) . '</strong>'; + echo '<br /><strong>' . $this->getTranslation(SimpleSAML_Utils_Arrays::arrayize($hm['name'], 'en')) . '</strong>'; if (!empty($hm['descr'])) - echo '<br /><strong>' . $this->getTranslation(SimpleSAML_Utilities::arrayize($hm['descr'], 'en')) . '</strong>'; + echo '<br /><strong>' . $this->getTranslation(SimpleSAML_Utils_Arrays::arrayize($hm['descr'], 'en')) . '</strong>'; echo '<br />[ <a href="' . $hm['metadata-url'] . '">' . $this->t('{core:frontpage:show_metadata}') . '</a> ]'; @@ -82,9 +82,9 @@ foreach($this->data['metaentries']['remote'] AS $setkey => $set) { htmlspecialchars(SimpleSAML_Module::getModuleURL('core/show_metadata.php', array('entityid' => $entry['entityid'], 'set' => $setkey ))) . '">'); if (!empty($entry['name'])) { - echo htmlspecialchars($this->getTranslation(SimpleSAML_Utilities::arrayize($entry['name'], 'en'))); + echo htmlspecialchars($this->getTranslation(SimpleSAML_Utils_Arrays::arrayize($entry['name'], 'en'))); } elseif (!empty($entry['OrganizationDisplayName'])) { - echo htmlspecialchars($this->getTranslation(SimpleSAML_Utilities::arrayize($entry['OrganizationDisplayName'], 'en'))); + echo htmlspecialchars($this->getTranslation(SimpleSAML_Utils_Arrays::arrayize($entry['OrganizationDisplayName'], 'en'))); } else { echo htmlspecialchars($entry['entityid']); } diff --git a/modules/saml/lib/Auth/Source/SP.php b/modules/saml/lib/Auth/Source/SP.php index 565ad6631..a1779a127 100644 --- a/modules/saml/lib/Auth/Source/SP.php +++ b/modules/saml/lib/Auth/Source/SP.php @@ -193,7 +193,7 @@ class sspmod_saml_Auth_Source_SP extends SimpleSAML_Auth_Source { } if (isset($state['saml:AuthnContextClassRef'])) { - $accr = SimpleSAML_Utilities::arrayize($state['saml:AuthnContextClassRef']); + $accr = SimpleSAML_Utils_Arrays::arrayize($state['saml:AuthnContextClassRef']); $ar->setRequestedAuthnContext(array('AuthnContextClassRef' => $accr)); } diff --git a/modules/statistics/lib/StatDataset.php b/modules/statistics/lib/StatDataset.php index 1ea4f1a80..0533a2211 100644 --- a/modules/statistics/lib/StatDataset.php +++ b/modules/statistics/lib/StatDataset.php @@ -294,7 +294,7 @@ class sspmod_statistics_StatDataset { $statdir = $this->statconfig->getValue('statdir'); $resarray = array(); - $rules = SimpleSAML_Utilities::arrayize($this->ruleid); + $rules = SimpleSAML_Utils_Arrays::arrayize($this->ruleid); foreach($rules AS $rule) { // Get file and extract results. $resultFileName = $statdir . '/' . $rule . '-' . $this->timeres . '-'. $this->fileslot . '.stat'; diff --git a/tests/Utils/ArraysTest.php b/tests/Utils/ArraysTest.php index 1d4ed91d2..e43f5c28b 100644 --- a/tests/Utils/ArraysTest.php +++ b/tests/Utils/ArraysTest.php @@ -7,6 +7,32 @@ class Utils_ArraysTest extends PHPUnit_Framework_TestCase { + /** + * Test the arrayize() function. + */ + public function testArrayize() + { + // check with empty array as input + $array = array(); + $this->assertEquals($array, SimpleSAML_Utils_Arrays::arrayize($array)); + + // check non-empty array as input + $array = array('key' => 'value'); + $this->assertEquals($array, SimpleSAML_Utils_Arrays::arrayize($array)); + + // check indexes are ignored when input is an array + $this->assertArrayNotHasKey('invalid', SimpleSAML_Utils_Arrays::arrayize($array, 'invalid')); + + // check default index + $expected = array('string'); + $this->assertEquals($expected, SimpleSAML_Utils_Arrays::arrayize($expected[0])); + + // check string index + $index = 'key'; + $expected = array($index => 'string'); + $this->assertEquals($expected, SimpleSAML_Utils_Arrays::arrayize($expected[$index], $index)); + } + /** * Test the normalizeAttributesArray() function with input not being an array * -- GitLab