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;
}
}
}
?>