/** * 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 ); } }
/** * 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 ''; }
/** * Method for handling the set 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 ... foreach ($params as $param) { $parts = explode('=', trim($param), 2); // Only add the property when there is both a name and a value. if (count($parts) == 2) { SMWParseData::addProperty($parts[0], $parts[1], false, $parser, true); } } return ''; }
/** * This callback function strips out the semantic attributes from a wiki * link. Expected parameter: array(linktext, properties, value, caption) */ static public function parsePropertiesCallback( $semanticLink ) { global $smwgInlineErrors, $smwgStoreAnnotations; wfProfileIn( 'smwfParsePropertiesCallback (SMW)' ); if ( array_key_exists( 1, $semanticLink ) ) { $property = $semanticLink[1]; } else { $property = ''; } if ( array_key_exists( 2, $semanticLink ) ) { $value = $semanticLink[2]; } else { $value = ''; } if ( $value === '' ) { // silently ignore empty values wfProfileOut( 'smwfParsePropertiesCallback (SMW)' ); return ''; } if ( $property == 'SMW' ) { switch ( $value ) { case 'on': SMWParserExtensions::$mTempStoreAnnotations = true; break; case 'off': SMWParserExtensions::$mTempStoreAnnotations = false; break; } wfProfileOut( 'smwfParsePropertiesCallback (SMW)' ); return ''; } if ( array_key_exists( 3, $semanticLink ) ) { $valueCaption = $semanticLink[3]; } else { $valueCaption = false; } // Extract annotations and create tooltip. $properties = preg_split( '/:[=:]/u', $property ); foreach ( $properties as $singleprop ) { $dv = SMWParseData::addProperty( $singleprop, $value, $valueCaption, SMWParserExtensions::$mTempParser, $smwgStoreAnnotations && SMWParserExtensions::$mTempStoreAnnotations ); } $result = $dv->getShortWikitext( true ); if ( ( $smwgInlineErrors && $smwgStoreAnnotations && SMWParserExtensions::$mTempStoreAnnotations ) && ( !$dv->isValid() ) ) { $result .= $dv->getErrorText(); } wfProfileOut( 'smwfParsePropertiesCallback (SMW)' ); return $result; }