Open Monograph Press  3.3.0
WebFeedPlugin.inc.php
1 <?php
2 
16 import('lib.pkp.classes.plugins.GenericPlugin');
17 
23  function getDisplayName() {
24  return __('plugins.generic.webfeed.displayName');
25  }
26 
31  function getDescription() {
32  return __('plugins.generic.webfeed.description');
33  }
34 
38  function register($category, $path, $mainContextId = null) {
39  if (parent::register($category, $path, $mainContextId)) {
40  if ($this->getEnabled($mainContextId)) {
41  HookRegistry::register('TemplateManager::display',array($this, 'callbackAddLinks'));
42  $this->import('WebFeedBlockPlugin');
43  $blockPlugin = new WebFeedBlockPlugin($this);
44  PluginRegistry::register('blocks', $blockPlugin, $this->getPluginPath());
45 
46  $this->import('WebFeedGatewayPlugin');
47  $gatewayPlugin = new WebFeedGatewayPlugin($this);
48  PluginRegistry::register('gateways', $gatewayPlugin, $this->getPluginPath());
49  }
50  return true;
51  }
52  return false;
53  }
54 
61  return $this->getPluginPath() . '/settings.xml';
62  }
63 
67  function callbackAddLinks($hookName, $args) {
68  // Only page requests will be handled
69  $request = Application::get()->getRequest();
70  if (!is_a($request->getRouter(), 'PKPPageRouter')) return false;
71 
72  $templateManager =& $args[0];
73  $currentPress = $templateManager->getTemplateVars('currentPress');
74  $displayPage = $this->getSetting($currentPress->getId(), 'displayPage');
75 
76  // Define when the <link> elements should appear
77  $contexts = $displayPage == 'homepage' ? 'frontend-index' : 'frontend';
78 
79  $templateManager->addHeader(
80  'webFeedAtom+xml',
81  '<link rel="alternate" type="application/atom+xml" href="' . $request->url(null, 'gateway', 'plugin', array('WebFeedGatewayPlugin', 'atom')) . '">',
82  array(
83  'contexts' => $contexts,
84  )
85  );
86  $templateManager->addHeader(
87  'webFeedRdf+xml',
88  '<link rel="alternate" type="application/rdf+xml" href="'. $request->url(null, 'gateway', 'plugin', array('WebFeedGatewayPlugin', 'rss')) . '">',
89  array(
90  'contexts' => $contexts,
91  )
92  );
93  $templateManager->addHeader(
94  'webFeedRss+xml',
95  '<link rel="alternate" type="application/rss+xml" href="'. $request->url(null, 'gateway', 'plugin', array('WebFeedGatewayPlugin', 'rss2')) . '">',
96  array(
97  'contexts' => $contexts,
98  )
99  );
100 
101  return false;
102  }
103 
107  function getActions($request, $verb) {
108  $router = $request->getRouter();
109  import('lib.pkp.classes.linkAction.request.AjaxModal');
110  return array_merge(
111  $this->getEnabled()?array(
112  new LinkAction(
113  'settings',
114  new AjaxModal(
115  $router->url($request, null, null, 'manage', null, array('verb' => 'settings', 'plugin' => $this->getName(), 'category' => 'generic')),
116  $this->getDisplayName()
117  ),
118  __('manager.plugins.settings'),
119  null
120  ),
121  ):array(),
122  parent::getActions($request, $verb)
123  );
124  }
125 
129  function manage($args, $request) {
130  switch ($request->getUserVar('verb')) {
131  case 'settings':
132  $context = $request->getContext();
133 
134  AppLocale::requireComponents(LOCALE_COMPONENT_APP_COMMON, LOCALE_COMPONENT_PKP_MANAGER);
135  $templateMgr = TemplateManager::getManager($request);
136  $templateMgr->registerPlugin('function', 'plugin_url', array($this, 'smartyPluginUrl'));
137 
138  $this->import('SettingsForm');
139  $form = new SettingsForm($this, $context->getId());
140 
141  if ($request->getUserVar('save')) {
142  $form->readInputData();
143  if ($form->validate()) {
144  $form->execute();
145  return new JSONMessage(true);
146  }
147  } else {
148  $form->initData();
149  }
150  return new JSONMessage(true, $form->fetch($request));
151  }
152  return parent::manage($args, $request);
153  }
154 }
155 
156 
AppLocale\requireComponents
static requireComponents()
Definition: env1/MockAppLocale.inc.php:56
SettingsForm
Form for managers to modify web feeds plugin settings.
Definition: SettingsForm.inc.php:18
WebFeedPlugin\getDisplayName
getDisplayName()
Definition: WebFeedPlugin.inc.php:23
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:67
LazyLoadPlugin\getName
getName()
Definition: LazyLoadPlugin.inc.php:40
WebFeedPlugin\manage
manage($args, $request)
Definition: WebFeedPlugin.inc.php:129
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
WebFeedPlugin\getDescription
getDescription()
Definition: WebFeedPlugin.inc.php:31
WebFeedPlugin\getContextSpecificPluginSettingsFile
getContextSpecificPluginSettingsFile()
Definition: WebFeedPlugin.inc.php:60
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:107
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
WebFeedBlockPlugin
Class for block component of web feed plugin.
Definition: WebFeedBlockPlugin.inc.php:18