function search( &$serverOptions ) { $serverOptions['namespaces']['http://subversion.tigris.org/xmlns/dav/'] = 'V'; $status = array(); $search = SearchEngine::create(); # TODO: Use (int)$wgUser->getOption( 'searchlimit' ); $search->setLimitOffset( MW_SEARCH_LIMIT ); $results = $search->searchText( $serverOptions['xpath']->evaluate( 'string(/D:searchrequest/D:basicsearch/D:where/D:contains)' ) ); while ( ( $result = $results->next() ) !== false ) { $title = $result->getTitle(); $revision = Revision::newFromTitle( $title ); $response = array(); $response['path'] = 'webdav.php/' . $title->getPrefixedUrl(); $response['props'][] = WebDavServer::mkprop( 'checked-in', $this->getUrl( array( 'path' => 'deltav.php/ver/' . $revision->getId() ) ) ); $response['props'][] = WebDavServer::mkprop( 'displayname', $title->getText() ); $response['props'][] = WebDavServer::mkprop( 'getcontentlength', $revision->getSize() ); $response['props'][] = WebDavServer::mkprop( 'getcontenttype', 'text/x-wiki' ); $response['props'][] = WebDavServer::mkprop( 'getlastmodified', wfTimestamp( TS_UNIX, $revision->mTimestamp ) ); $response['props'][] = WebDavServer::mkprop( 'resourcetype', null ); $response['props'][] = WebDavServer::mkprop( 'version-controlled-configuration', $this->getUrl( array( 'path' => 'deltav.php/vcc/default' ) ) ); $response['props'][] = WebDavServer::mkprop( 'http://subversion.tigris.org/xmlns/dav/', 'baseline-relative-path', $title->getFullUrl() ); $response['score'] = $result->getScore(); $status[] = $response; } # TODO: Check if we exceed our limit #$response = array(); #$response['status'] = '507 Insufficient Storage'; #$status[] = $response; return $status; }
<?php # Initialise common code require_once( './includes/WebStart.php' ); require_once( './WebDavServer.php' ); $server = new WebDavServer(); $server->handleRequest();