17 import(
'lib.pkp.classes.plugins.GatewayPlugin');
27 $this->_parentPlugin = $parentPlugin;
28 parent::__construct();
37 return 'AnnouncementFeedGatewayPlugin';
51 return __(
'plugins.generic.announcementfeed.displayName');
58 return __(
'plugins.generic.announcementfeed.description');
65 return $this->_parentPlugin->getPluginPath();
74 return $this->_parentPlugin->getEnabled();
85 if (!$journal)
return false;
88 $announcementsEnabled = $journal->getData(
'enableAnnouncements');
89 if (!$announcementsEnabled || !$this->_parentPlugin->getEnabled())
return false;
92 $type = array_shift($args);
99 'rss' =>
'application/rdf+xml',
100 'rss2' =>
'application/rss+xml',
101 'atom' =>
'application/atom+xml'
103 if (!isset($typeMap[$type]))
return false;
106 $recentItems = (int) $this->_parentPlugin->getSetting($journal->getId(),
'recentItems');
109 $journalId = $journal->getId();
110 if ($recentItems > 0) {
111 import(
'lib.pkp.classes.db.DBResultRange');
113 $announcements = $announcementDao->getAnnouncementsNotExpiredByAssocId(ASSOC_TYPE_JOURNAL, $journalId, $rangeInfo);
115 $announcements = $announcementDao->getAnnouncementsNotExpiredByAssocId(ASSOC_TYPE_JOURNAL, $journalId);
119 $lastDateUpdated = $this->_parentPlugin->getSetting($journal->getId(),
'dateUpdated');
120 if ($announcements->wasEmpty()) {
121 if (empty($lastDateUpdated)) {
123 $this->_parentPlugin->updateSetting($journal->getId(),
'dateUpdated', $dateUpdated,
'string');
125 $dateUpdated = $lastDateUpdated;
128 $mostRecentAnnouncement = $announcementDao->getMostRecentAnnouncementByAssocId(ASSOC_TYPE_JOURNAL, $journalId);
129 $dateUpdated = $mostRecentAnnouncement->getDatetimePosted();
130 if (empty($lastDateUpdated) || (strtotime($dateUpdated) > strtotime($lastDateUpdated))) {
131 $this->_parentPlugin->updateSetting($journal->getId(),
'dateUpdated', $dateUpdated,
'string');
136 $version = $versionDao->getCurrentVersion();
139 $templateMgr->assign(array(
140 'ojsVersion' => $version->getVersionString(),
141 'selfUrl' =>
$request->getCompleteUrl(),
142 'dateUpdated' => $dateUpdated,
143 'announcements' => $announcements->toArray(),
144 'journal' => $journal,
147 $templateMgr->display($this->_parentPlugin->getTemplateResource($typeMap[$type]), $mimeTypeMap[$type]);