public function execute() { $params = $this->extractRequestParams(); $prop = array_flip((array) $params['prop']); $from = isset($params['from']) ? $params['from'] : null; $APIResult = $this->getResult(); $data = array(); /** * @var $wikiSet WikiSet */ foreach (WikiSet::getAllWikiSets($from, $params['limit'], $params['orderbyname']) as $wikiSet) { $entry = array(); $entry['id'] = $wikiSet->getId(); $entry['name'] = $wikiSet->getName(); if (isset($prop['type'])) { $entry['type'] = $wikiSet->getType(); } if (isset($prop['wikisincluded'])) { $entry['wikisincluded'] = $wikiSet->getWikis(); if (count($entry['wikisincluded'])) { $APIResult->setIndexedTagName($entry['wikisincluded'], 'wiki'); } } if (isset($prop['wikisnotincluded'])) { $entry['wikisnotincluded'] = array_diff(CentralAuthUser::getWikiList(), $wikiSet->getWikis()); if (count($entry['wikisnotincluded'])) { $APIResult->setIndexedTagName($entry['wikisnotincluded'], 'wiki'); } } $data[] = $entry; } $APIResult->setIndexedTagName($data, 'wikiset'); $APIResult->addValue('query', $this->getModuleName(), $data); }
/** * Output a form to allow searching for a user */ function switchForm() { global $wgScript; $knownwiki = $this->getRequest()->getVal('wpKnownWiki'); $knownwiki = $knownwiki ? $knownwiki : wfWikiId(); // Generate wiki selector $selector = new XmlSelect('wpKnownWiki', 'wpKnownWiki', $knownwiki); foreach (CentralAuthUser::getWikiList() as $wiki) { $selector->addOption($wiki); } $this->getOutput()->addModuleStyles('mediawiki.special'); $this->getOutput()->addHTML(Xml::openElement('form', array('method' => 'get', 'action' => $wgScript, 'name' => 'uluser', 'id' => 'mw-userrights-form1')) . Html::hidden('title', $this->getTitle()) . Xml::openElement('fieldset') . Xml::element('legend', array(), wfMsg('userrights-lookup-user')) . Xml::inputLabel(wfMsg('userrights-user-editname'), 'user', 'username', 30, $this->mTarget) . ' <br />' . Xml::label(wfMsg('centralauth-globalgrouppermissions-knownwiki'), 'wpKnownWiki') . ' ' . $selector->getHTML() . '<br />' . Xml::submitButton(wfMsg('editusergroup')) . Xml::closeElement('fieldset') . Xml::closeElement('form') . "\n"); }
/** * @param $id * @return mixed */ function doSubmit($id) { global $wgContLang; $name = $wgContLang->ucfirst($this->getRequest()->getVal('wpName')); $type = $this->getRequest()->getVal('wpType'); $wikis = array_unique(preg_split('/(\\s+|\\s*\\W\\s*)/', $this->getRequest()->getVal('wpWikis'), -1, PREG_SPLIT_NO_EMPTY)); $reason = $this->getRequest()->getVal('wpReason'); $set = WikiSet::newFromId($id); if (!Title::newFromText($name)) { $this->buildSetView($id, wfMsgHtml('centralauth-editset-badname'), $name, $type, $wikis, $reason); return; } if ((!$id || $set->getName() != $name) && WikiSet::newFromName($name)) { $this->buildSetView($id, wfMsgHtml('centralauth-editset-setexists'), $name, $type, $wikis, $reason); return; } if (!in_array($type, array(WikiSet::OPTIN, WikiSet::OPTOUT))) { $this->buildSetView($id, wfMsgHtml('centralauth-editset-badtype'), $name, $type, $wikis, $reason); return; } if (!$wikis) { $this->buildSetView($id, wfMsgHtml('centralauth-editset-nowikis'), $name, $type, $wikis, $reason); return; } $badwikis = array(); $allwikis = CentralAuthUser::getWikiList(); foreach ($wikis as $wiki) { if (!in_array($wiki, $allwikis)) { $badwikis[] = $wiki; } } if ($badwikis) { $this->buildSetView($id, wfMsgExt('centralauth-editset-badwikis', array('escapenoentities', 'parsemag'), implode(', ', $badwikis), count($badwikis)), $name, $type, $wikis, $reason); return; } if ($set) { $oldname = $set->getName(); $oldtype = $set->getType(); $oldwikis = $set->getWikisRaw(); } else { $set = new WikiSet(); $oldname = $oldtype = null; $oldwikis = array(); } $set->setName($name); $set->setType($type); $set->setWikisRaw($wikis); $set->commit(); // Now logging $log = new LogPage('gblrights'); $title = SpecialPage::getTitleFor('WikiSets', $set->getID()); if (!$oldname) { // New set $log->addEntry('newset', $title, $reason, array($name, $type, implode(', ', $wikis))); } else { if ($oldname != $name) { $log->addEntry('setrename', $title, $reason, array($name, $oldname)); } if ($oldtype != $type) { $log->addEntry('setnewtype', $title, $reason, array($name, $oldtype, $type)); } $added = implode(', ', array_diff($wikis, $oldwikis)); $removed = implode(', ', array_diff($oldwikis, $wikis)); if ($added || $removed) { $log->addEntry('setchange', $title, $reason, array($name, $added, $removed)); } } $returnLink = Linker::makeKnownLinkObj($this->getTitle(), wfMsg('centralauth-editset-return')); $this->getOutput()->addHTML('<strong class="success">' . wfMsgHtml('centralauth-editset-success') . '</strong> <p>' . $returnLink . '</p>'); }
/** * @return array */ public function getWikis() { if ($this->mType == self::OPTIN) { return $this->mWikis; } else { return array_diff(CentralAuthUser::getWikiList(), $this->mWikis); } }