20 import(
'lib.pkp.classes.metadata.MetadataDataObjectAdapter');
28 parent::__construct($filterGroup);
39 return 'plugins.metadata.dc11.filter.Dc11SchemaPublicationFormatAdapter';
62 assert(is_a($publicationFormat,
'PublicationFormat'));
73 $publication =
Services::get(
'publication')->get($publicationFormat->getData(
'publicationId'));
74 $monograph =
Services::get(
'submission')->get($publication->getData(
'submissionId'));
75 $press = $oaiDao->getPress($monograph->getPressId());
76 $series = $oaiDao->getSeries($monograph->getSeriesId());
81 foreach ($monograph->getTitle(
null) as $titleLocale => $title) {
82 $titles[$titleLocale] = $monograph->getFullTitle($titleLocale);
87 $authors = $monograph->getAuthors();
88 foreach($authors as $author) {
89 $authorName = $author->getFullName(
false,
true);
90 $affiliation = $author->getLocalizedAffiliation();
91 if (!empty($affiliation)) {
92 $authorName .=
'; ' . $affiliation;
94 $dc11Description->addStatement(
'dc:creator', $authorName);
102 $subjects = array_merge_recursive(
103 (array) $submissionKeywordDao->getKeywords($monograph->getId(), $supportedLocales),
104 (array) $submissionSubjectDao->getSubjects($monograph->getId(), $supportedLocales)
112 $publisherInstitution = $press->getSetting(
'publisherInstitution');
113 if (!empty($publisherInstitution)) {
114 $publishers = array($press->getPrimaryLocale() => $publisherInstitution);
116 $publishers = $press->getName(
null);
121 $contributors = $monograph->getSponsor(
null);
122 if (is_array($contributors)) {
123 foreach ($contributors as $locale => $contributor) {
124 $contributors[$locale] = array_map(
'trim', explode(
';', $contributor));
132 if (is_a($monograph,
'Submission')) {
133 if ($monograph->getDatePublished()) $dc11Description->addStatement(
'dc:date', date(
'Y-m-d', strtotime($monograph->getDatePublished())));
137 $types = array_merge_recursive(
139 (array) $monograph->getType(
null)
145 $entryKeys = $onixCodelistItemDao->getCodes(
'List7');
146 if ($publicationFormat->getEntryKey()) {
147 $formatName = $entryKeys[$publicationFormat->getEntryKey()];
148 $dc11Description->addStatement(
'dc:format', $formatName);
152 if (is_a($monograph,
'Submission')) {
154 $dc11Description->addStatement(
'dc:identifier', $request->url($press->getPath(),
'catalog',
'book', array($monograph->getId())));
159 foreach ((array) $pubIdPlugins as $plugin) {
160 $pubId = $plugin->getPubId($publicationFormat);
162 $dc11Description->addStatement(
'dc:identifier', $pubId);
167 $identificationCodeFactory = $publicationFormat->getIdentificationCodes();
168 while ($identificationCode = $identificationCodeFactory->next()) {
169 $dc11Description->addStatement(
'dc:identifier', $identificationCode->getValue());
173 $sources = $press->getName(
null);
174 $pages = $monograph->getPages();
175 if (!empty($pages)) $pages =
'; ' . $pages;
176 foreach ($sources as $locale => $source) {
177 $sources[$locale] .=
'; ';
178 $sources[$locale] .= $pages;
187 $coverage = (array) $monograph->getCoverage(
null);
191 $salesRightsFactory = $publicationFormat->getSalesRights();
192 while ($salesRight = $salesRightsFactory->next()) {
193 $dc11Description->addStatement(
'dc:rights', $salesRight->getNameForONIXCode());
196 Hookregistry::call(
'Dc11SchemaPublicationFormatAdapter::extractMetadataFromDataObject', array(&$this, $monograph, $press, &$dc11Description));
198 return $dc11Description;
221 foreach(
stripAssocArray((array) $localizedValues) as $locale => $values) {
222 if (is_scalar($values)) $values = array($values);
223 foreach($values as $value) {
224 $description->addStatement($propertyName, $value, $locale);