Open Journal Systems  3.3.0
PLNGatewayPlugin.inc.php
1 <?php
2 
14 import('lib.pkp.classes.plugins.GatewayPlugin');
15 import('lib.pkp.classes.site.VersionCheck');
16 import('lib.pkp.classes.db.DBResultRange');
17 import('lib.pkp.classes.core.ArrayItemIterator');
18 
19 define('PLN_PLUGIN_PING_ARTICLE_COUNT', 12);
20 
21 // Archive/Tar.php may not be installed, so supress possible error.
22 @include_once('Archive/Tar.php');
23 
27 
32  public function __construct($parentPluginName) {
33  parent::__construct();
34  $this->parentPluginName = $parentPluginName;
35  }
36 
41  public function getHideManagement() {
42  return true;
43  }
44 
48  public function getName() {
49  return 'PLNGatewayPlugin';
50  }
51 
55  public function getDisplayName() {
56  return __('plugins.generic.plngateway.displayName');
57  }
58 
62  public function getDescription() {
63  return __('plugins.generic.plngateway.description');
64  }
65 
70  public function getPLNPlugin() {
71  return PluginRegistry::getPlugin('generic', $this->parentPluginName);
72  }
73 
78  public function getPluginPath() {
79  $plugin = $this->getPLNPlugin();
80  return $plugin->getPluginPath();
81  }
82 
87  public function getTemplatePath($inCore = false) {
88  $plugin = $this->getPLNPlugin();
89  return $plugin->getTemplatePath($inCore);
90  }
91 
97  public function getEnabled() {
98  $plugin = $this->getPLNPlugin();
99  return $plugin->getEnabled(); // Should always be true anyway if this is loaded
100  }
101 
105  public function fetch($args, $request) {
106  $plugin = $this->getPLNPlugin();
107  $templateMgr = TemplateManager::getManager($request);
108  $journal = $request->getJournal();
109 
110  $pluginVersionFile = $this->getPluginPath() . DIRECTORY_SEPARATOR . 'version.xml';
111  $pluginVersion = VersionCheck::parseVersionXml($pluginVersionFile);
112  $templateMgr->assign('pluginVersion', $pluginVersion);
113 
114  $terms = array();
115  $termsAccepted = $plugin->termsAgreed($journal->getId());
116  if ($termsAccepted) {
117  $templateMgr->assign('termsAccepted', 'yes');
118  $terms = unserialize($plugin->getSetting($journal->getId(), 'terms_of_use'));
119  $termsAgreement = unserialize($plugin->getSetting($journal->getId(), 'terms_of_use_agreement'));
120  } else {
121  $templateMgr->assign('termsAccepted', 'no');
122  }
123 
125  $products = $application->getEnabledProducts('plugins.generic');
126  $prerequisites = array(
127  'phpVersion' => PHP_VERSION,
128  'zipInstalled' => class_exists('ZipArchive') ? 'yes' : 'no',
129  'tarInstalled' => class_exists('Archive_Tar') ? 'yes' : 'no',
130  'acron' => isset($products['acron']) ? 'yes' : 'no',
131  //'tasks' => Config::getVar('general', 'scheduled_tasks', false) ? 'yes' : 'no',
132  );
133  $templateMgr->assign('prerequisites', $prerequisites);
134 
135  $termKeys = array_keys($terms);
136  $termsDisplay = array();
137  foreach ($termKeys as $key) {
138  $termsDisplay[] = array(
139  'key' => $key,
140  'term' => $terms[$key]['term'],
141  'updated' => $terms[$key]['updated'],
142  'accepted' => $termsAgreement[$key]
143  );
144  }
145  $templateMgr->assign('termsDisplay', new ArrayItemIterator($termsDisplay));
146 
147  $versionDao = DAORegistry::getDAO('VersionDAO');
148  $ojsVersion = $versionDao->getCurrentVersion();
149  $templateMgr->assign('ojsVersion', $ojsVersion->getVersionString());
150 
151  $submissionDao = DAORegistry::getDAO('SubmissionDAO');
152  $publications = array();
153  $submissions = $submissionDao->getByContextId($journal->getId());
154  while ($submission = $submissions->next()) {
155  $publication = $submission->getCurrentPublication();
156  if (!$publication || $publication->getData('status') != STATUS_PUBLISHED) continue;
157  $publications[] = $publication;
158  if (count($publications) == PLN_PLUGIN_PING_ARTICLE_COUNT) break;
159  }
160  $submissions->close();
161  $templateMgr->assign('publications', $publications);
162  $templateMgr->assign('pln_network', $plugin->getSetting($journal->getId(), 'pln_network'));
163 
164  header('Content-Type: text/xml; charset=' . Config::getVar('i18n', 'client_charset'));
165  $templateMgr->display($plugin->getTemplateResource('ping.tpl'));
166 
167  return true;
168  }
169 }
PLNGatewayPlugin\getDescription
getDescription()
Definition: PLNGatewayPlugin.inc.php:65
$application
$application
Definition: index.php:65
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
Plugin\__construct
__construct()
Definition: Plugin.inc.php:73
PLNGatewayPlugin\$parentPluginName
$parentPluginName
Definition: PLNGatewayPlugin.inc.php:29
PLNGatewayPlugin\__construct
__construct($parentPluginName)
Definition: PLNGatewayPlugin.inc.php:35
PLNGatewayPlugin\getPLNPlugin
getPLNPlugin()
Definition: PLNGatewayPlugin.inc.php:73
Config\getVar
static getVar($section, $key, $default=null)
Definition: Config.inc.php:35
ArrayItemIterator
Provides paging and iteration for arrays.
Definition: ArrayItemIterator.inc.php:19
Seboettg\Collection\count
count()
Definition: ArrayListTrait.php:253
PKPApplication\getApplication
static getApplication()
Definition: PKPApplication.inc.php:227
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
PLNGatewayPlugin\getDisplayName
getDisplayName()
Definition: PLNGatewayPlugin.inc.php:58
PLNGatewayPlugin\getEnabled
getEnabled()
Definition: PLNGatewayPlugin.inc.php:100
PLNGatewayPlugin\fetch
fetch($args, $request)
Definition: PLNGatewayPlugin.inc.php:108
PLNGatewayPlugin\getTemplatePath
getTemplatePath($inCore=false)
Definition: PLNGatewayPlugin.inc.php:90
Plugin\$request
$request
Definition: Plugin.inc.php:68
PluginRegistry\getPlugin
static getPlugin($category, $name)
Definition: PluginRegistry.inc.php:85
PLNGatewayPlugin\getPluginPath
getPluginPath()
Definition: PLNGatewayPlugin.inc.php:81
PLNGatewayPlugin\getHideManagement
getHideManagement()
Definition: PLNGatewayPlugin.inc.php:44
PLNGatewayPlugin\getName
getName()
Definition: PLNGatewayPlugin.inc.php:51
GatewayPlugin
Abstract class for gateway plugins.
Definition: GatewayPlugin.inc.php:18
PLNGatewayPlugin
Gateway component of web PLN plugin.
Definition: PLNGatewayPlugin.inc.php:24