本文整理汇总了PHP中Parser::preprocess方法的典型用法代码示例。如果您正苦于以下问题:PHP Parser::preprocess方法的具体用法?PHP Parser::preprocess怎么用?PHP Parser::preprocess使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Parser
的用法示例。
在下文中一共展示了Parser::preprocess方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: renderTagPage
/**
* Hook: ParserBeforeStrip
* @param $parser Parser
* @param $text
* @param $state
* @return bool
*/
public static function renderTagPage($parser, &$text, $state)
{
$title = $parser->getTitle();
if (strpos($text, '<translate>') !== false) {
try {
$parse = TranslatablePage::newFromText($parser->getTitle(), $text)->getParse();
$text = $parse->getTranslationPageText(null);
} catch (TPException $e) {
// Show ugly preview without processed <translate> tags
}
}
// Set display title
$page = TranslatablePage::isTranslationPage($title);
if (!$page) {
return true;
}
list(, $code) = TranslateUtils::figureMessage($title->getText());
$name = $page->getPageDisplayTitle($code);
if ($name) {
// BC for MW < 1.19
if (is_callable(array($parser, 'recursivePreprocess'))) {
$name = $parser->recursivePreprocess($name);
} else {
$newParser = new Parser();
$name = $newParser->preprocess($name, $parser->getTitle(), $parser->getOptions());
}
$name = $parser->recursivePreprocess($name);
$parser->getOutput()->setDisplayTitle($name);
}
return true;
}
示例2: runTemplateTransclusion
/**
* Helper method for processing a template transclusion by simulating template
* expensions using a callback to avoid having to integrate DB read/write
* process in order to access a Template
*
* @note Part of the routine has been taken from MW's ExtraParserTest
*
* @return text
*/
private function runTemplateTransclusion(Title $title, $text, $return)
{
$parser = new \Parser();
$options = new \ParserOptions();
$options->setTemplateCallback(function ($title, $parser = false) use($return) {
$text = $return;
$deps = array();
return array('text' => $text, 'finalTitle' => $title, 'deps' => $deps);
});
return $parser->preprocess($text, $title, $options);
}
开发者ID:WolfgangFahl,项目名称:SemanticMediaWiki,代码行数:20,代码来源:InTextAnnotationParserTemplateTransclusionTest.php
示例3: VideoGalleryPopulate
function VideoGalleryPopulate($input, $args, $parser)
{
$parser->disableCache();
$category = isset($args['category']) ? $args['category'] : '';
$limit = isset($args['limit']) ? intval($args['limit']) : 10;
if (empty($category)) {
return '';
}
// Use Parser::recursivePreprocess() if available instead of creating another Parser instance
if (is_callable(array($parser, 'recursivePreprocess'))) {
$category = $parser->recursivePreprocess($category);
} else {
$newParser = new Parser();
$category = $newParser->preprocess($category, $parser->getTitle(), $parser->getOptions());
}
$category_title = Title::newFromText($category);
if (!$category_title instanceof Title) {
return '';
}
// @todo FIXME: not overly i18n-friendly here...
$category_title_secondary = Title::newFromText($category . ' Videos');
if (!$category_title_secondary instanceof Title) {
return '';
}
$params['ORDER BY'] = 'page_id';
if ($limit) {
$params['LIMIT'] = $limit;
}
$dbr = wfGetDB(DB_SLAVE);
$res = $dbr->select(array('page', 'categorylinks'), 'page_title', array('cl_to' => array($category_title->getDBkey(), $category_title_secondary->getDBkey()), 'page_namespace' => NS_VIDEO), __METHOD__, $params, array('categorylinks' => array('INNER JOIN', 'cl_from = page_id')));
$gallery = new VideoGallery();
$gallery->setParsing(true);
$gallery->setShowFilename(true);
foreach ($res as $row) {
$video = Video::newFromName($row->page_title, RequestContext::getMain());
$gallery->add($video);
}
return $gallery->toHtml();
}
示例4: hookNcl
public function hookNcl($category, $argv, $parser)
{
# get any user-specified parameters, and save them in $this->settings
$this->settings = array_merge($this->settings, $argv);
# replace variables in $category by calling the parser on it
$localParser = new Parser();
$category = $localParser->preprocess($category, $parser->mTitle, $parser->mOptions, false);
# make a title object for the requested category
$title = Title::newFromText($category);
if (!$title) {
return '<p>Failed to create title!</p>';
}
# get the database handle, and get all the subcategory links for the given category
# modif serge 01/08 =& to = line 188
$dbr = wfGetDB(DB_SLAVE);
$catData = $this->searchCategory($dbr, $title, 0);
# generate the category listing
$output = "<div class='ncl-nicecategorylist'>" . $this->outputCategory($catData) . "</div>";
# suppress TOC
$output .= "__NOTOC__\n";
# add stylesheet and do not cache
global $wgOut, $wgScriptPath, $egNiceCategoryListInstallDir;
$wgOut->addExtensionStyle("{$wgScriptPath}/extensions/{$egNiceCategoryListInstallDir}/NiceCategoryList.css");
# code taken from [[mw:Extension_talk:NiceCategoryList2#Stale_Content_.2F_Extension_Doesn.27t_refresh]]
global $egNiceCategoryListDisableCache;
if ($egNiceCategoryListDisableCache) {
global $wgVersion;
# modif serge 01/08 =& to = line 205
$dbr = wfGetDB(DB_SLAVE);
# Do not cache this wiki page.
# for details see http://public.kitware.com/Wiki/User:Barre/MediaWiki/Extensions
global $wgTitle, $wgDBprefix;
$ts = mktime();
$now = gmdate("YmdHis", $ts + 120);
$ns = $wgTitle->getNamespace();
$ti = $dbr->addQuotes($wgTitle->getDBkey());
$version = preg_replace("/^([1-9]).([1-9]).*/", "\\1\\2", $wgVersion);
$sql = "UPDATE {$wgDBprefix}" . "page SET page_touched='{$now}' WHERE page_namespace={$ns} AND page_title={$ti}";
$dbr->query($sql, __METHOD__);
}
# convert the listing wikitext into HTML and return it
$localParser = new Parser();
$output = $localParser->parse($output, $parser->mTitle, $parser->mOptions);
return $output->getText();
}
示例5: MwRdfInterwiki
function MwRdfInterwiki($article)
{
global $DCTERM, $DCMES, $DCMITYPE, $RDFS_seeAlso, $wgContLang;
$model = ModelFactory::getDefaultModel();
$nt = $article->getTitle();
$tr = MwRdfTitleResource($nt);
$text = $article->getContent(true);
$parser = new Parser();
$text = $parser->preprocess($text, $article->mTitle, new ParserOptions());
# XXX: this sucks
# Ignore <nowiki> blocks
$text = preg_replace("|(<nowiki>.*</nowiki>)|", "", $text);
# Find prefixed links
preg_match_all("/\\[\\[([^|\\]]+:[^|\\]]+)(\\|.*)?\\]\\]/", $text, $matches);
# XXX: this fails for Category: namespace; why?
if (isset($matches)) {
foreach ($matches[1] as $linktext) {
$iwlink = Title::newFromText($linktext);
if (isset($iwlink)) {
$pfx = $iwlink->getInterwiki();
if (strlen($pfx) > 0) {
$iwr = MwRdfTitleResource($iwlink);
# XXX: Wikitravel uses some 4+ prefixes for sister site links
if ($wgContLang->getLanguageName($pfx) && strlen($pfx) < 4) {
$model->add(new Statement($tr, $DCTERM['hasVersion'], $iwr));
$model->add(new Statement($iwr, $DCMES['language'], MwRdfLanguage($pfx)));
} else {
# XXX: Express the "sister site" relationship better
$model->add(new Statement($tr, $RDFS_seeAlso, $iwr));
}
}
}
}
}
return $model;
}
示例6: testPreprocess
/**
* @covers Parser::preprocess
*/
public function testPreprocess()
{
$title = Title::newFromText(__FUNCTION__);
$outputText = $this->parser->preprocess("Test\n{{Foo}}\n{{Bar}}", $title, $this->options);
$this->assertEquals("Test\nContent of ''Template:Foo''\nContent of ''Template:Bar''", $outputText);
}
示例7: updateCreatedOpinionsCount
/**
* This function was originally in the UserStats directory, in the file
* CreatedOpinionsCount.php.
* This function here updates the stats_opinions_created column in the
* user_stats table every time the user creates a new blog post.
*
* This is hooked into two separate hooks (todo: find out why), ArticleSave
* and ArticleSaveComplete. Their arguments are mostly the same and both
* have $article as the first argument.
*
* @param $article Object: Article object representing the page that was/is
* (being) saved
* @return Boolean: true
*/
public static function updateCreatedOpinionsCount(&$article)
{
global $wgOut, $wgUser;
$aid = $article->getTitle()->getArticleID();
// Shortcut, in order not to perform stupid queries (cl_from = 0...)
if ($aid == 0) {
return true;
}
$dbr = wfGetDB(DB_SLAVE);
$res = $dbr->select('categorylinks', 'cl_to', array('cl_from' => $aid), __METHOD__);
foreach ($res as $row) {
$ctg = Title::makeTitle(NS_CATEGORY, $row->cl_to);
$ctgname = $ctg->getText();
$blogCat = wfMsgForContent('blog-category');
$userBlogCat = wfMsgForContent('blog-by-user-category', $blogCat);
if (strpos($ctgname, $userBlogCat) !== false) {
$user_name = trim(str_replace($userBlogCat, '', $ctgname));
$u = User::idFromName($user_name);
if ($u) {
$stats = new UserStatsTrack($u, $user_name);
// Copied from UserStatsTrack::updateCreatedOpinionsCount()
// Throughout this code, we could use $u and $user_name
// instead of $stats->user_id and $stats->user_name but
// there's no point in doing that because we have to call
// clearCache() in any case
if (!$wgUser->isAnon() && $stats->user_id) {
$ctg = $userBlogCat . ' ' . $stats->user_name;
$parser = new Parser();
$ctgTitle = Title::newFromText($parser->preprocess(trim($ctg), $wgOut->getTitle(), $wgOut->parserOptions()));
$ctgTitle = $ctgTitle->getDBkey();
$dbw = wfGetDB(DB_MASTER);
$opinions = $dbw->select(array('page', 'categorylinks'), array('COUNT(*) AS CreatedOpinions'), array('cl_to' => $ctgTitle, 'page_namespace' => NS_BLOG), __METHOD__, array(), array('categorylinks' => array('INNER JOIN', 'page_id = cl_from')));
// Please die in a fire, PHP.
// selectField() would be ideal above but it returns
// insane results (over 300 when the real count is
// barely 10) so we have to fuck around with a
// foreach() loop that we don't even need in theory
// just because PHP is...PHP.
$opinionsCreated = 0;
foreach ($opinions as $opinion) {
$opinionsCreated = $opinion->CreatedOpinions;
}
$res = $dbw->update('user_stats', array('stats_opinions_created' => $opinionsCreated), array('stats_user_id' => $stats->user_id), __METHOD__);
$stats->clearCache();
}
}
}
}
return true;
}
示例8: getPluralForms
/**
* Ugly home made probably awfully slow looping parser
* that parses {{PLURAL}} instances from message and
* returns array of invokations having array of forms.
* @since 2012-09-19
* @param string $translation
* @return array[array]
*/
public static function getPluralForms($translation)
{
// Stores the forms from plural invocations
$plurals = array();
$cb = function ($parser, $frame, $args) use(&$plurals) {
$forms = array();
foreach ($args as $index => $form) {
// The first arg is the number, we skip it
if ($index !== 0) {
// Collect the raw text
$forms[] = $frame->expand($form, PPFrame::RECOVER_ORIG);
// Expand the text to process embedded plurals
$frame->expand($form);
}
}
$plurals[] = $forms;
return '';
};
// Setup parser
$parser = new Parser();
// Load the default magic words etc now.
$parser->firstCallInit();
// So that they don't overrider our own callback
$parser->setFunctionHook('plural', $cb, Parser::SFH_NO_HASH | Parser::SFH_OBJECT_ARGS);
// Setup things needed for preprocess
$title = null;
$options = new ParserOptions(new User(), Language::factory('en'));
$parser->preprocess($translation, $title, $options);
return $plurals;
}