Open Journal Systems  3.3.0
WebFeedPlugin.inc.php
1 <?php
2 
16 import('lib.pkp.classes.plugins.GenericPlugin');
17 
23  public function getDisplayName() {
24  return __('plugins.generic.webfeed.displayName');
25  }
26 
31  public function getDescription() {
32  return __('plugins.generic.webfeed.description');
33  }
34 
38  public function register($category, $path, $mainContextId = null) {
39  if (!parent::register($category, $path, $mainContextId)) return false;
40  if ($this->getEnabled($mainContextId)) {
41  HookRegistry::register('TemplateManager::display',array($this, 'callbackAddLinks'));
42  $this->import('WebFeedBlockPlugin');
43  PluginRegistry::register('blocks', new WebFeedBlockPlugin($this), $this->getPluginPath());
44 
45  $this->import('WebFeedGatewayPlugin');
46  PluginRegistry::register('gateways', new WebFeedGatewayPlugin($this), $this->getPluginPath());
47  }
48  return true;
49  }
50 
57  return $this->getPluginPath() . '/settings.xml';
58  }
59 
63  public function callbackAddLinks($hookName, $args) {
64  // Only page requests will be handled
65  $request = Application::get()->getRequest();
66  if (!is_a($request->getRouter(), 'PKPPageRouter')) return false;
67 
68  $templateManager =& $args[0];
69  $currentJournal = $templateManager->getTemplateVars('currentJournal');
70  if (is_null($currentJournal)) {
71  return;
72  }
73  $issueDao = DAORegistry::getDAO('IssueDAO'); /* @var $issueDao IssueDAO */
74  $currentIssue = $issueDao->getCurrent($currentJournal->getId(), true);
75 
76  if (!$currentIssue) {
77  return;
78  }
79 
80  $displayPage = $this->getSetting($currentJournal->getId(), 'displayPage');
81 
82  // Define when the <link> elements should appear
83  $contexts = 'frontend';
84  if ($displayPage == 'homepage') {
85  $contexts = array('frontend-index', 'frontend-issue');
86  } elseif ($displayPage == 'issue') {
87  $contexts = 'frontend-issue';
88  }
89 
90  $templateManager->addHeader(
91  'webFeedAtom+xml',
92  '<link rel="alternate" type="application/atom+xml" href="' . $request->url(null, 'gateway', 'plugin', array('WebFeedGatewayPlugin', 'atom')) . '">',
93  array(
94  'contexts' => $contexts,
95  )
96  );
97  $templateManager->addHeader(
98  'webFeedRdf+xml',
99  '<link rel="alternate" type="application/rdf+xml" href="'. $request->url(null, 'gateway', 'plugin', array('WebFeedGatewayPlugin', 'rss')) . '">',
100  array(
101  'contexts' => $contexts,
102  )
103  );
104  $templateManager->addHeader(
105  'webFeedRss+xml',
106  '<link rel="alternate" type="application/rss+xml" href="'. $request->url(null, 'gateway', 'plugin', array('WebFeedGatewayPlugin', 'rss2')) . '">',
107  array(
108  'contexts' => $contexts,
109  )
110  );
111 
112  return false;
113  }
114 
118  public function getActions($request, $verb) {
119  $router = $request->getRouter();
120  import('lib.pkp.classes.linkAction.request.AjaxModal');
121  return array_merge(
122  $this->getEnabled()?array(
123  new LinkAction(
124  'settings',
125  new AjaxModal(
126  $router->url($request, null, null, 'manage', null, array('verb' => 'settings', 'plugin' => $this->getName(), 'category' => 'generic')),
127  $this->getDisplayName()
128  ),
129  __('manager.plugins.settings'),
130  null
131  ),
132  ):array(),
133  parent::getActions($request, $verb)
134  );
135  }
136 
140  public function manage($args, $request) {
141  switch ($request->getUserVar('verb')) {
142  case 'settings':
143  AppLocale::requireComponents(LOCALE_COMPONENT_APP_COMMON, LOCALE_COMPONENT_PKP_MANAGER);
144  $this->import('WebFeedSettingsForm');
145  $form = new WebFeedSettingsForm($this, $request->getContext()->getId());
146 
147  if ($request->getUserVar('save')) {
148  $form->readInputData();
149  if ($form->validate()) {
150  $form->execute();
151  $notificationManager = new NotificationManager();
152  $notificationManager->createTrivialNotification($request->getUser()->getId());
153  return new JSONMessage(true);
154  }
155  } else {
156  $form->initData();
157  }
158  return new JSONMessage(true, $form->fetch($request));
159  }
160  return parent::manage($args, $request);
161  }
162 }
AppLocale\requireComponents
static requireComponents()
Definition: env1/MockAppLocale.inc.php:56
WebFeedPlugin\getDisplayName
getDisplayName()
Definition: WebFeedPlugin.inc.php:23
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
WebFeedPlugin
Web Feeds plugin class.
Definition: WebFeedPlugin.inc.php:18
Plugin\getEnabled
getEnabled()
Definition: Plugin.inc.php:868
JSONMessage
Class to represent a JSON (Javascript Object Notation) message.
Definition: JSONMessage.inc.php:18
Plugin\getSetting
getSetting($contextId, $name)
Definition: Plugin.inc.php:473
AjaxModal
A modal that retrieves its content from via AJAX.
Definition: AjaxModal.inc.php:18
LinkAction
Base class defining an action that can be performed by the user in the user interface.
Definition: LinkAction.inc.php:22
WebFeedPlugin\callbackAddLinks
callbackAddLinks($hookName, $args)
Definition: WebFeedPlugin.inc.php:63
LazyLoadPlugin\getName
getName()
Definition: LazyLoadPlugin.inc.php:40
WebFeedPlugin\manage
manage($args, $request)
Definition: WebFeedPlugin.inc.php:140
WebFeedPlugin\getDescription
getDescription()
Definition: WebFeedPlugin.inc.php:31
WebFeedPlugin\getContextSpecificPluginSettingsFile
getContextSpecificPluginSettingsFile()
Definition: WebFeedPlugin.inc.php:56
WebFeedGatewayPlugin
Gateway component of web feed plugin.
Definition: WebFeedGatewayPlugin.inc.php:19
Plugin\getPluginPath
getPluginPath()
Definition: Plugin.inc.php:330
Plugin\$request
$request
Definition: Plugin.inc.php:68
HookRegistry\register
static register($hookName, $callback, $hookSequence=HOOK_SEQUENCE_NORMAL)
Definition: HookRegistry.inc.php:70
WebFeedPlugin\getActions
getActions($request, $verb)
Definition: WebFeedPlugin.inc.php:118
NotificationManager
Definition: NotificationManager.inc.php:19
PKPApplication\get
static get()
Definition: PKPApplication.inc.php:235
PluginRegistry\register
static register($category, $plugin, $path, $mainContextId=null)
Definition: PluginRegistry.inc.php:64
GenericPlugin
Abstract class for generic plugins.
Definition: GenericPlugin.inc.php:18
WebFeedSettingsForm
Form for managers to modify web feeds plugin settings.
Definition: WebFeedSettingsForm.inc.php:18
WebFeedBlockPlugin
Class for block component of web feed plugin.
Definition: WebFeedBlockPlugin.inc.php:18