public function changeTitle( Title $oldtitle, Title $newtitle, $pageid, $redirid = 0 ) { $oldWikiPage = SMWDIWikiPage::newFromTitle( $oldtitle ); $newWikiPage = SMWDIWikiPage::newFromTitle( $newtitle ); $oldExpResource = SMWExporter::getDataItemExpElement( $oldWikiPage ); $newExpResource = SMWExporter::getDataItemExpElement( $newWikiPage ); $namespaces = array( $oldExpResource->getNamespaceId() => $oldExpResource->getNamespace() ); $namespaces[$newExpResource->getNamespaceId()] = $newExpResource->getNamespace(); $oldUri = SMWTurtleSerializer::getTurtleNameForExpElement( $oldExpResource ); $newUri = SMWTurtleSerializer::getTurtleNameForExpElement( $newExpResource ); parent::changeTitle( $oldtitle, $newtitle, $pageid, $redirid ); // do this only here, so Imported from is not moved too early $sparqlDatabase = smwfGetSparqlDatabase(); $sparqlDatabase->insertDelete( "?s ?p $newUri", "?s ?p $oldUri", "?s ?p $oldUri", $namespaces ); if ( $oldtitle->getNamespace() == SMW_NS_PROPERTY ) { $sparqlDatabase->insertDelete( "?s $newUri ?o", "?s $oldUri ?o", "?s $oldUri ?o", $namespaces ); } // Note that we cannot change oldUri to newUri in triple subjects, // since some triples change due to the move. Use SMWUpdateJob. $newUpdate = new SMWUpdateJob( $newtitle ); $newUpdate->run(); if ( $redirid != 0 ) { // update/create redirect page data $oldUpdate = new SMWUpdateJob( $oldtitle ); $oldUpdate->run(); } }
/** * Move/rename page * @param $oldtitle * @param $newtitle * @param $pageid * @param $redirid */ function changeTitle( Title $oldtitle, Title $newtitle, $pageid, $redirid = 0 ) { // Save it in parent store now! // We need that so we get all information correctly! $result = parent::changeTitle( $oldtitle, $newtitle, $pageid, $redirid ); // delete old stuff $old_uri = SMWExporter::expandURI( $this->getURI( $oldtitle ) ); $this->removeDataForURI( $old_uri ); $newpage = SMWDataValueFactory::newTypeIDValue( '_wpg' ); $newpage->setValues( $newtitle->getDBkey(), $newtitle->getNamespace(), $pageid ); $semdata = $this->getSemanticData( $newpage ); $this->updateData( $semdata ); $oldpage = SMWDataValueFactory::newTypeIDValue( '_wpg' ); $oldpage->setValues( $oldtitle->getDBkey(), $oldtitle->getNamespace(), $redirid ); $semdata = $this->getSemanticData( $oldpage ); $this->updateData( $semdata, false ); return $result; }