private function getLiteral($literal, $predicate) { list($literalValue, $literalType) = $literal; if (!empty($literalValue)) { // create SMWDataValue either by property or if that is not possible by the given XSD type if ($predicate instanceof SMWPropertyValue) { $value = SMWDataValueFactory::newPropertyObjectValue($predicate, $literalValue); } else { $value = SMWDataValueFactory::newTypeIDValue(WikiTypeToXSD::getWikiType($literalType)); } if ($value->getTypeID() == '_dat') { // exception for dateTime if ($literalValue != '') { $value->setDBkeys(array(str_replace("-", "/", $literalValue))); } } else { if ($value->getTypeID() == '_ema') { // exception for email $value->setDBkeys(array($literalValue)); } else { $value->setUserValue($literalValue); } } } else { if ($predicate instanceof SMWPropertyValue) { $value = SMWDataValueFactory::newPropertyObjectValue($predicate); } else { $value = SMWDataValueFactory::newTypeIDValue('_wpg'); } } return $value; }
/** * Gets an array of literal tuples (value, type, metadata-uri) and creates according * SMWDataValue objects. * * @param array Tuple (string value, string xsd-type, hash array metadata) $literals * @param PrintRequest $pr QueryPrinter contains property and thus denotes type (optional) * @param array SMWDataValue (out) & $allValues */ protected function addLiteralToResult($literals, $pr, &$allValues) { foreach ($literals as $literal) { list($literalValue, $literalType, $metadata) = $literal; $property = !is_null($pr) ? $pr->getData() : NULL; if (!empty($literalValue)) { // create SMWDataValue either by property or if that is not possible by the given XSD type if ($property instanceof SMWPropertyValue) { $propertyTitle = Title::newFromText($pr->getData()->getText(), SMW_NS_PROPERTY); if (!$propertyTitle->exists()) { // fallback if property does not exist, then use tyoe $value = SMWDataValueFactory::newTypeIDValue(WikiTypeToXSD::getWikiType($literalType)); } else { $value = SMWDataValueFactory::newPropertyObjectValue($pr->getData(), $literalValue); } } else { $value = SMWDataValueFactory::newTypeIDValue(WikiTypeToXSD::getWikiType($literalType)); } if ($value->getTypeID() == '_dat') { // exception for dateTime if ($literalValue != '') { // do not display time if it is 00:00:00 if (substr($literalValue, -9) == 'T00:00:00') { $literalValue = substr($literalValue, 0, strpos($literalValue, "T")); } $value->setDBkeys(array(str_replace("-", "/", $literalValue))); } } else { if ($value->getTypeID() == '_ema' || $value->getTypeID() == '_tel') { // exception for email $value->setDBkeys(array($literalValue)); } else { $value->setUserValue($literalValue); } } } else { if ($property instanceof SMWPropertyValue) { $value = SMWDataValueFactory::newPropertyObjectValue($property); } else { $value = SMWDataValueFactory::newTypeIDValue('_wpg'); } } foreach ($metadata as $mdProperty => $mdValue) { if (strpos($mdProperty, "_meta_") === 0) { $value->setMetadata(substr($mdProperty, 6), explode("|||", $mdValue)); } } $allValues[] = $value; } }