SimpleSAML_Metadata_MetaDataStorageHandlerSerialize::saveMetadata PHP Method

saveMetadata() public method

Save a metadata entry.
public saveMetadata ( string $entityId, string $set, array $metadata ) : boolean
$entityId string The entityId of the metadata entry.
$set string The metadata set this metadata entry belongs to.
$metadata array The metadata.
return boolean True if successfully saved, false otherwise.
    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;
    }

Usage Example

Example #1
0
    $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();
All Usage Examples Of SimpleSAML_Metadata_MetaDataStorageHandlerSerialize::saveMetadata