public function testExportDataForPropertyPage() { $propertyPage = new DIWikiPage('Foo', SMW_NS_PROPERTY); $expData = Exporter::makeExportDataForSubject($propertyPage); $this->assertInstanceOf('\\SMWExpData', $expData); $this->assertInstanceOf('\\SMWExpNsResource', $expData->getSubject()); }
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; }