/** * Get the serialization for a SMWQueryResult object. * * @since 1.7 * * @param SMWQueryResult $result * * @return array */ public static function getSerializedQueryResult(SMWQueryResult $queryResult) { $results = array(); $printRequests = array(); foreach ($queryResult->getPrintRequests() as $printRequest) { $printRequests[] = array('label' => $printRequest->getLabel(), 'typeid' => $printRequest->getTypeID(), 'mode' => $printRequest->getMode()); } foreach ($queryResult->getResults() as $diWikiPage) { $result = array('printouts' => array()); foreach ($queryResult->getPrintRequests() as $printRequest) { $resultAarray = new SMWResultArray($diWikiPage, $printRequest, $queryResult->getStore()); if ($printRequest->getMode() === SMWPrintRequest::PRINT_THIS) { $dataItems = $resultAarray->getContent(); $result += self::getSerialization(array_shift($dataItems)); } else { $result['printouts'][$printRequest->getLabel()] = array_map(array(__CLASS__, 'getSerialization'), $resultAarray->getContent()); } } $results[$diWikiPage->getTitle()->getFullText()] = $result; } return array('results' => $results, 'printrequests' => $printRequests); }
/** * Basic SMW JSON layer * * This is a convenience layer which is eliminating some overhead from the * standard SMW JSON * * @since 1.8 * * @return array */ public function getBasicSerialization() { $results = array(); $printRequests = array(); foreach ($this->results->getPrintRequests() as $printRequest) { $printRequests[$printRequest->getLabel()] = array('label' => $printRequest->getLabel(), 'typeid' => $printRequest->getTypeID()); } foreach ($this->results->getResults() as $diWikiPage) { $result = array(); foreach ($this->results->getPrintRequests() as $printRequest) { $serializationItems = array(); $resultAarray = new SMWResultArray($diWikiPage, $printRequest, $this->results->getStore()); if ($printRequest->getMode() === SMWPrintRequest::PRINT_THIS) { $dataItems = $resultAarray->getContent(); $fulltext = SMWDISerializer::getSerialization(array_shift($dataItems)); $result += array('label' => $fulltext["fulltext"]); } else { $serializationItems = array_map(array('SMWDISerializer', 'getSerialization'), $resultAarray->getContent()); $type = $printRequest->getTypeID(); $items = array(); foreach ($serializationItems as $item) { if ($type == "_wpg") { $items[] = $item["fulltext"]; } else { $items[] = $item; } } $result[$printRequest->getLabel()] = $items; } } $results[$diWikiPage->getTitle()->getFullText()] = $result; } return array('printrequests' => $printRequests, 'results' => $results, 'rows' => $this->count); }