private function resultToItem()

in extensions/SMWAskAPI/api/SMWAsk_API.php [141:185]


    private function resultToItem($r) {

        // variables used to reconstruct URI from page title
        global $wgServer, $wgScriptPath;

        $rowsubject = false; // the wiki page value that this row is about
        $item = array(); // contains Property-Value pairs to characterize an Item
        $item['properties'] = array();
        foreach ($r as $field) {
            $pr = $field->getPrintRequest();
            if ($rowsubject === false) {
                $rowsubject = $field->getResultSubject();
                $item['title'] = $rowsubject->getShortText(null, null);
            }
            if ($pr->getMode() != SMWPrintRequest::PRINT_THIS) {
                $values = array();
                while (( $value = $field->getNextObject() ) !== false) {
                    switch ($value->getTypeID()) {
                        case '_geo':
                            $values[] = $value->getWikiValue();
                            break;
                        case '_num':
                            $values[] = $value->getValueKey();
                            break;
                        case '_dat':
                            $values[] = $value->getYear() . "-" . str_pad($value->getMonth(), 2, '0', STR_PAD_LEFT) . "-" . str_pad($value->getDay(), 2, '0', STR_PAD_LEFT) . " " . $value->getTimeString();
                            break;
                        default:
                            $values[] = $value->getShortText(null, null);
                    }
                }

                $this->addPropToItem($item, str_replace(" ", "_", strtolower($pr->getLabel())), $values);
            }
        }
        if ($rowsubject !== false) { // stuff in the page URI and some category data
            $item['uri'] = $wgServer . $wgScriptPath . '/index.php?title=' . $rowsubject->getPrefixedText();
            $page_cats = smwfGetStore()->getPropertyValues($rowsubject, SMWPropertyValue::makeProperty('_INST')); // TODO: set limit to 1 here
            if (count($page_cats) > 0) {
                $this->addPropToItem($item, 'type', array(reset($page_cats)->getShortHTMLText()));
            }
        }

        return $item;
    }