ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
attributes.php
Go to the documentation of this file.
1<?php
6function present_list($attr)
7{
8 if (is_array($attr) && count($attr) > 1) {
9 $str = '<ul>';
10 foreach ($attr as $value) {
11 $str .= '<li>'.htmlspecialchars($attr).'</li>';
12 }
13 $str .= '</ul>';
14 return $str;
15 } else {
16 return htmlspecialchars($attr[0]);
17 }
18}
19
20function present_assoc($attr)
21{
22 if (is_array($attr)) {
23 $str = '<dl>';
24 foreach ($attr as $key => $value) {
25 $str .= "\n".'<dt>'.htmlspecialchars($key).'</dt><dd>'.present_list($value).'</dd>';
26 }
27 $str .= '</dl>';
28 return $str;
29 } else {
30 return htmlspecialchars($attr);
31 }
32}
33
34function present_eptid(\SimpleSAML\Locale\Translate $t, \SAML2\XML\saml\NameID $nameID)
35{
36 $eptid = array(
37 'NameID' => array($nameID->value),
38 );
39 if (!empty($nameID->Format)) {
40 $eptid[$t->t('{status:subject_format}')] = array($nameID->Format);
41 }
42 if (!empty($nameID->NameQualifier)) {
43 $eptid['NameQualifier'] = array($nameID->NameQualifier);
44 }
45 if (!empty($nameID->SPNameQualifier)) {
46 $eptid['SPNameQualifier'] = array($nameID->SPNameQualifier);
47 }
48 if (!empty($nameID->SPProvidedID)) {
49 $eptid['SPProvidedID'] = array($nameID->SPProvidedID);
50 }
51 return '<td class="attrvalue">'.present_assoc($eptid);
52}
53
55{
56 $alternate = array('odd', 'even');
57 $i = 0;
58
59 $parentStr = (strlen($nameParent) > 0) ? strtolower($nameParent).'_' : '';
60 $str = (strlen($nameParent) > 0) ? '<table class="attributes" summary="attribute overview">' :
61 '<table id="table_with_attributes" class="attributes" summary="attribute overview">';
62
63 foreach ($attributes as $name => $value) {
64 $nameraw = $name;
65 $trans = $t->getTranslator();
66 $name = $trans->getAttributeTranslation($parentStr.$nameraw);
67
68 if (preg_match('/^child_/', $nameraw)) {
69 $parentName = preg_replace('/^child_/', '', $nameraw);
70 foreach ($value as $child) {
71 $str .= '<tr class="odd"><td colspan="2" style="padding: 2em">'.
72 present_attributes($t, $child, $parentName).'</td></tr>';
73 }
74 } else {
75 if (sizeof($value) > 1) {
76 $str .= '<tr class="'.$alternate[($i++ % 2)].'"><td class="attrname">';
77
78 if ($nameraw !== $name) {
79 $str .= htmlspecialchars($name).'<br/>';
80 }
81 $str .= '<tt>'.htmlspecialchars($nameraw).'</tt>';
82 $str .= '</td><td class="attrvalue"><ul>';
83 foreach ($value as $listitem) {
84 if ($nameraw === 'jpegPhoto') {
85 $str .= '<li><img src="data:image/jpeg;base64,'.htmlspecialchars($listitem).'" /></li>';
86 } else {
87 $str .= '<li>'.present_assoc($listitem).'</li>';
88 }
89 }
90 $str .= '</ul></td></tr>';
91 } elseif (isset($value[0])) {
92 $str .= '<tr class="'.$alternate[($i++ % 2)].'"><td class="attrname">';
93 if ($nameraw !== $name) {
94 $str .= htmlspecialchars($name).'<br/>';
95 }
96 $str .= '<tt>'.htmlspecialchars($nameraw).'</tt>';
97 $str .= '</td>';
98 if ($nameraw === 'jpegPhoto') {
99 $str .= '<td class="attrvalue"><img src="data:image/jpeg;base64,'.htmlspecialchars($value[0]).
100 '" /></td></tr>';
101 } elseif (is_a($value[0], 'DOMNodeList')) {
102 // try to see if we have a NameID here
104 $n = $value[0]->length;
105 for ($idx = 0; $idx < $n; $idx++) {
106 $elem = $value[0]->item($idx);
107 /* @var DOMElement $elem */
108 if (!($elem->localName === 'NameID' && $elem->namespaceURI === \SAML2\Constants::NS_SAML)) {
109 continue;
110 }
111 $str .= present_eptid($trans, new \SAML2\XML\saml\NameID($elem));
112 break; // we only support one NameID here
113 }
114 $str .= '</td></tr>';
115 } elseif (is_a($value[0], '\SAML2\XML\saml\NameID')) {
116 $str .= present_eptid($trans, $value[0]);
117 $str .= '</td></tr>';
118 } else {
119 $str .= '<td class="attrvalue">'.htmlspecialchars($value[0]).'</td></tr>';
120 }
121 }
122 }
123 $str .= "\n";
124 }
125 $str .= '</table>';
126 return $str;
127}
$n
Definition: RandomTest.php:85
present_assoc($attr)
Definition: attributes.php:20
present_eptid(\SimpleSAML\Locale\Translate $t, \SAML2\XML\saml\NameID $nameID)
Definition: attributes.php:34
present_list($attr)
Functions used to present a table of attributes and their values.
Definition: attributes.php:6
An exception for terminatinating execution or to throw for unit testing.
$key
Definition: croninfo.php:18
$i
Definition: disco.tpl.php:19
present_attributes($t, $attributes, $nameParent)
Recursive attribute array listing function.
Definition: getconsent.php:216
if(array_key_exists('yes', $_REQUEST)) $attributes
Definition: getconsent.php:85
Attribute-related utility methods.