public function execute() { $result = $this->getResult(); $matrix = new SiteMatrix(); $langNames = Language::getLanguageNames(); $matrix_out = array('count' => $matrix->getCount()); $localLanguageNames = SiteMatrixPage::getLocalLanguageNames(); $params = $this->extractRequestParams(); $type = array_flip($params['type']); $state = array_flip($params['state']); $all = isset($state['all']); $closed = isset($state['closed']); $private = isset($state['private']); $fishbowl = isset($state['fishbowl']); if (isset($type['language'])) { foreach ($matrix->getLangList() as $lang) { $langhost = str_replace('_', '-', $lang); $language = array('code' => $langhost, 'name' => $langNames[$lang], 'site' => array()); if (isset($localLanguageNames[$lang])) { $language['localname'] = $localLanguageNames[$lang]; } foreach ($matrix->getSites() as $site) { if ($matrix->exist($lang, $site)) { $skip = true; if ($all) { $skip = false; } $url = $matrix->getCanonicalUrl($lang, $site); $site_out = array('url' => $url, 'dbname' => $matrix->getDBName($lang, $site), 'code' => $site); if ($matrix->isClosed($lang, $site)) { $site_out['closed'] = ''; if ($closed) { $skip = false; } } if ($skip) { continue; } $language['site'][] = $site_out; } } $result->setIndexedTagName($language['site'], 'site'); $matrix_out[] = $language; } } $result->setIndexedTagName($matrix_out, 'language'); $result->addValue(null, "sitematrix", $matrix_out); if (isset($type['special'])) { $specials = array(); foreach ($matrix->getSpecials() as $special) { list($lang, $site) = $special; $url = $matrix->getCanonicalUrl($lang, $site); $wiki = array(); $wiki['url'] = $url; $wiki['dbname'] = $matrix->getDBName($lang, $site); $wiki['code'] = str_replace('_', '-', $lang) . ($site != 'wiki' ? $site : ''); $skip = true; if ($all) { $skip = false; } if ($matrix->isPrivate($lang . $site)) { $wiki['private'] = ''; if ($private) { $skip = false; } } if ($matrix->isFishbowl($lang . $site)) { $wiki['fishbowl'] = ''; if ($fishbowl) { $skip = false; } } if ($matrix->isClosed($lang, $site)) { $wiki['closed'] = ''; if ($closed) { $skip = false; } } if ($skip) { continue; } $specials[] = $wiki; } $result->setIndexedTagName($specials, 'special'); $result->addValue("sitematrix", "specials", $specials); } }