/** * Main method. * * @since 0.1 * * @param string $arg */ public function execute($subPage) { if (!parent::execute($subPage)) { return; } if (is_null($subPage) || trim($subPage) === '') { $this->getOutput()->redirect(SpecialPage::getTitleFor('Surveys')->getLocalURL()); } else { $subPage = trim($subPage); if (Survey::has(array('name' => $subPage))) { $survey = Survey::newFromName($subPage); $this->displayNavigation(array(wfMsgExt('survey-navigation-edit', 'parseinline', $survey->getField('name')), wfMsgExt('survey-navigation-take', 'parseinline', $survey->getField('name')), wfMsgExt('survey-navigation-list', 'parseinline'))); $this->displayStats($survey); } else { $this->showError('surveys-surveystats-nosuchsurvey'); } } }
/** * Hook to insert things into article headers. * * @since 0.1 * * @param Article &$article * @param boolean $outputDone * @param boolean $useParserCache * * @return true */ public static function onArticleViewHeader(Article &$article, &$outputDone, &$useParserCache) { if (!Survey::has(array('enabled' => 1))) { return true; } $surveys = Survey::select(array('id', 'namespaces', 'ratio', 'expiry', 'min_pages'), array('enabled' => 1, 'user_type' => Survey::getTypesForUser($GLOBALS['wgUser']))); foreach ($surveys as $survey) { if (count($survey->getField('namespaces')) == 0) { $nsValid = true; } else { $nsValid = in_array($article->getTitle()->getNamespace(), $survey->getField('namespaces')); } if ($nsValid) { $GLOBALS['wgOut']->addWikiText(Xml::element('survey', array('id' => $survey->getId(), 'ratio' => $survey->getField('ratio'), 'expiry' => $survey->getField('expiry'), 'min-pages' => $survey->getField('min_pages')))); } } return true; }