本文整理汇总了PHP中SMWOutputs::commitToParser方法的典型用法代码示例。如果您正苦于以下问题:PHP SMWOutputs::commitToParser方法的具体用法?PHP SMWOutputs::commitToParser怎么用?PHP SMWOutputs::commitToParser使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SMWOutputs
的用法示例。
在下文中一共展示了SMWOutputs::commitToParser方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: onInternalParseBeforeLinks
/**
* This method will be called before an article is displayed or previewed.
* For display and preview we strip out the semantic properties and append them
* at the end of the article.
*
* @param Parser $parser
* @param string $text
*/
static public function onInternalParseBeforeLinks( &$parser, &$text ) {
global $smwgStoreAnnotations, $smwgLinksInValues;
SMWParseData::stripMagicWords( $text, $parser );
// Store the results if enabled (we have to parse them in any case,
// in order to clean the wiki source for further processing).
$smwgStoreAnnotations = smwfIsSemanticsProcessed( $parser->getTitle()->getNamespace() );
SMWParserExtensions::$mTempStoreAnnotations = true; // used for [[SMW::on]] and [[SMW:off]]
// Process redirects, if any (it seems that there is indeed no more direct way of getting this info from MW)
if ( $smwgStoreAnnotations ) {
$rt = Title::newFromRedirect( $text );
if ( !is_null( $rt ) ) {
$p = new SMWDIProperty( '_REDI' );
$di = SMWDIWikiPage::newFromTitle( $rt, '__red' );
SMWParseData::getSMWData( $parser )->addPropertyObjectValue( $p, $di );
}
}
// only used in subsequent callbacks, forgotten afterwards
SMWParserExtensions::$mTempParser = $parser;
// In the regexp matches below, leading ':' escapes the markup, as known for Categories.
// Parse links to extract semantic properties.
if ( $smwgLinksInValues ) { // More complex regexp -- lib PCRE may cause segfaults if text is long :-(
$semanticLinkPattern = '/\[\[ # Beginning of the link
(?:([^:][^]]*):[=:])+ # Property name (or a list of those)
( # After that:
(?:[^|\[\]] # either normal text (without |, [ or ])
|\[\[[^]]*\]\] # or a [[link]]
|\[[^]]*\] # or an [external link]
)*) # all this zero or more times
(?:\|([^]]*))? # Display text (like "text" in [[link|text]]), optional
\]\] # End of link
/xu';
$text = preg_replace_callback( $semanticLinkPattern, array( 'SMWParserExtensions', 'parsePropertiesCallback' ), $text );
} else { // Simpler regexps -- no segfaults found for those, but no links in values.
$semanticLinkPattern = '/\[\[ # Beginning of the link
(?:([^:][^]]*):[=:])+ # Property name (or a list of those)
([^\[\]]*) # content: anything but [, |, ]
\]\] # End of link
/xu';
$text = preg_replace_callback( $semanticLinkPattern, array( 'SMWParserExtensions', 'simpleParsePropertiesCallback' ), $text );
}
// Add link to RDF to HTML header.
// TODO: do escaping via Html or Xml class.
SMWOutputs::requireHeadItem(
'smw_rdf', '<link rel="alternate" type="application/rdf+xml" title="' .
htmlspecialchars( $parser->getTitle()->getPrefixedText() ) . '" href="' .
htmlspecialchars(
SpecialPage::getTitleFor( 'ExportRDF', $parser->getTitle()->getPrefixedText() )->getLocalUrl( 'xmlmime=rdf' )
) . "\" />"
);
SMWOutputs::commitToParser( $parser );
return true; // always return true, in order not to stop MW's hook processing!
}
示例2: render
/**
* Method for handling the set_recurring_event parser function.
*
* @since 1.5.3
*
* @param Parser $parser
*/
public static function render( Parser &$parser ) {
$params = func_get_args();
array_shift( $params ); // We already know the $parser ...
// Almost all of the work gets done by
// getDatesForRecurringEvent().
$results = self::getDatesForRecurringEvent( $params );
if ( $results == null ) {
return null;
}
list( $property_name, $all_date_strings, $unused_params ) = $results;
// Do the actual saving of the data.
foreach ( $all_date_strings as $date_str ) {
SMWParseData::addProperty( $property_name, $date_str, false, $parser, true );
}
global $wgTitle;
if ( !is_null( $wgTitle ) && $wgTitle->isSpecialPage() ) {
global $wgOut;
SMWOutputs::commitToOutputPage( $wgOut );
}
else {
SMWOutputs::commitToParser( $parser );
}
}
示例3: render
/**
* Method for handling the declare parser function.
*
* @since 1.5.3
*
* @param Parser $parser
* @param PPFrame $frame
* @param array $args
*/
public static function render(Parser &$parser, PPFrame $frame, array $args)
{
if ($frame->isTemplate()) {
foreach ($args as $arg) {
if (trim($arg) !== '') {
$expanded = trim($frame->expand($arg));
$parts = explode('=', $expanded, 2);
if (count($parts) == 1) {
$propertystring = $expanded;
$argumentname = $expanded;
} else {
$propertystring = $parts[0];
$argumentname = $parts[1];
}
$property = SMWPropertyValue::makeUserProperty($propertystring);
$argument = $frame->getArgument($argumentname);
$valuestring = $frame->expand($argument);
if ($property->isValid()) {
$type = $property->getPropertyTypeID();
if ($type == '_wpg') {
$matches = array();
preg_match_all('/\\[\\[([^\\[\\]]*)\\]\\]/u', $valuestring, $matches);
$objects = $matches[1];
if (count($objects) == 0) {
if (trim($valuestring) !== '') {
SMWParseData::addProperty($propertystring, $valuestring, false, $parser, true);
}
} else {
foreach ($objects as $object) {
SMWParseData::addProperty($propertystring, $object, false, $parser, true);
}
}
} elseif (trim($valuestring) !== '') {
SMWParseData::addProperty($propertystring, $valuestring, false, $parser, true);
}
// $value = SMWDataValueFactory::newPropertyObjectValue( $property->getDataItem(), $valuestring );
// if (!$value->isValid()) continue;
}
}
}
} else {
// @todo Save as metadata
}
global $wgTitle;
if (!is_null($wgTitle) && $wgTitle->isSpecialPage()) {
global $wgOut;
SMWOutputs::commitToOutputPage($wgOut);
} else {
SMWOutputs::commitToParser($parser);
}
return '';
}
示例4: render
/**
* Renders and returns the output.
* @see ParserHook::render
*
* @since 1.7
*
* @param array $parameters
*
* @return string
*/
public function render(array $parameters)
{
/**
* Non-escaping is safe bacause a user's message is passed through parser, which will
* handle unsafe HTM elements.
*/
$result = smwfEncodeMessages(array($parameters['message']), $parameters['icon'], ' <!--br-->', false);
if (!is_null($this->parser->getTitle()) && $this->parser->getTitle()->isSpecialPage()) {
global $wgOut;
SMWOutputs::commitToOutputPage($wgOut);
} else {
SMWOutputs::commitToParser($this->parser);
}
return $result;
}
示例5: render
/**
* Method for handling the ask concept function.
*
* @todo The possible use of this in an HTML or Specal page context needs to be revisited. The code mentions it, but can this actually happen?
* @todo The escaping of symbols in concept queries needs to be revisited.
*
* @since 1.5.3
*
* @param Parser $parser
*/
public static function render(Parser &$parser)
{
global $wgContLang, $wgTitle;
$title = $parser->getTitle();
$pconc = new SMWDIProperty('_CONC');
if ($title->getNamespace() != SMW_NS_CONCEPT) {
$result = smwfEncodeMessages(array(wfMsgForContent('smw_no_concept_namespace')));
SMWOutputs::commitToParser($parser);
return $result;
} elseif (count(SMWParseData::getSMWdata($parser)->getPropertyValues($pconc)) > 0) {
$result = smwfEncodeMessages(array(wfMsgForContent('smw_multiple_concepts')));
SMWOutputs::commitToParser($parser);
return $result;
}
// process input:
$params = func_get_args();
array_shift($params);
// We already know the $parser ...
// Use first parameter as concept (query) string.
$concept_input = str_replace(array('>', '<'), array('>', '<'), array_shift($params));
// second parameter, if any, might be a description
$concept_docu = array_shift($params);
// NOTE: the str_replace above is required in MediaWiki 1.11, but not in MediaWiki 1.14
$query = SMWQueryProcessor::createQuery($concept_input, SMWQueryProcessor::getProcessedParams(array('limit' => 20, 'format' => 'list')), SMWQueryProcessor::CONCEPT_DESC);
$concept_text = $query->getDescription()->getQueryString();
if (!is_null(SMWParseData::getSMWData($parser))) {
$diConcept = new SMWDIConcept($concept_text, $concept_docu, $query->getDescription()->getQueryFeatures(), $query->getDescription()->getSize(), $query->getDescription()->getDepth());
SMWParseData::getSMWData($parser)->addPropertyObjectValue($pconc, $diConcept);
}
// display concept box:
$rdflink = SMWInfolink::newInternalLink(wfMsgForContent('smw_viewasrdf'), $wgContLang->getNsText(NS_SPECIAL) . ':ExportRDF/' . $title->getPrefixedText(), 'rdflink');
SMWOutputs::requireResource('ext.smw.style');
// TODO: escape output, preferably via Html or Xml class.
$result = '<div class="smwfact"><span class="smwfactboxhead">' . wfMsgForContent('smw_concept_description', $title->getText()) . (count($query->getErrors()) > 0 ? ' ' . smwfEncodeMessages($query->getErrors()) : '') . '</span>' . '<span class="smwrdflink">' . $rdflink->getWikiText() . '</span>' . '<br />' . ($concept_docu ? "<p>{$concept_docu}</p>" : '') . '<pre>' . str_replace('[', '[', $concept_text) . "</pre>\n</div>";
if (!is_null($wgTitle) && $wgTitle->isSpecialPage()) {
global $wgOut;
SMWOutputs::commitToOutputPage($wgOut);
} else {
SMWOutputs::commitToParser($parser);
}
return $result;
}
示例6: render
/**
* Method for handling the ask parser function.
*
* @since 1.5.3
*
* @param Parser $parser
*/
public static function render(Parser &$parser)
{
global $smwgQEnabled, $smwgIQRunningNumber, $wgTitle;
if ($smwgQEnabled) {
$smwgIQRunningNumber++;
$params = func_get_args();
array_shift($params);
// We already know the $parser ...
$result = SMWQueryProcessor::getResultFromFunctionParams($params, SMW_OUTPUT_WIKI);
} else {
$result = smwfEncodeMessages(array(wfMessage('smw_iq_disabled')->inContentLanguage()->text()));
}
if (!is_null($wgTitle) && $wgTitle->isSpecialPage()) {
global $wgOut;
SMWOutputs::commitToOutputPage($wgOut);
} else {
SMWOutputs::commitToParser($parser);
}
return $result;
}
示例7: render
/**
* Method for handling the show parser function.
*
* @since 1.5.3
*
* @param Parser $parser
*/
public static function render(Parser &$parser)
{
global $smwgQEnabled, $smwgIQRunningNumber, $wgTitle;
if ($smwgQEnabled) {
$smwgIQRunningNumber++;
$rawParams = func_get_args();
array_shift($rawParams);
// We already know the $parser ...
list($query, $params) = SMWQueryProcessor::getQueryAndParamsFromFunctionParams($rawParams, SMW_OUTPUT_WIKI, SMWQueryProcessor::INLINE_QUERY, true);
$result = SMWQueryProcessor::getResultFromQuery($query, $params, SMW_OUTPUT_WIKI, SMWQueryProcessor::INLINE_QUERY);
$queryKey = hash('md4', implode('|', $rawParams), false);
SMWAsk::addQueryData($queryKey, $query, $params, $parser);
} else {
$result = smwfEncodeMessages(array(wfMessage('smw_iq_disabled')->inContentLanguage()->text()));
}
if (!is_null($wgTitle) && $wgTitle->isSpecialPage()) {
global $wgOut;
SMWOutputs::commitToOutputPage($wgOut);
} else {
SMWOutputs::commitToParser($parser);
}
return $result;
}
示例8: outputResults
/**
* Format and output report results using the given information plus
* OutputPage
*
* @param OutputPage $out OutputPage to print to
* @param Skin $skin User skin to use
* @param Database $dbr Database (read) connection to use
* @param int $res Result pointer
* @param int $num Number of available result rows
* @param int $offset Paging offset
*/
protected function outputResults($out, $skin, $dbr, $res, $num, $offset)
{
global $wgContLang;
$all_display_params = SDUtils::getDisplayParamsForCategory($this->category);
$querystring = null;
$printouts = $params = array();
// only one set of params is handled for now
if (count($all_display_params) > 0) {
$display_params = array_map('trim', $all_display_params[0]);
SMWQueryProcessor::processFunctionParams($display_params, $querystring, $params, $printouts);
}
if (!empty($querystring)) {
$query = SMWQueryProcessor::createQuery($querystring, $params);
} else {
$query = new SMWQuery();
}
if (!array_key_exists('format', $params)) {
$params['format'] = 'category';
}
if (array_key_exists('mainlabel', $params)) {
$mainlabel = $params['mainlabel'];
} else {
$mainlabel = '';
}
$r = $this->addSemanticResultWrapper($dbr, $res, $num, $query, $mainlabel, $printouts);
$printer = SMWQueryProcessor::getResultPrinter($params['format'], SMWQueryProcessor::SPECIAL_PAGE, $r);
if (version_compare(SMW_VERSION, '1.6.1', '>')) {
SMWQueryProcessor::addThisPrintout($printouts, $params);
$params = SMWQueryProcessor::getProcessedParams($params, $printouts);
}
$prresult = $printer->getResult($r, $params, SMW_OUTPUT_HTML);
$prtext = is_array($prresult) ? $prresult[0] : $prresult;
SMWOutputs::commitToOutputPage($out);
// Crappy hack to get the contents of SMWOutputs::$mHeadItems,
// which may have been set in the result printer, and dump into
// headItems of $out.
// How else can we do this?
global $wgParser;
SMWOutputs::commitToParser($wgParser);
if (!is_null($wgParser->mOutput)) {
// getHeadItems() was added in MW 1.16
if (method_exists($wgParser->getOutput(), 'getHeadItems')) {
$headItems = $wgParser->getOutput()->getHeadItems();
} else {
$headItems = $wgParser->getOutput()->mHeadItems;
}
foreach ($headItems as $key => $item) {
$out->addHeadItem($key, $item);
}
// Force one more parser function, so links appear.
$wgParser->replaceLinkHolders($prtext);
}
$html = array();
$html[] = $prtext;
if (!$this->listoutput) {
$html[] = $this->closeList();
}
$html = $this->listoutput ? $wgContLang->listToText($html) : implode('', $html);
$out->addHTML($html);
}