getEnabled()) { // Insert Piwik page tag to common footer HookRegistry::register('Templates::Common::Footer::PageFooter', array($this, 'insertFooter')); // Insert Piwik page tag to article footer HookRegistry::register('Templates::Article::Footer::PageFooter', array($this, 'insertFooter')); // Insert Piwik page tag to article interstitial footer HookRegistry::register('Templates::Article::Interstitial::PageFooter', array($this, 'insertFooter')); // Insert Piwik page tag to article pdf interstitial footer HookRegistry::register('Templates::Article::PdfInterstitial::PageFooter', array($this, 'insertFooter')); // Insert Piwik page tag to reading tools footer HookRegistry::register('Templates::Rt::Footer::PageFooter', array($this, 'insertFooter')); // Insert Piwik page tag to help footer HookRegistry::register('Templates::Help::Footer::PageFooter', array($this, 'insertFooter')); } return $success; } /** * Get the name of this plugin. The name must be unique within * its category, and should be suitable for part of a filename * (ie short, no spaces, and no dependencies on cases being unique). * @return String name of plugin */ function getName() { return 'PiwikPlugin'; } function getDisplayName() { return __('plugins.generic.piwik.displayName'); } function getDescription() { return __('plugins.generic.piwik.description'); } /** * Extend the {url ...} smarty to support this plugin. */ function smartyPluginUrl($params, &$smarty) { $path = array($this->getCategory(), $this->getName()); if (is_array($params['path'])) { $params['path'] = array_merge($path, $params['path']); } elseif (!empty($params['path'])) { $params['path'] = array_merge($path, array($params['path'])); } else { $params['path'] = $path; } if (!empty($params['id'])) { $params['path'] = array_merge($params['path'], array($params['id'])); unset($params['id']); } return $smarty->smartyUrl($params, $smarty); } /** * Set the page's breadcrumbs, given the plugin's tree of items * to append. * @param $subclass boolean */ function setBreadcrumbs($isSubclass = false) { $templateMgr =& TemplateManager::getManager(); $pageCrumbs = array( array( Request::url(null, 'user'), 'navigation.user' ), array( Request::url(null, 'manager'), 'user.role.manager' ) ); if ($isSubclass) $pageCrumbs[] = array( Request::url(null, 'manager', 'plugins'), 'manager.plugins' ); $templateMgr->assign('pageHierarchy', $pageCrumbs); } /** * Display verbs for the management interface. */ function getManagementVerbs() { $verbs = array(); if ($this->getEnabled()) { $verbs[] = array( 'disable', __('manager.plugins.disable') ); $verbs[] = array( 'settings', __('plugins.generic.piwik.manager.settings') ); } else { $verbs[] = array( 'enable', __('manager.plugins.enable') ); } return $verbs; } /** * Determine whether or not this plugin is enabled. */ function getEnabled() { $journal =& Request::getJournal(); if (!$journal) return false; return $this->getSetting($journal->getId(), 'enabled'); } /** * Set the enabled/disabled state of this plugin */ function setEnabled($enabled) { $journal =& Request::getJournal(); if ($journal) { $this->updateSetting($journal->getJournalId(), 'enabled', $enabled ? true : false); return true; } return false; } /** * Insert Piwik page tag to footer */ function insertFooter($hookName, $params) { if ($this->getEnabled()) { $smarty =& $params[1]; $output =& $params[2]; $journal =& Request::getJournal(); $journalId = $journal->getJournalId(); $journalPath = $journal->getPath(); $piwikSiteId = $this->getSetting($journalId, 'piwikSiteId'); $piwikUrl = $this->getSetting($journalId, 'piwikUrl'); if (!empty($piwikSiteId) && !empty($piwikUrl)) { $output = ''. ''. ''; } } return false; } /** * Perform management functions */ function manage($verb, $args) { $templateMgr =& TemplateManager::getManager(); $templateMgr->register_function('plugin_url', array(&$this, 'smartyPluginUrl')); $journal =& Request::getJournal(); $returner = true; switch ($verb) { case 'enable': $this->setEnabled(true); $returner = false; break; case 'disable': $this->setEnabled(false); $returner = false; break; case 'settings': if ($this->getEnabled()) { $this->import('PiwikSettingsForm'); $form = new PiwikSettingsForm($this, $journal->getJournalId()); if (Request::getUserVar('save')) { $form->readInputData(); if ($form->validate()) { $form->execute(); Request::redirect(null, 'manager', 'plugin'); } else { $this->setBreadCrumbs(true); $form->display(); } } else { $this->setBreadCrumbs(true); $form->initData(); $form->display(); } } else { Request::redirect(null, 'manager'); } break; default: Request::redirect(null, 'manager'); } return $returner; } } ?>