public function saveMetadata($entityId, $set, $metadata)
{
assert('is_string($entityId)');
assert('is_string($set)');
assert('is_array($metadata)');
$filePath = $this->getMetadataPath($entityId, $set);
$newPath = $filePath . '.new';
$dir = dirname($filePath);
if (!is_dir($dir)) {
SimpleSAML\Logger::info('Creating directory: ' . $dir);
$res = @mkdir($dir, 0777, true);
if ($res === false) {
$error = error_get_last();
SimpleSAML\Logger::error('Failed to create directory ' . $dir . ': ' . $error['message']);
return false;
}
}
$data = serialize($metadata);
SimpleSAML\Logger::debug('Writing: ' . $newPath);
$res = file_put_contents($newPath, $data);
if ($res === false) {
$error = error_get_last();
SimpleSAML\Logger::error('Error saving file ' . $newPath . ': ' . $error['message']);
return false;
}
$res = rename($newPath, $filePath);
if ($res === false) {
$error = error_get_last();
SimpleSAML\Logger::error('Error renaming ' . $newPath . ' to ' . $filePath . ': ' . $error['message']);
return false;
}
return true;
}
$entity = array_pop($entities); $metadata = $entity->getMetadata20SP(); } else { $metadata = array('owner' => $userid); } $editor = new sspmod_metaedit_MetaEditor(); if (isset($_POST['submit'])) { $editor->checkForm($_POST); $metadata = $editor->formToMeta($_POST, array(), array('owner' => $userid)); if (isset($_REQUEST['was-entityid']) && $_REQUEST['was-entityid'] !== $metadata['entityid']) { $premetadata = $mdh->getMetadata($_REQUEST['was-entityid'], 'saml20-sp-remote'); requireOwnership($premetadata, $userid); $mdh->deleteMetadata($_REQUEST['was-entityid'], 'saml20-sp-remote'); } $testmetadata = NULL; try { $testmetadata = $mdh->getMetadata($metadata['entityid'], 'saml20-sp-remote'); } catch (Exception $e) { } if ($testmetadata) { requireOwnership($testmetadata, $userid); } $mdh->saveMetadata($metadata['entityid'], 'saml20-sp-remote', $metadata); $template = new SimpleSAML_XHTML_Template($config, 'metaedit:saved.php'); $template->show(); exit; } $form = $editor->metaToForm($metadata); $template = new SimpleSAML_XHTML_Template($config, 'metaedit:formedit.php'); $template->data['form'] = $form; $template->show();