Open Journal Systems  3.3.0
GatewayHandler.inc.php
1 <?php
2 
16 import('classes.handler.Handler');
17 
18 class GatewayHandler extends Handler {
19 
20  var $plugin;
21 
27  function __construct($request) {
28  parent::__construct();
29  $op = $request->getRouter()->getRequestedOp($request);
30  if ($op == 'plugin') {
31  $args = $request->getRouter()->getRequestedArgs($request);
32  $pluginName = array_shift($args);
33  $plugins = PluginRegistry::loadCategory('gateways');
34  if (!isset($plugins[$pluginName])) {
35  $request->getDispatcher()->handle404();
36  }
37  $this->plugin = $plugins[$pluginName];
38  foreach ($this->plugin->getPolicies($request) as $policy) {
39  $this->addPolicy($policy);
40  }
41  }
42  }
43 
49  function index($args, $request) {
50  $request->redirect(null, 'index');
51  }
52 
58  function lockss($args, $request) {
59  $this->validate();
60  $this->setupTemplate($request);
61 
62  $journal = $request->getJournal();
63  $templateMgr = TemplateManager::getManager($request);
64 
65  if ($journal != null) {
66  if (!$journal->getData('enableLockss')) {
67  $request->redirect(null, 'index');
68  }
69 
70  $year = $request->getUserVar('year');
71 
72  $issueDao = DAORegistry::getDAO('IssueDAO'); /* @var $issueDao IssueDAO */
73 
74  // FIXME Should probably go in IssueDAO or a subclass
75  if (isset($year)) {
76  $year = (int)$year;
77  $result = $issueDao->retrieve(
78  'SELECT * FROM issues WHERE journal_id = ? AND year = ? AND published = 1 ORDER BY current DESC, year ASC, volume ASC, number ASC',
79  array($journal->getId(), $year)
80  );
81  if ($result->RecordCount() == 0) {
82  unset($year);
83  }
84  }
85 
86  if (!isset($year)) {
87  $result = $issueDao->retrieve(
88  'SELECT MAX(year) FROM issues WHERE journal_id = ? AND published = 1',
89  $journal->getId()
90  );
91  list($year) = $result->fields;
92  $templateMgr->assign('showInfo', true);
93  }
94 
95  $prevYear = $nextYear = null;
96  if (isset($year)) {
97  $result = $issueDao->retrieve(
98  'SELECT MAX(year) FROM issues WHERE journal_id = ? AND published = 1 AND year < ?',
99  array($journal->getId(), $year)
100  );
101  list($prevYear) = $result->fields;
102 
103  $result = $issueDao->retrieve(
104  'SELECT MIN(year) FROM issues WHERE journal_id = ? AND published = 1 AND year > ?',
105  array($journal->getId(), $year)
106  );
107  list($nextYear) = $result->fields;
108  }
109 
110  $issues = $issueDao->getPublishedIssuesByNumber($journal->getId(), null, null, $year);
111  $templateMgr->assign(array(
112  'journal' => $journal,
113  'year' => $year,
114  'prevYear' => $prevYear,
115  'nextYear' => $nextYear,
116  'issues' => $issues,
117  ));
118 
119  $locales = $journal->getSupportedLocaleNames();
120  if (!isset($locales) || empty($locales)) {
121  $localeNames = AppLocale::getAllLocales();
122  $primaryLocale = AppLocale::getPrimaryLocale();
123  $locales = array($primaryLocale => $localeNames[$primaryLocale]);
124  }
125  $templateMgr->assign('locales', $locales);
126  } else {
127  $journalDao = DAORegistry::getDAO('JournalDAO'); /* @var $journalDao JournalDAO */
128  $journals = $journalDao->getAll(true);
129  $templateMgr->assign('journals', $journals);
130  }
131 
132  $templateMgr->display('gateway/lockss.tpl');
133  }
134 
140  function clockss($args, $request) {
141  $this->validate();
142  $this->setupTemplate($request);
143 
144  $journal = $request->getJournal();
145  $templateMgr = TemplateManager::getManager($request);
146 
147  if ($journal != null) {
148  if (!$journal->getData('enableClockss')) {
149  $request->redirect(null, 'index');
150  }
151 
152  $year = $request->getUserVar('year');
153 
154  $issueDao = DAORegistry::getDAO('IssueDAO'); /* @var $issueDao IssueDAO */
155 
156  // FIXME Should probably go in IssueDAO or a subclass
157  if (isset($year)) {
158  $year = (int)$year;
159  $result = $issueDao->retrieve(
160  'SELECT * FROM issues WHERE journal_id = ? AND year = ? AND published = 1 ORDER BY current DESC, year ASC, volume ASC, number ASC',
161  array($journal->getId(), $year)
162  );
163  if ($result->RecordCount() == 0) {
164  unset($year);
165  }
166  }
167 
168  if (!isset($year)) {
169  $result = $issueDao->retrieve(
170  'SELECT MAX(year) FROM issues WHERE journal_id = ? AND published = 1',
171  $journal->getId()
172  );
173  list($year) = $result->fields;
174  $issues = $issueDao->getPublishedIssuesByNumber($journal->getId(), null, null, $year);
175  $templateMgr->assign(array(
176  'issues' => $issues,
177  'showInfo' => true,
178  ));
179  }
180 
181  $prevYear = $nextYear = null;
182  if (isset($year)) {
183  $result = $issueDao->retrieve(
184  'SELECT MAX(year) FROM issues WHERE journal_id = ? AND published = 1 AND year < ?',
185  array($journal->getId(), $year)
186  );
187  list($prevYear) = $result->fields;
188 
189  $result = $issueDao->retrieve(
190  'SELECT MIN(year) FROM issues WHERE journal_id = ? AND published = 1 AND year > ?',
191  array($journal->getId(), $year)
192  );
193  list($nextYear) = $result->fields;
194  }
195 
196  $issues = $issueDao->getPublishedIssuesByNumber($journal->getId(), null, null, $year);
197  $templateMgr->assign(array(
198  'journal' => $journal,
199  'year' => $year,
200  'prevYear' => $prevYear,
201  'nextYear' => $nextYear,
202  'issues' => $issues,
203  ));
204 
205  $locales = $journal->getSupportedLocaleNames();
206  if (!isset($locales) || empty($locales)) {
207  $localeNames = AppLocale::getAllLocales();
208  $primaryLocale = AppLocale::getPrimaryLocale();
209  $locales = array($primaryLocale => $localeNames[$primaryLocale]);
210  }
211  $templateMgr->assign('locales', $locales);
212 
213  } else {
214  $journalDao = DAORegistry::getDAO('JournalDAO'); /* @var $journalDao JournalDAO */
215  $journals = $journalDao->getAll(true);
216  $templateMgr->assign('journals', $journals);
217  }
218 
219  $templateMgr->display('gateway/clockss.tpl');
220  }
221 
227  function plugin($args, $request) {
228  $this->validate();
229  if (isset($this->plugin)) {
230  if (!$this->plugin->fetch(array_slice($args, 1), $request)) {
231  $request->redirect(null, 'index');
232  }
233  } else {
234  $request->redirect(null, 'index');
235  }
236  }
237 }
GatewayHandler\$plugin
$plugin
Definition: GatewayHandler.inc.php:20
GatewayHandler\index
index($args, $request)
Definition: GatewayHandler.inc.php:49
$op
$op
Definition: lib/pkp/pages/help/index.php:18
PKPLocale\getAllLocales
static & getAllLocales()
Definition: PKPLocale.inc.php:537
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
AppLocale\getPrimaryLocale
static getPrimaryLocale()
Definition: env1/MockAppLocale.inc.php:95
PluginRegistry\loadCategory
static loadCategory($category, $enabledOnly=false, $mainContextId=null)
Definition: PluginRegistry.inc.php:103
GatewayHandler\lockss
lockss($args, $request)
Definition: GatewayHandler.inc.php:58
GatewayHandler\__construct
__construct($request)
Definition: GatewayHandler.inc.php:27
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
PKPHandler\validate
validate($requiredContexts=null, $request=null)
Definition: PKPHandler.inc.php:351
GatewayHandler
Handle external gateway requests.
Definition: GatewayHandler.inc.php:18
PKPHandler\setupTemplate
setupTemplate($request)
Definition: PKPHandler.inc.php:466
PKPHandler\addPolicy
addPolicy($authorizationPolicy, $addToTop=false)
Definition: PKPHandler.inc.php:157
GatewayHandler\plugin
plugin($args, $request)
Definition: GatewayHandler.inc.php:227
Handler
Base request handler application class.
Definition: Handler.inc.php:18
GatewayHandler\clockss
clockss($args, $request)
Definition: GatewayHandler.inc.php:140