16 import(
'lib.pkp.classes.plugins.GenericPlugin');
22 function register($category, $path, $mainContextId =
null) {
23 if (parent::register($category, $path, $mainContextId)) {
50 $monograph = $args[1];
51 $publication = $monograph->getCurrentPublication();
55 $templateMgr->addHeader(
'dublinCoreSchema',
'<link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />');
58 if ($sponsors = $publication->getData(
'supportingAgencies'))
foreach ($sponsors as $locale => $sponsor) {
59 $templateMgr->addHeader(
'dublinCoreSponsor' . $i++,
'<meta name="DC.Contributor.Sponsor" xml:lang="' . htmlspecialchars(substr($locale, 0, 2)) .
'" content="' . htmlspecialchars(strip_tags($sponsor)) .
'"/>');
63 if ($coverages = $publication->getData(
'coverage'))
foreach($coverages as $locale => $coverage) {
64 $templateMgr->addHeader(
'dublinCoreCoverage' . $i++,
'<meta name="DC.Coverage" xml:lang="' . htmlspecialchars(substr($locale, 0, 2)) .
'" content="' . htmlspecialchars(strip_tags($coverage)) .
'"/>');
68 foreach ($publication->getData(
'authors') as $author) {
69 $templateMgr->addHeader(
'dublinCoreAuthor' . $i++,
'<meta name="DC.Creator.PersonalName" content="' . htmlspecialchars($author->getFullName(
false)) .
'"/>');
72 if ($datePublished = $publication->getData(
'datePublished')) {
73 $templateMgr->addHeader(
'dublinCoreDateCreated',
'<meta name="DC.Date.created" scheme="ISO8601" content="' . strftime(
'%Y-%m-%d', strtotime($datePublished)) .
'"/>');
75 $templateMgr->addHeader(
'dublinCoreDateSubmitted',
'<meta name="DC.Date.dateSubmitted" scheme="ISO8601" content="' . strftime(
'%Y-%m-%d', strtotime($monograph->getDateSubmitted())) .
'"/>');
76 if ($dateModified = $publication->getData(
'lastModified')) $templateMgr->addHeader(
'dublinCoreDateModified',
'<meta name="DC.Date.modified" scheme="ISO8601" content="' . strftime(
'%Y-%m-%d', strtotime($dateModified)) .
'"/>');
78 if ($abstracts = $publication->getData(
'abstract'))
foreach($abstracts as $locale => $abstract) {
79 $templateMgr->addHeader(
'dublinCoreAbstract' . $i++,
'<meta name="DC.Description" xml:lang="' . htmlspecialchars(substr($locale, 0, 2)) .
'" content="' . htmlspecialchars(strip_tags($abstract)) .
'"/>');
82 $templateMgr->addHeader(
'dublinCoreIdentifier',
'<meta name="DC.Identifier" content="' . htmlspecialchars($monograph->getBestId()) .
'"/>');
84 foreach((array) $templateMgr->getTemplateVars(
'pubIdPlugins') as $pubIdPlugin) {
85 if ($pubId = $monograph->getStoredPubId($pubIdPlugin->getPubIdType())) {
86 $templateMgr->addHeader(
'dublinCorePubId' . $pubIdPlugin->getPubIdDisplayType(),
'<meta name="DC.Identifier.' . htmlspecialchars($pubIdPlugin->getPubIdDisplayType()) .
'" content="' . htmlspecialchars($pubId) .
'"/>');
90 $templateMgr->addHeader(
'dublinCoreUri',
'<meta name="DC.Identifier.URI" content="' .
$request->url(
null,
'catalog',
'book', array($monograph->getBestId())) .
'"/>');
91 $templateMgr->addHeader(
'dublinCoreLanguage',
'<meta name="DC.Language" scheme="ISO639-1" content="' . substr($publication->getData(
'locale'), 0, 2) .
'"/>');
92 $templateMgr->addHeader(
'dublinCoreCopyright',
'<meta name="DC.Rights" content="' . htmlspecialchars(__(
'submission.copyrightStatement', array(
'copyrightHolder' => $monograph->getCopyrightHolder($publication->getData(
'locale')),
'copyrightYear' => $monograph->getCopyrightYear()))) .
'"/>');
93 $templateMgr->addHeader(
'dublinCorePagesLicenseUrl',
'<meta name="DC.Rights" content="' . htmlspecialchars($monograph->getLicenseURL()) .
'"/>');
94 $templateMgr->addHeader(
'dublinCoreSource',
'<meta name="DC.Source" content="' . htmlspecialchars($press->getName($press->getPrimaryLocale())) .
'"/>');
96 $templateMgr->addHeader(
'dublinCoreSourceUri',
'<meta name="DC.Source.URI" content="' .
$request->url($press->getPath()) .
'"/>');
101 if ($subjects = $submissionSubjectDao->getSubjects($publication->getId(), $supportedLocales))
foreach ($subjects as $locale => $subjectLocale) {
102 foreach ($subjectLocale as $subject) $templateMgr->addHeader(
'dublinCoreSubject' . $i++,
'<meta name="DC.Subject" xml:lang="' . htmlspecialchars(substr($locale, 0, 2)) .
'" content="' . htmlspecialchars($subject) .
'"/>');
107 if ($keywords = $submissionKeywordDao->getKeywords($publication->getId(), $supportedLocales))
foreach ($keywords as $locale => $keywordLocale) {
108 foreach ($keywordLocale as $keyword) $templateMgr->addHeader(
'dublinCoreKeyword' . $i++,
'<meta name="DC.Subject" xml:lang="' . htmlspecialchars(substr($locale, 0, 2)) .
'" content="' . htmlspecialchars($keyword) .
'"/>');
111 $templateMgr->addHeader(
'dublinCoreTitle',
'<meta name="DC.Title" content="' . htmlspecialchars($publication->getData(
'title', $monograph->getLocale())) .
'"/>');
113 foreach ($publication->getData(
'title') as $locale => $title) {
114 if ($locale == $monograph->getLocale())
continue;
115 $templateMgr->addHeader(
'dublinCoreAltTitle' . $i++,
'<meta name="DC.Title.Alternative" xml:lang="' . htmlspecialchars(substr($locale, 0, 2)) .
'" content="' . htmlspecialchars($title) .
'"/>');
118 $templateMgr->addHeader(
'dublinCoreType',
'<meta name="DC.Type" content="Text.Book"/>');
120 if ($types = $publication->getData(
'type'))
foreach($types as $locale => $type) {
121 $templateMgr->addHeader(
'dublinCoreType' . $i++,
'<meta name="DC.Type" xml:lang="' . htmlspecialchars(substr($locale, 0, 2)) .
'" content="' . htmlspecialchars(strip_tags($type)) .
'"/>');
135 $monograph = $args[1];
136 $publicationFormat = $args[2];
137 $submissionFile = $args[3];
141 $chapter = $templateMgr->getTemplateVars(
'chapter');
142 $series = $templateMgr->getTemplateVars(
'series');
144 $templateMgr->addHeader(
'dublinCoreSchema',
'<link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />');
147 if ($sponsors = $monograph->getSponsor(
null))
foreach ($sponsors as $locale => $sponsor) {
148 $templateMgr->addHeader(
'dublinCoreSponsor' . $i++,
'<meta name="DC.Contributor.Sponsor" xml:lang="' . htmlspecialchars(substr($locale, 0, 2)) .
'" content="' . htmlspecialchars(strip_tags($sponsor)) .
'"/>');
152 if ($coverages = $monograph->getCoverage(
null))
foreach($coverages as $locale => $coverage) {
153 $templateMgr->addHeader(
'dublinCoreCoverage' . $i++,
'<meta name="DC.Coverage" xml:lang="' . htmlspecialchars(substr($locale, 0, 2)) .
'" content="' . htmlspecialchars(strip_tags($coverage)) .
'"/>');
157 foreach ($chapter?$chapter->getAuthors()->toArray():$monograph->getAuthors() as $author) {
158 $templateMgr->addHeader(
'dublinCoreAuthor' . $i++,
'<meta name="DC.Creator.PersonalName" content="' . htmlspecialchars($author->getFullName(
false)) .
'"/>');
161 if (is_a($monograph,
'Submission') && ($datePublished = $monograph->getDatePublished())) {
162 $templateMgr->addHeader(
'dublinCoreDateCreated',
'<meta name="DC.Date.created" scheme="ISO8601" content="' . strftime(
'%Y-%m-%d', strtotime($datePublished)) .
'"/>');
164 $templateMgr->addHeader(
'dublinCoreDateSubmitted',
'<meta name="DC.Date.dateSubmitted" scheme="ISO8601" content="' . strftime(
'%Y-%m-%d', strtotime($monograph->getDateSubmitted())) .
'"/>');
165 if ($dateModified = $monograph->getData(
'dateLastActivity')) $templateMgr->addHeader(
'dublinCoreDateModified',
'<meta name="DC.Date.modified" scheme="ISO8601" content="' . strftime(
'%Y-%m-%d', strtotime($dateModified)) .
'"/>');
167 if ($abstracts = $monograph->getAbstract(
null))
foreach($abstracts as $locale => $abstract) {
168 $templateMgr->addHeader(
'dublinCoreAbstract' . $i++,
'<meta name="DC.Description" xml:lang="' . htmlspecialchars(substr($locale, 0, 2)) .
'" content="' . htmlspecialchars(strip_tags($abstract)) .
'"/>');
171 $templateMgr->addHeader(
'dublinCoreIdentifier',
'<meta name="DC.Identifier" content="' . htmlspecialchars($monograph->getBestId() .
'/' . $publicationFormat->getId() .
'/' . $submissionFile->getFileIdAndRevision()) .
'"/>');
173 if ($pages = $monograph->getPages()) {
174 $templateMgr->addHeader(
'dublinCorePages',
'<meta name="DC.Identifier.pageNumber" content="' . htmlspecialchars($pages) .
'"/>');
177 foreach((array) $templateMgr->getTemplateVars(
'pubIdPlugins') as $pubIdPlugin) {
178 if ($pubId = $monograph->getStoredPubId($pubIdPlugin->getPubIdType())) {
179 $templateMgr->addHeader(
'dublinCorePubId' . $pubIdPlugin->getPubIdDisplayType(),
'<meta name="DC.Identifier.' . htmlspecialchars($pubIdPlugin->getPubIdDisplayType()) .
'" content="' . htmlspecialchars($pubId) .
'"/>');
183 $templateMgr->addHeader(
'dublinCoreUri',
'<meta name="DC.Identifier.URI" content="' .
$request->url(
null,
'catalog',
'book', array($monograph->getBestId(), $publicationFormat->getId(), $submissionFile->getFileIdAndRevision())) .
'"/>');
184 $templateMgr->addHeader(
'dublinCoreLanguage',
'<meta name="DC.Language" scheme="ISO639-1" content="' . substr($monograph->getLocale(), 0, 2) .
'"/>');
185 $templateMgr->addHeader(
'dublinCoreCopyright',
'<meta name="DC.Rights" content="' . htmlspecialchars(__(
'submission.copyrightStatement', array(
'copyrightHolder' => $monograph->getCopyrightHolder($monograph->getLocale()),
'copyrightYear' => $monograph->getCopyrightYear()))) .
'"/>');
186 $templateMgr->addHeader(
'dublinCorePagesLicenseUrl',
'<meta name="DC.Rights" content="' . htmlspecialchars($monograph->getLicenseURL()) .
'"/>');
187 $templateMgr->addHeader(
'dublinCoreSource',
'<meta name="DC.Source" content="' . htmlspecialchars($press->getName($press->getPrimaryLocale())) .
'"/>');
188 if ($series && $issn = $series->getOnlineISSN()) {
189 $templateMgr->addHeader(
'dublinCoreIssn',
'<meta name="DC.Source.ISSN" content="' . htmlspecialchars($issn) .
'"/>');
192 $templateMgr->addHeader(
'dublinCoreSourceUri',
'<meta name="DC.Source.URI" content="' .
$request->url($press->getPath()) .
'"/>');
197 if ($subjects = $submissionSubjectDao->getSubjects($monograph->getId(), $supportedLocales))
foreach ($subjects as $locale => $subjectLocale) {
198 foreach ($subjectLocale as $subject) $templateMgr->addHeader(
'dublinCoreSubject' . $i++,
'<meta name="DC.Subject" xml:lang="' . htmlspecialchars(substr($locale, 0, 2)) .
'" content="' . htmlspecialchars($subject) .
'"/>');
203 if ($keywords = $submissionKeywordDao->getKeywords($monograph->getId(), $supportedLocales))
foreach ($keywords as $locale => $keywordLocale) {
204 foreach ($keywordLocale as $keyword) $templateMgr->addHeader(
'dublinCoreKeyword' . $i++,
'<meta name="DC.Subject" xml:lang="' . htmlspecialchars(substr($locale, 0, 2)) .
'" content="' . htmlspecialchars($keyword) .
'"/>');
209 $templateMgr->addHeader(
'dublinCoreTitle',
'<meta name="DC.Title" content="' . htmlspecialchars($chapter->getTitle($monograph->getLocale())) .
'"/>');
211 foreach ($chapter->getTitle(
null) as $locale => $title) {
212 if ($locale == $monograph->getLocale())
continue;
213 $templateMgr->addHeader(
'dublinCoreAltTitle' . $i++,
'<meta name="DC.Title.Alternative" xml:lang="' . htmlspecialchars(substr($locale, 0, 2)) .
'" content="' . htmlspecialchars($title) .
'"/>');
216 $templateMgr->addHeader(
'dublinCoreTitle',
'<meta name="DC.Title" content="' . htmlspecialchars($monograph->getTitle($monograph->getLocale())) .
'"/>');
218 foreach ($monograph->getTitle(
null) as $locale => $title) {
219 if ($locale == $monograph->getLocale())
continue;
220 $templateMgr->addHeader(
'dublinCoreAltTitle' . $i++,
'<meta name="DC.Title.Alternative" xml:lang="' . htmlspecialchars(substr($locale, 0, 2)) .
'" content="' . htmlspecialchars($title) .
'"/>');
224 $templateMgr->addHeader(
'dublinCoreType',
'<meta name="DC.Type" content="Text.Chapter"/>');
226 if ($types = $monograph->getType(
null))
foreach($types as $locale => $type) {
227 $templateMgr->addHeader(
'dublinCoreType' . $i++,
'<meta name="DC.Type" xml:lang="' . htmlspecialchars(substr($locale, 0, 2)) .
'" content="' . htmlspecialchars(strip_tags($type)) .
'"/>');
238 return __(
'plugins.generic.dublinCoreMeta.name');
246 return __(
'plugins.generic.dublinCoreMeta.description');