本文整理汇总了PHP中ApiPageSet::setGeneratorData方法的典型用法代码示例。如果您正苦于以下问题:PHP ApiPageSet::setGeneratorData方法的具体用法?PHP ApiPageSet::setGeneratorData怎么用?PHP ApiPageSet::setGeneratorData使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ApiPageSet
的用法示例。
在下文中一共展示了ApiPageSet::setGeneratorData方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: createPageSetWithRedirect
protected function createPageSetWithRedirect()
{
$target = Title::makeTitle(NS_MAIN, 'UTRedirectTarget');
$sourceA = Title::makeTitle(NS_MAIN, 'UTRedirectSourceA');
$sourceB = Title::makeTitle(NS_MAIN, 'UTRedirectSourceB');
self::editPage('UTRedirectTarget', 'api page set test');
self::editPage('UTRedirectSourceA', '#REDIRECT [[UTRedirectTarget]]');
self::editPage('UTRedirectSourceB', '#REDIRECT [[UTRedirectTarget]]');
$request = new FauxRequest(['redirects' => 1]);
$context = new RequestContext();
$context->setRequest($request);
$main = new ApiMain($context);
$pageSet = new ApiPageSet($main);
$pageSet->setGeneratorData($sourceA, ['index' => 1]);
$pageSet->setGeneratorData($sourceB, ['index' => 3]);
$pageSet->populateFromTitles([$sourceA, $sourceB]);
return [$target, $pageSet];
}
示例2: run
/**
* @param ApiPageSet $resultPageSet
*/
private function run($resultPageSet = null)
{
$params = $this->extractRequestParams();
$search = $params['search'];
$limit = $params['limit'];
$namespaces = $params['namespace'];
$offset = $params['offset'];
$searchEngine = MediaWikiServices::getInstance()->newSearchEngine();
$searchEngine->setLimitOffset($limit + 1, $offset);
$searchEngine->setNamespaces($namespaces);
$titles = $searchEngine->extractTitles($searchEngine->completionSearchWithVariants($search));
if ($resultPageSet) {
$resultPageSet->setRedirectMergePolicy(function (array $current, array $new) {
if (!isset($current['index']) || $new['index'] < $current['index']) {
$current['index'] = $new['index'];
}
return $current;
});
if (count($titles) > $limit) {
$this->setContinueEnumParameter('offset', $offset + $params['limit']);
array_pop($titles);
}
$resultPageSet->populateFromTitles($titles);
foreach ($titles as $index => $title) {
$resultPageSet->setGeneratorData($title, ['index' => $index + $offset + 1]);
}
} else {
$result = $this->getResult();
$count = 0;
foreach ($titles as $title) {
if (++$count > $limit) {
$this->setContinueEnumParameter('offset', $offset + $params['limit']);
break;
}
$vals = ['ns' => intval($title->getNamespace()), 'title' => $title->getPrefixedText()];
if ($title->isSpecialPage()) {
$vals['special'] = true;
} else {
$vals['pageid'] = intval($title->getArticleID());
}
$fit = $result->addValue(['query', $this->getModuleName()], null, $vals);
if (!$fit) {
$this->setContinueEnumParameter('offset', $offset + $count - 1);
break;
}
}
$result->addIndexedTagName(['query', $this->getModuleName()], $this->getModulePrefix());
}
}
示例3: run
/**
* @param ApiPageSet $resultPageSet
*/
private function run($resultPageSet = null)
{
$params = $this->extractRequestParams();
$search = $params['search'];
$limit = $params['limit'];
$namespaces = $params['namespace'];
$offset = $params['offset'];
$searcher = new TitlePrefixSearch();
$titles = $searcher->searchWithVariants($search, $limit + 1, $namespaces, $offset);
if ($resultPageSet) {
if (count($titles) > $limit) {
$this->setContinueEnumParameter('offset', $offset + $params['limit']);
array_pop($titles);
}
$resultPageSet->populateFromTitles($titles);
foreach ($titles as $index => $title) {
$resultPageSet->setGeneratorData($title, array('index' => $index + $offset + 1));
}
} else {
$result = $this->getResult();
$count = 0;
foreach ($titles as $title) {
if (++$count > $limit) {
$this->setContinueEnumParameter('offset', $offset + $params['limit']);
break;
}
$vals = array('ns' => intval($title->getNamespace()), 'title' => $title->getPrefixedText());
if ($title->isSpecialPage()) {
$vals['special'] = true;
} else {
$vals['pageid'] = intval($title->getArticleId());
}
$fit = $result->addValue(array('query', $this->getModuleName()), null, $vals);
if (!$fit) {
$this->setContinueEnumParameter('offset', $offset + $count - 1);
break;
}
}
$result->addIndexedTagName(array('query', $this->getModuleName()), $this->getModulePrefix());
}
}
示例4: run
//.........这里部分代码省略.........
$result = $matches->next();
continue;
}
$title = $result->getTitle();
if ($resultPageSet === null) {
$vals = array();
ApiQueryBase::addTitleInfo($vals, $title);
if (isset($prop['snippet'])) {
$vals['snippet'] = $result->getTextSnippet($terms);
}
if (isset($prop['size'])) {
$vals['size'] = $result->getByteSize();
}
if (isset($prop['wordcount'])) {
$vals['wordcount'] = $result->getWordCount();
}
if (isset($prop['timestamp'])) {
$vals['timestamp'] = wfTimestamp(TS_ISO_8601, $result->getTimestamp());
}
if (isset($prop['titlesnippet'])) {
$vals['titlesnippet'] = $result->getTitleSnippet();
}
if (isset($prop['categorysnippet'])) {
$vals['categorysnippet'] = $result->getCategorySnippet();
}
if (!is_null($result->getRedirectTitle())) {
if (isset($prop['redirecttitle'])) {
$vals['redirecttitle'] = $result->getRedirectTitle()->getPrefixedText();
}
if (isset($prop['redirectsnippet'])) {
$vals['redirectsnippet'] = $result->getRedirectSnippet();
}
}
if (!is_null($result->getSectionTitle())) {
if (isset($prop['sectiontitle'])) {
$vals['sectiontitle'] = $result->getSectionTitle()->getFragment();
}
if (isset($prop['sectionsnippet'])) {
$vals['sectionsnippet'] = $result->getSectionSnippet();
}
}
if (isset($prop['isfilematch'])) {
$vals['isfilematch'] = $result->isFileMatch();
}
// Add item to results and see whether it fits
$fit = $apiResult->addValue(array('query', $this->getModuleName()), null, $vals);
if (!$fit) {
$this->setContinueEnumParameter('offset', $params['offset'] + $count - 1);
break;
}
} else {
$titles[] = $title;
}
$result = $matches->next();
}
$hasInterwikiResults = false;
$totalhits = null;
if ($interwiki && $resultPageSet === null && $matches->hasInterwikiResults()) {
foreach ($matches->getInterwikiResults() as $matches) {
$matches = $matches->getInterwikiResults();
$hasInterwikiResults = true;
// Include number of results if requested
if ($resultPageSet === null && isset($searchInfo['totalhits'])) {
$totalhits += $matches->getTotalHits();
}
$result = $matches->next();
while ($result) {
$title = $result->getTitle();
if ($resultPageSet === null) {
$vals = array('namespace' => $result->getInterwikiNamespaceText(), 'title' => $title->getText(), 'url' => $title->getFullUrl());
// Add item to results and see whether it fits
$fit = $apiResult->addValue(array('query', 'interwiki' . $this->getModuleName(), $result->getInterwikiPrefix()), null, $vals);
if (!$fit) {
// We hit the limit. We can't really provide any meaningful
// pagination info so just bail out
break;
}
} else {
$titles[] = $title;
}
$result = $matches->next();
}
}
if ($totalhits !== null) {
$apiResult->addValue(array('query', 'interwikisearchinfo'), 'totalhits', $totalhits);
}
}
if ($resultPageSet === null) {
$apiResult->addIndexedTagName(array('query', $this->getModuleName()), 'p');
if ($hasInterwikiResults) {
$apiResult->addIndexedTagName(array('query', 'interwiki' . $this->getModuleName()), 'p');
}
} else {
$resultPageSet->populateFromTitles($titles);
$offset = $params['offset'] + 1;
foreach ($titles as $index => $title) {
$resultPageSet->setGeneratorData($title, array('index' => $index + $offset));
}
}
}