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;
 }
Beispiel #2
0
 /**
  * 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;
     }
 }