Open Journal Systems  3.3.0
WebFeedGatewayPlugin.inc.php
1 <?php
2 
17 import('lib.pkp.classes.plugins.GatewayPlugin');
18 
21  protected $_parentPlugin;
22 
26  public function __construct($parentPlugin) {
27  parent::__construct();
28  $this->_parentPlugin = $parentPlugin;
29  }
30 
34  public function getHideManagement() {
35  return true;
36  }
37 
43  public function getName() {
44  return 'WebFeedGatewayPlugin';
45  }
46 
50  public function getDisplayName() {
51  return __('plugins.generic.webfeed.displayName');
52  }
53 
57  public function getDescription() {
58  return __('plugins.generic.webfeed.description');
59  }
60 
65  public function getPluginPath() {
66  return $this->_parentPlugin->getPluginPath();
67  }
68 
75  public function getEnabled($contextId = null) {
76  return $this->_parentPlugin->getEnabled($contextId);
77  }
78 
84  public function fetch($args, $request) {
85  // Make sure we're within a Journal context
86  $request = Application::get()->getRequest();
87  $journal = $request->getJournal();
88  if (!$journal) return false;
89 
90  // Make sure there's a current issue for this journal
91  $issueDao = DAORegistry::getDAO('IssueDAO'); /* @var $issueDao IssueDAO */
92  $issue = $issueDao->getCurrent($journal->getId(), true);
93  if (!$issue) return false;
94 
95  if (!$this->_parentPlugin->getEnabled($journal->getId())) return false;
96 
97  // Make sure the feed type is specified and valid
98  $type = array_shift($args);
99  $typeMap = array(
100  'rss' => 'rss.tpl',
101  'rss2' => 'rss2.tpl',
102  'atom' => 'atom.tpl'
103  );
104  $mimeTypeMap = array(
105  'rss' => 'application/rdf+xml',
106  'rss2' => 'application/rss+xml',
107  'atom' => 'application/atom+xml'
108  );
109  if (!isset($typeMap[$type])) return false;
110 
111  // Get limit setting from web feeds plugin
112  $displayItems = $this->_parentPlugin->getSetting($journal->getId(), 'displayItems');
113  $recentItems = (int) $this->_parentPlugin->getSetting($journal->getId(), 'recentItems');
114 
115  if ($displayItems == 'recent' && $recentItems > 0) {
116  $submissionsIterator = Services::get('submission')->getMany(['contextId' => $journal->getId(), 'count' => $recentItems]);
117  $submissionsInSections = [];
118  foreach ($submissionsIterator as $submission) {
119  $submissionsInSections[]['articles'][] = $submission;
120  }
121  } else {
122  $submissionsInSections = Services::get('submission')->getInSections($issue->getId(), $journal->getId());
123  }
124 
125  $versionDao = DAORegistry::getDAO('VersionDAO'); /* @var $versionDao VersionDAO */
126  $version = $versionDao->getCurrentVersion();
127 
128  $templateMgr = TemplateManager::getManager($request);
129  $templateMgr->assign(array(
130  'ojsVersion' => $version->getVersionString(),
131  'publishedSubmissions' => $submissionsInSections,
132  'journal' => $journal,
133  'issue' => $issue,
134  'showToc' => true,
135  ));
136 
137  AppLocale::requireComponents(LOCALE_COMPONENT_PKP_SUBMISSION); // submission.copyrightStatement
138 
139  $templateMgr->display($this->_parentPlugin->getTemplateResource($typeMap[$type]), $mimeTypeMap[$type]);
140 
141  return true;
142  }
143 }
AppLocale\requireComponents
static requireComponents()
Definition: env1/MockAppLocale.inc.php:56
WebFeedGatewayPlugin\fetch
fetch($args, $request)
Definition: WebFeedGatewayPlugin.inc.php:87
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
WebFeedGatewayPlugin\__construct
__construct($parentPlugin)
Definition: WebFeedGatewayPlugin.inc.php:29
Plugin\__construct
__construct()
Definition: Plugin.inc.php:73
WebFeedGatewayPlugin\getDescription
getDescription()
Definition: WebFeedGatewayPlugin.inc.php:60
WebFeedGatewayPlugin\getEnabled
getEnabled($contextId=null)
Definition: WebFeedGatewayPlugin.inc.php:78
GatewayPlugin\getEnabled
getEnabled()
Definition: GatewayPlugin.inc.php:47
WebFeedGatewayPlugin\$_parentPlugin
$_parentPlugin
Definition: WebFeedGatewayPlugin.inc.php:24
WebFeedGatewayPlugin\getHideManagement
getHideManagement()
Definition: WebFeedGatewayPlugin.inc.php:37
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
WebFeedGatewayPlugin
Gateway component of web feed plugin.
Definition: WebFeedGatewayPlugin.inc.php:19
Plugin\$request
$request
Definition: Plugin.inc.php:68
WebFeedGatewayPlugin\getPluginPath
getPluginPath()
Definition: WebFeedGatewayPlugin.inc.php:68
WebFeedGatewayPlugin\getName
getName()
Definition: WebFeedGatewayPlugin.inc.php:46
PKPApplication\get
static get()
Definition: PKPApplication.inc.php:235
GatewayPlugin
Abstract class for gateway plugins.
Definition: GatewayPlugin.inc.php:18
WebFeedGatewayPlugin\getDisplayName
getDisplayName()
Definition: WebFeedGatewayPlugin.inc.php:53
PKPServices\get
static get($service)
Definition: PKPServices.inc.php:49