, UNINETT AS. * @package simpleSAMLphp */ class sspmod_metaedit_MetaEditor { protected function getStandardField($request, &$metadata, $key) { if (array_key_exists('field_' . $key, $request)) { $metadata[$key] = $request['field_' . $key]; } else { if (isset($metadata[$key])) unset($metadata[$key]); } } protected function getEndpointField($request, &$metadata, $key, $binding, $indexed) { if (array_key_exists('field_' . $key, $request)) { $e = array( 'Binding' => $binding, 'Location' => $request['field_' . $key] ); if ($indexed) { $e['index'] = 0; } $metadata[$key] = array($e); } else { if (isset($metadata[$key])) unset($metadata[$key]); } } public function formToMeta($request, $metadata = array(), $override = NULL) { $this->getStandardField($request, $metadata, 'entityid'); $this->getStandardField($request, $metadata, 'name'); $this->getStandardField($request, $metadata, 'description'); $this->getEndpointField($request, $metadata, 'AssertionConsumerService', SAML2_Const::BINDING_HTTP_POST, TRUE); $this->getEndpointField($request, $metadata, 'SingleLogoutService', SAML2_Const::BINDING_HTTP_REDIRECT, FALSE); // $this->getStandardField($request, $metadata, 'certFingerprint'); $metadata['updated'] = time(); if ($override) { foreach($override AS $key => $value) { $metadata[$key] = $value; } } return $metadata; } protected function requireStandardField($request, $key) { if (!array_key_exists('field_' . $key, $request)) throw new Exception('Required field [' . $key . '] was missing.'); if (empty($request['field_' . $key])) throw new Exception('Required field [' . $key . '] was empty.'); } public function checkForm($request) { $this->requireStandardField($request, 'entityid'); $this->requireStandardField($request, 'name'); } protected function header($name) { return ' ' . $name . ''; } protected function readonlyDateField($metadata, $key, $name) { $value = 'Not set'; if (array_key_exists($key, $metadata)) $value = date('j. F Y, G:i', $metadata[$key]); return ' ' . $name . ' ' . $value . ''; } protected function readonlyField($metadata, $key, $name) { $value = ''; if (array_key_exists($key, $metadata)) $value = $metadata[$key]; return ' ' . $name . ' ' . htmlspecialchars($value) . ''; } protected function hiddenField($key, $value) { return ''; } protected function flattenLanguageField(&$metadata, $key) { if (array_key_exists($key, $metadata)) { if (is_array($metadata[$key])) { if (isset($metadata[$key]['en'])) { $metadata[$key] = $metadata[$key]['en']; } else { unset($metadata[$key]); } } } } protected function standardField($metadata, $key, $name, $textarea = FALSE) { $value = ''; if (array_key_exists($key, $metadata)) { $value = htmlspecialchars($metadata[$key]); } #echo '
'; print_r($metadata); echo '
'; if ($textarea) { return '' . $name . ' '; } else { return '' . $name . ' '; } } protected function endpointField($metadata, $key, $name, $textarea = FALSE) { $value = ''; if (array_key_exists($key, $metadata)) { if (is_array($metadata[$key])) { $value = htmlspecialchars($metadata[$key][0]['Location']); } else { $value = htmlspecialchars($metadata[$key]); } } if ($textarea) { return '' . $name . ' '; } else { return '' . $name . ' '; } } public function metaToForm($metadata) { $this->flattenLanguageField($metadata, 'name'); $this->flattenLanguageField($metadata, 'description'); return '
' . (array_key_exists('entityid', $metadata) ? $this->hiddenField('was-entityid', $metadata['entityid']) : '') . '
' . '' . '
' . $this->standardField($metadata, 'entityid', 'EntityID') . $this->standardField($metadata, 'name', 'Name of service') . $this->standardField($metadata, 'description', 'Description of service', TRUE) . $this->readonlyField($metadata, 'owner', 'Owner') . $this->readonlyDateField($metadata, 'updated', 'Last updated') . $this->readonlyDateField($metadata, 'expire', 'Expire') . '
' . $this->endpointField($metadata, 'AssertionConsumerService', 'AssertionConsumerService endpoint') . $this->endpointField($metadata, 'SingleLogoutService', 'SingleLogoutService endpoint') . // $this->standardField($metadata, 'certFingerprint', 'Certificate Fingerprint') . '
' . '
' . '' . '
'; } }