/** * execute * * main entry point * * @access public * * @param string $subpage: subpage of Title * * @return nothing */ public function execute($subpage) { global $wgUser, $wgOut, $wgRequest; if ($wgUser->isBlocked()) { throw new UserBlockedError($this->getUser()->mBlock); } if (wfReadOnly() && !wfAutomaticReadOnly()) { $wgOut->readOnlyPage(); return; } if (!$wgUser->isAllowed('wikifactory')) { $this->displayRestrictionError(); return; } $this->mTitle = Title::makeTitle(NS_SPECIAL, 'WikiFactory'); $this->mDomain = false; /** * initial output */ $wgOut->setPageTitle(wfMsg('wikifactorypagetitle')); $wgOut->setRobotpolicy('noindex,nofollow'); $wgOut->setArticleRelated(false); #--- handle chagelog if ($subpage === "change.log") { $oPager = new ChangeLogPager(); $oTmpl = new EasyTemplate(dirname(__FILE__) . "/templates/"); $oTmpl->set_vars(array("limit" => $oPager->getForm(), "body" => $oPager->getBody(), "nav" => $oPager->getNavigationBar())); $wgOut->addHTML($oTmpl->render("changelog")); } elseif (in_array(strtolower($subpage), array("metrics", "metrics/main", "metrics/monthly", "metrics/daily"))) { $oAWCMetrics = new WikiMetrics(); $oAWCMetrics->show($subpage); } elseif (strpos($subpage, "short.stats") === 0) { $subpageOptions = explode('/', $subpage); $lang = isset($subpageOptions[1]) ? $subpageOptions[1] : null; $wgOut->addHTML($this->shortStats($lang)); } elseif (strpos($subpage, "long.stats") === 0) { $subpageOptions = explode('/', $subpage); $lang = isset($subpageOptions[1]) ? $subpageOptions[1] : null; $wgOut->addHTML($this->longStats($lang)); } elseif (strtolower($subpage) === "add.variable") { $varOverrides = array(); $wgOut->addHTML($this->doAddVariableForm($varOverrides)); // process the post (if relevant). $wgOut->addHTML($this->addVariableForm($varOverrides)); // display the form } else { $subpage = $subpage == "/" ? null : $subpage; $oWiki = $this->getWikiData($subpage); if (!isset($oWiki->city_id)) { $this->doWikiSelector(); } else { $this->mWiki = $oWiki; $this->mTags = new WikiFactoryTags($this->mWiki->city_id); $this->doWikiForm(); } } }
/** * axAWCMetrics * * Ajax call, return filtered list of all wikis with some metrics data * * @access public * @author moli@wikia * * @return string: json string */ function axAWCMetricsAllWikis() { global $wgUser, $wgRequest; if (wfReadOnly()) { return; } if (!in_array('staff', $wgUser->getGroups())) { return ""; } if ($wgUser->isBlocked()) { return ""; } $aResponse = array('nbr_records' => 0, 'data' => ''); $OAWCMetrics = new WikiMetrics(); $res = $OAWCMetrics->getFilteredWikis(); if (!empty($res)) { $aResponse['data'] = $res; $aResponse['nbr_records'] = count($res); } return json_encode($aResponse); }