16 import(
'lib.pkp.classes.plugins.GenericPlugin');
22 function register($category, $path, $mainContextId =
null) {
23 if (parent::register($category, $path, $mainContextId)) {
51 $publication = $article->getCurrentPublication();
52 $requestArgs =
$request->getRequestedArgs();
57 if (count($requestArgs) > 1 && $requestArgs[1] ===
'version') {
62 $templateMgr->addHeader(
'dublinCoreSchema',
'<link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />');
65 if ($sponsors = $article->getSponsor(
null))
foreach ($sponsors as $locale => $sponsor) {
66 $templateMgr->addHeader(
'dublinCoreSponsor' . $i++,
'<meta name="DC.Contributor.Sponsor" xml:lang="' . htmlspecialchars(substr($locale, 0, 2)) .
'" content="' . htmlspecialchars(strip_tags($sponsor)) .
'"/>');
70 if ($coverages = $article->getCoverage(
null))
foreach($coverages as $locale => $coverage) {
71 $templateMgr->addHeader(
'dublinCoreCoverage' . $i++,
'<meta name="DC.Coverage" xml:lang="' . htmlspecialchars(substr($locale, 0, 2)) .
'" content="' . htmlspecialchars(strip_tags($coverage)) .
'"/>');
75 foreach ($article->getAuthors(
true) as $author) {
76 $templateMgr->addHeader(
'dublinCoreAuthor' . $i++,
'<meta name="DC.Creator.PersonalName" content="' . htmlspecialchars($author->getFullName(
false)) .
'"/>');
79 if (is_a($article,
'Submission') && ($datePublished = $article->getDatePublished())) {
80 $templateMgr->addHeader(
'dublinCoreDateCreated',
'<meta name="DC.Date.created" scheme="ISO8601" content="' . strftime(
'%Y-%m-%d', strtotime($datePublished)) .
'"/>');
82 $templateMgr->addHeader(
'dublinCoreDateSubmitted',
'<meta name="DC.Date.dateSubmitted" scheme="ISO8601" content="' . strftime(
'%Y-%m-%d', strtotime($article->getDateSubmitted())) .
'"/>');
83 if ($issue && ($datePublished = $issue->getDatePublished())) {
84 $templateMgr->addHeader(
'dublinCoreDateIssued',
'<meta name="DC.Date.issued" scheme="ISO8601" content="' . strftime(
'%Y-%m-%d', strtotime($issue->getDatePublished())) .
'"/>');
86 if ($dateModified = $article->getCurrentPublication()->getData(
'lastModified')) $templateMgr->addHeader(
'dublinCoreDateModified',
'<meta name="DC.Date.modified" scheme="ISO8601" content="' . strftime(
'%Y-%m-%d', strtotime($dateModified)) .
'"/>');
90 if ($abstracts = (array) $publication->getData(
'abstract'))
foreach($abstracts as $locale => $abstract) {
91 $templateMgr->addHeader(
'dublinCoreAbstract' . $i++,
'<meta name="DC.Description" xml:lang="' . htmlspecialchars(substr($locale, 0, 2)) .
'" content="' . htmlspecialchars(strip_tags($abstract)) .
'"/>');
96 if (is_a($article,
'Submission'))
foreach($article->getGalleys() as $galley) {
97 if (is_a($galley,
'SupplementaryFile'))
continue;
98 $templateMgr->addHeader(
'dublinCoreFormat' . $i++,
'<meta name="DC.Format" scheme="IMT" content="' . htmlspecialchars($galley->getFileType()) .
'"/>');
101 $templateMgr->addHeader(
'dublinCoreIdentifier',
'<meta name="DC.Identifier" content="' . htmlspecialchars($article->getBestId()) .
'"/>');
103 if ($pages = $article->getPages()) {
104 $templateMgr->addHeader(
'dublinCorePages',
'<meta name="DC.Identifier.pageNumber" content="' . htmlspecialchars($pages) .
'"/>');
107 foreach((array) $templateMgr->getTemplateVars(
'pubIdPlugins') as $pubIdPlugin) {
108 if ($pubId = $article->getStoredPubId($pubIdPlugin->getPubIdType())) {
109 $templateMgr->addHeader(
'dublinCorePubId' . $pubIdPlugin->getPubIdDisplayType(),
'<meta name="DC.Identifier.' . htmlspecialchars($pubIdPlugin->getPubIdDisplayType()) .
'" content="' . htmlspecialchars($pubId) .
'"/>');
113 $templateMgr->addHeader(
'dublinCoreUri',
'<meta name="DC.Identifier.URI" content="' .
$request->url(
null,
'article',
'view', array($article->getBestId())) .
'"/>');
114 $templateMgr->addHeader(
'dublinCoreLanguage',
'<meta name="DC.Language" scheme="ISO639-1" content="' . substr($article->getLocale(), 0, 2) .
'"/>');
115 $templateMgr->addHeader(
'dublinCoreCopyright',
'<meta name="DC.Rights" content="' . htmlspecialchars(__(
'submission.copyrightStatement', array(
'copyrightHolder' => $article->getCopyrightHolder($article->getLocale()),
'copyrightYear' => $article->getCopyrightYear()))) .
'"/>');
116 $templateMgr->addHeader(
'dublinCorePagesLicenseUrl',
'<meta name="DC.Rights" content="' . htmlspecialchars($article->getLicenseURL()) .
'"/>');
117 $templateMgr->addHeader(
'dublinCoreSource',
'<meta name="DC.Source" content="' . htmlspecialchars($journal->getName($journal->getPrimaryLocale())) .
'"/>');
118 if (($issn = $journal->getData(
'onlineIssn')) || ($issn = $journal->getData(
'printIssn')) || ($issn = $journal->getData(
'issn'))) {
119 $templateMgr->addHeader(
'dublinCoreIssn',
'<meta name="DC.Source.ISSN" content="' . htmlspecialchars($issn) .
'"/>');
123 if ($issue->getShowNumber()) $templateMgr->addHeader(
'dublinCoreIssue',
'<meta name="DC.Source.Issue" content="' . htmlspecialchars($issue->getNumber()) .
'"/>');
124 if ($issue->getShowVolume()) $templateMgr->addHeader(
'dublinCoreVolume',
'<meta name="DC.Source.Volume" content="' . htmlspecialchars($issue->getVolume()) .
'"/>');
127 $templateMgr->addHeader(
'dublinCoreSourceUri',
'<meta name="DC.Source.URI" content="' .
$request->url($journal->getPath()) .
'"/>');
130 $keywords = $dao->getKeywords($article->getCurrentPublication()->getId(), array(
AppLocale::getLocale()));
131 foreach ($keywords as $locale => $localeKeywords) {
132 foreach ($localeKeywords as $keyword) {
133 $templateMgr->addHeader(
'dublinCoreSubject' . $locale,
'<meta name="DC.Subject" xml:lang="' . htmlspecialchars(substr($locale, 0, 2)) .
'" content="' . htmlspecialchars($keyword) .
'"/>');
138 $templateMgr->addHeader(
'dublinCoreTitle',
'<meta name="DC.Title" content="' . htmlspecialchars($publication->getLocalizedTitle()) .
'"/>');
139 foreach ($publication->getData(
'title') as $locale => $title) {
140 if (empty($title) || $locale === $publication->getData(
'locale'))
continue;
141 $templateMgr->addHeader(
'dublinCoreAltTitle' . $locale,
'<meta name="DC.Title.Alternative" xml:lang="' . htmlspecialchars(substr($locale, 0, 2)) .
'" content="' . htmlspecialchars($publication->getLocalizedTitle($locale)) .
'"/>');
145 $templateMgr->addHeader(
'dublinCoreType',
'<meta name="DC.Type" content="Text.Serial.Journal"/>');
146 if ($types = $article->getType(
null))
foreach($types as $locale => $type) {
147 $templateMgr->addHeader(
'dublinCoreType' . $locale,
'<meta name="DC.Type" xml:lang="' . htmlspecialchars(substr($locale, 0, 2)) .
'" content="' . htmlspecialchars(strip_tags($type)) .
'"/>');
150 $publication = $article->getCurrentPublication();
153 $section = $sectionDao->getById($publication->getData(
'sectionId'));
154 $templateMgr->addHeader(
'dublinCoreArticleType',
'<meta name="DC.Type.articleType" content="' . htmlspecialchars($section->getTitle($journal->getPrimaryLocale())) .
'"/>');
165 return __(
'plugins.generic.dublinCoreMeta.name');
173 return __(
'plugins.generic.dublinCoreMeta.description');