00001 <?php
00002
00015
00016
00017
00018 import('classes.plugins.GenericPlugin');
00019
00020 class CoinsPlugin extends GenericPlugin {
00021
00028 function register($category, $path) {
00029 $success = parent::register($category, $path);
00030 if (!Config::getVar('general', 'installed')) return false;
00031 $this->addLocaleData();
00032 if ($success) {
00033 HookRegistry::register('Templates::Article::Footer::PageFooter', array($this, 'insertFooter'));
00034 }
00035 return $success;
00036 }
00037
00044 function getName() {
00045 return 'CoinsPlugin';
00046 }
00047
00048 function getDisplayName() {
00049 return Locale::translate('plugins.generic.coins.displayName');
00050 }
00051
00052 function getDescription() {
00053 return Locale::translate('plugins.generic.coins.description');
00054 }
00055
00061 function getInstallSitePluginSettingsFile() {
00062 return $this->getPluginPath() . '/settings.xml';
00063 }
00064
00068 function getManagementVerbs() {
00069 $verbs = array();
00070 if ($this->getEnabled()) {
00071 $verbs[] = array(
00072 'disable',
00073 Locale::translate('manager.plugins.disable')
00074 );
00075 } else {
00076 $verbs[] = array(
00077 'enable',
00078 Locale::translate('manager.plugins.enable')
00079 );
00080 }
00081 return $verbs;
00082 }
00083
00087 function getEnabled() {
00088 $journal =& Request::getJournal();
00089 if (!$journal) return false;
00090 return $this->getSetting($journal->getJournalId(), 'enabled');
00091 }
00092
00096 function setEnabled($enabled) {
00097 $journal =& Request::getJournal();
00098 if ($journal) {
00099 $this->updateSetting($journal->getJournalId(), 'enabled', $enabled ? true : false);
00100 return true;
00101 }
00102 return false;
00103 }
00104
00108 function insertFooter($hookName, $params) {
00109 if ($this->getEnabled()) {
00110 $smarty =& $params[1];
00111 $output =& $params[2];
00112 $templateMgr =& TemplateManager::getManager();
00113
00114 $article = $templateMgr->get_template_vars('article');
00115 $journal = $templateMgr->get_template_vars('currentJournal');
00116 $issue = $templateMgr->get_template_vars('issue');
00117
00118 $authors = $article->getAuthors();
00119 $firstAuthor =& $authors[0];
00120
00121 $vars = array(
00122 array('ctx_ver', 'Z39.88-2004'),
00123 array('rft_id', Request::url(null, 'article', 'view', $article->getArticleId())),
00124 array('rft_val_fmt', 'info:ofi/fmt:kev:mtx:journal'),
00125 array('rft.genre', 'article'),
00126 array('rft.title', $journal->getJournalTitle()),
00127 array('rft.jtitle', $journal->getJournalTitle()),
00128 array('rft.atitle', $article->getArticleTitle()),
00129 array('rft.artnum', $article->getBestArticleId()),
00130 array('rft.date', date('Y-m-d', strtotime($article->getDatePublished()))),
00131 array('rft.stitle', $journal->getLocalizedSetting('abbreviation')),
00132 array('rft.volume', $issue->getVolume()),
00133 array('rft.issue', $issue->getNumber()),
00134 array('rft.aulast', $firstAuthor->getLastName()),
00135 array('rft.aufirst', $firstAuthor->getFirstName()),
00136 array('rft.auinit', $firstAuthor->getMiddleName())
00137 );
00138
00139 foreach ($authors as $author) {
00140 $vars[] = array('rft.au', $author->getFullName());
00141 }
00142
00143 if ($article->getPages()) $vars[] = array('rft.pages', $article->getPages());
00144 if ($journal->getSetting('printIssn')) $vars[] = array('rft.issn', $journal->getSetting('printIssn'));
00145 if ($journal->getSetting('onlineIssn')) $vars[] = array('rft.issn', $journal->getSetting('onlineIssn'));
00146
00147 $title = '';
00148 foreach ($vars as $entries) {
00149 list($name, $value) = $entries;
00150 $title .= $name . '=' . urlencode($value) . '&';
00151 }
00152 $title = htmlentities(substr($title, 0, -1));
00153
00154 $output .= "<span class=\"Z3988\" title=\"$title\"></span>\n";
00155 }
00156 return false;
00157 }
00158
00162 function manage($verb, $args) {
00163 switch ($verb) {
00164 case 'enable':
00165 $this->setEnabled(true);
00166 break;
00167 case 'disable':
00168 $this->setEnabled(false);
00169 break;
00170 default:
00171 Request::redirect(null, 'manager');
00172 }
00173 return false;
00174 }
00175 }
00176 ?>