Exemple #1
0
 public function testExportDataForPropertyPage()
 {
     $propertyPage = new DIWikiPage('Foo', SMW_NS_PROPERTY);
     $expData = Exporter::makeExportDataForSubject($propertyPage);
     $this->assertInstanceOf('\\SMWExpData', $expData);
     $this->assertInstanceOf('\\SMWExpNsResource', $expData->getSubject());
 }
Exemple #2
0
 protected function getResultText(SMWQueryResult $res, $outputmode)
 {
     if ($outputmode == SMW_OUTPUT_FILE) {
         // make RDF file
         $serializer = $this->syntax == 'turtle' ? new SMWTurtleSerializer() : new SMWRDFXMLSerializer();
         $serializer->startSerialization();
         $serializer->serializeExpData(SMWExporter::getOntologyExpData(''));
         while ($row = $res->getNext()) {
             $subjectDi = reset($row)->getResultSubject();
             $data = SMWExporter::makeExportDataForSubject($subjectDi);
             foreach ($row as $resultarray) {
                 $printreq = $resultarray->getPrintRequest();
                 $property = null;
                 switch ($printreq->getMode()) {
                     case SMWPrintRequest::PRINT_PROP:
                         $property = $printreq->getData()->getDataItem();
                         break;
                     case SMWPrintRequest::PRINT_CATS:
                         $property = new SMWDIProperty('_TYPE');
                         break;
                     case SMWPrintRequest::PRINT_CCAT:
                         // not serialised right now
                         break;
                     case SMWPrintRequest::PRINT_THIS:
                         // ignored here (object is always included in export)
                         break;
                 }
                 if (!is_null($property)) {
                     SMWExporter::addPropertyValues($property, $resultarray->getContent(), $data, $subjectDi);
                 }
             }
             $serializer->serializeExpData($data);
         }
         $serializer->finishSerialization();
         return $serializer->flushContent();
     } else {
         // just make link to feed
         if ($this->getSearchLabel($outputmode)) {
             $label = $this->getSearchLabel($outputmode);
         } else {
             $label = wfMsgForContent('smw_rdf_link');
         }
         $link = $res->getQueryLink($label);
         $link->setParameter('rdf', 'format');
         $link->setParameter($this->syntax, 'syntax');
         if (array_key_exists('limit', $this->params)) {
             $link->setParameter($this->params['limit'], 'limit');
         } else {
             // use a reasonable default limit
             $link->setParameter(100, 'limit');
         }
         $this->isHTML = $outputmode == SMW_OUTPUT_HTML;
         // yes, our code can be viewed as HTML if requested, no more parsing needed
         return $link->getText($outputmode, $this->mLinker);
     }
 }
 /**
  * Find a normalized representation of the given SMWExpResource that can
  * be used in an update of the stored data. Normalization uses
  * redirects. The type of the ExpElement might change, especially into
  * SMWExpData in order to store auxiliary properties.
  * Moreover, the method records any auxiliary data that should be
  * written to the store when including this SMWExpElement into updates.
  * This auxiliary data is collected in a call-by-ref array.
  *
  * @since 1.6
  * @param $expResource SMWExpResource object containing the update data
  * @param $auxiliaryExpData array of SMWExpData
  * @return SMWExpElement
  */
 protected function expandUpdateExpResource(SMWExpResource $expResource, array &$auxiliaryExpData)
 {
     $exists = true;
     if ($expResource instanceof SMWExpNsResource) {
         $elementTarget = $this->getSparqlRedirectTarget($expResource, $exists);
     } else {
         $elementTarget = $expResource;
     }
     if (!$exists && $elementTarget->getDataItem() instanceof SMWDIWikiPage) {
         $diWikiPage = $elementTarget->getDataItem();
         $hash = $diWikiPage->getHash();
         if (!array_key_exists($hash, $auxiliaryExpData)) {
             $auxiliaryExpData[$hash] = SMWExporter::makeExportDataForSubject($diWikiPage, null, true);
         }
     }
     return $elementTarget;
 }