/** * Serializes the tree structure (without root node) */ public function serializeAsXML($type) { $id = uniqid(rand()); $count = 0; $result = ""; $gi_store = SGAGardeningIssuesAccess::getGardeningIssuesAccess(); foreach ($this->children as $title => $treeObject) { $isExpanded = count($treeObject->children) == 0 ? "false" : "true"; $title_esc = htmlspecialchars($treeObject->getTitle()->getDBkey()); $titleURLEscaped = htmlspecialchars(SMWOntologyBrowserXMLGenerator::urlescape($treeObject->getTitle()->getDBkey())); $issues = $gi_store->getGardeningIssues('smw_consistencybot', NULL, NULL, $treeObject->getTitle()); $gi_issues = SMWOntologyBrowserErrorHighlighting::getGardeningIssuesAsXML($issues); $result .= "<{$type} title_url=\"{$titleURLEscaped}\" title=\"" . $title_esc . "\" img=\"{$type}.gif\" id=\"ID_{$id}{$count}\" expanded=\"{$isExpanded}\">"; $result .= $gi_issues; $result .= $treeObject->serializeAsXML($type); $result .= "</{$type}>"; $count++; } return $result; }
/** * Returns an XML represenatation of a schema property * * @param array & schemaData. Tuple of (title, minCard, maxCard, type, isSym, isTrans, range) * @param count continuous number for generating new IDs * @param array & issues Gardening issues for that property * * @return XML string (fragment) */ private static function encapsulateAsProperty(array &$schemaData, $count, array &$issues) { $id = uniqid(rand()); $content = ""; // unpack schemaData array $title = $schemaData[0]; $minCardinality = $schemaData[1]; $maxCardinality = $schemaData[2]; $type = $schemaData[3]; $isMemberOfSymCat = $schemaData[4]; $isMemberOfTransCat = $schemaData[5]; $range = $schemaData[6]; $inherited = $schemaData[7] == true ? "inherited=\"true\"" : ""; if ($type == '_wpg') { // binary relation? if ($range == NULL) { $content .= "<rangeType>" . wfMsg('smw_ob_undefined_type') . "</rangeType>"; } else { $content .= "<rangeType isLink=\"true\">" . $range . "</rangeType>"; } } else { // it must be an attribute or n-ary relation otherwise. $v = SMWDataValueFactory::newPropertyObjectValue(SMWPropertyValue::makeProperty("_TYPE")); $v->setDBkeys(array($type)); $typesOfAttributeAsString = $v->getTypeLabels(); foreach ($typesOfAttributeAsString as $typeOfAttributeAsString) { $content .= "<rangeType>" . $typeOfAttributeAsString . "</rangeType>"; } } // generate attribute strings $maxCardText = $maxCardinality != CARDINALITY_UNLIMITED ? "maxCard=\"" . $maxCardinality . "\"" : "maxCard=\"*\""; $minCardText = $minCardinality != CARDINALITY_MIN ? "minCard=\"" . $minCardinality . "\"" : "minCard=\"0\""; $isSymetricalText = $isMemberOfSymCat ? "isSymetrical=\"true\"" : ""; $isTransitiveText = $isMemberOfTransCat ? "isTransitive=\"true\"" : ""; $title_esc = htmlspecialchars($title->getDBkey()); $titleURLEscaped = htmlspecialchars(self::urlescape($title->getDBkey())); $numberofUsage = smwfGetSemanticStore()->getNumberOfUsage($title); $numberOfUsageAtt = 'num="' . $numberofUsage . '"'; $gi_issues = SMWOntologyBrowserErrorHighlighting::getGardeningIssuesAsXML($issues); return "<property title_url=\"{$titleURLEscaped}\" title=\"" . $title_esc . "\" id=\"ID_" . $id . $count . "\" " . "{$minCardText} {$maxCardText} {$isSymetricalText} {$isTransitiveText} {$numberOfUsageAtt} {$inherited}>" . $content . $gi_issues . "</property>"; }