getEnabled()) { HookRegistry::register('TemplateManager::display',array(&$this, 'callbackAddLinks')); HookRegistry::register('PluginRegistry::loadCategory', array(&$this, 'callbackLoadCategory')); } return true; } return false; } /** * Get the display name of this plugin * @return string */ function getDisplayName() { return __('plugins.generic.announcementfeed.displayName'); } /** * Get the description of this plugin * @return string */ function getDescription() { return __('plugins.generic.announcementfeed.description'); } /** * Register as a block and gateway plugin, even though this is a generic plugin. * This will allow the plugin to behave as a block and gateway plugin * @param $hookName string * @param $args array */ function callbackLoadCategory($hookName, $args) { $category =& $args[0]; $plugins =& $args[1]; switch ($category) { case 'blocks': $this->import('AnnouncementFeedBlockPlugin'); $blockPlugin = new AnnouncementFeedBlockPlugin($this->getName()); $plugins[$blockPlugin->getSeq()][$blockPlugin->getPluginPath()] =& $blockPlugin; break; case 'gateways': $this->import('AnnouncementFeedGatewayPlugin'); $gatewayPlugin = new AnnouncementFeedGatewayPlugin($this->getName()); $plugins[$gatewayPlugin->getSeq()][$gatewayPlugin->getPluginPath()] =& $gatewayPlugin; break; } return false; } function callbackAddLinks($hookName, $args) { if ($this->getEnabled()) { $templateManager =& $args[0]; $currentJournal =& $templateManager->get_template_vars('currentJournal'); $announcementsEnabled = $currentJournal ? $currentJournal->getSetting('enableAnnouncements') : false; $displayPage = $currentJournal ? $this->getSetting($currentJournal->getId(), 'displayPage') : null; $requestedPage = Request::getRequestedPage(); if ( $announcementsEnabled && (($displayPage == 'all') || ($displayPage == 'homepage' && (empty($requestedPage) || $requestedPage == 'index' || $requestedPage == 'announcement')) || ($displayPage == $requestedPage)) ) { // if we have a journal selected, append feed meta-links into the header $additionalHeadData = $templateManager->get_template_vars('additionalHeadData'); $feedUrl1 = ''; $feedUrl2 = ''; $feedUrl3 = ''; $templateManager->assign('additionalHeadData', $additionalHeadData."\n\t".$feedUrl1."\n\t".$feedUrl2."\n\t".$feedUrl3); } } return false; } /** * Display verbs for the management interface. */ function getManagementVerbs() { $verbs = array(); if ($this->getEnabled()) { $verbs[] = array('settings', __('plugins.generic.announcementfeed.settings')); } return parent::getManagementVerbs($verbs); } /** * Execute a management verb on this plugin * @param $verb string * @param $args array * @param $message string Result status message * @param $messageParams array Parameters for the message key * @return boolean */ function manage($verb, $args, &$message, &$messageParams) { if (!parent::manage($verb, $args, $message, $messageParams)) return false; switch ($verb) { case 'settings': $journal =& Request::getJournal(); $templateMgr =& TemplateManager::getManager(); $templateMgr->register_function('plugin_url', array(&$this, 'smartyPluginUrl')); $this->import('SettingsForm'); $form = new SettingsForm($this, $journal->getId()); if (Request::getUserVar('save')) { $form->readInputData(); if ($form->validate()) { $form->execute(); return false; } else { $form->display(); } } else { $form->initData(); $form->display(); } return true; default: // Unknown management verb assert(false); return false; } } } ?>