/** * @see SMWStore::getSemanticData() * @since 1.8 */ public function getSemanticData(SMWDIWikiPage $subject, $filter = false) { // *** Find out if this subject exists ***// $sortkey = ''; $sid = $this->store->smwIds->getSMWPageIDandSort($subject->getDBkey(), $subject->getNamespace(), $subject->getInterwiki(), $subject->getSubobjectName(), $sortkey, true, true); $subject->setSortKey($sortkey); if ($sid == 0) { // We consider redirects for getting $sid, // so $sid == 0 also means "no redirects". return new SMWSemanticData($subject); } $propertyTableHashes = $this->store->smwIds->getPropertyTableHashes($sid); foreach ($this->store->getPropertyTables() as $tid => $proptable) { if (!array_key_exists($proptable->getName(), $propertyTableHashes)) { continue; } if ($filter !== false) { $relevant = false; foreach ($filter as $typeId) { $diType = DataTypeRegistry::getInstance()->getDataItemId($typeId); $relevant = $relevant || $proptable->getDiType() == $diType; if ($relevant) { break; } } if (!$relevant) { continue; } } $this->getSemanticDataFromTable($sid, $subject, $proptable); } // Note: the sortkey is always set but belongs to no property table, // hence no entry in $this->store->m_sdstate[$sid] is made. self::$in_getSemanticData++; $this->initSemanticDataCache($sid, $subject); $this->store->m_semdata[$sid]->addPropertyStubValue('_SKEY', array('', $sortkey)); self::$in_getSemanticData--; return $this->store->m_semdata[$sid]; }
private function newDiWikiPage($dbkeys) { $diWikiPage = new SMWDIWikiPage($dbkeys[0], intval($dbkeys[1]), $dbkeys[2], $dbkeys[4]); $diWikiPage->setSortKey($dbkeys[3]); return $diWikiPage; }