ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
attributes.php
Go to the documentation of this file.
1 <?php
6 function 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 
20 function 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 
34 function 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 
54 function present_attributes(SimpleSAML_XHTML_Template $t, $attributes, $nameParent)
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 }
getTranslator()
Return the internal translator object used by this template.
Definition: Template.php:506
$attributes
present_eptid(\SimpleSAML\Locale\Translate $t, \SAML2\XML\saml\NameID $nameID)
Definition: attributes.php:34
Attribute-related utility methods.
if($format !==null) $name
Definition: metadata.php:146
$n
Definition: RandomTest.php:85
Create styles array
The data for the language used.
present_list($attr)
Functions used to present a table of attributes and their values.
Definition: attributes.php:6
present_assoc($attr)
Definition: attributes.php:20
$i
Definition: disco.tpl.php:19
$key
Definition: croninfo.php:18