/** * Callback for the hook ezcWebdavServer::receivedRequest(). * * Parameters are: * - ezcWebdavRequest request * * Needs to react directly on: * - ezcWebdavLockRequest * - ezcWebdavUnlockRequest * * Needs to check if lock violations occur on: * - ezcWebdavCopyRequest * - ezcWebdavMoveRequest * - ezcWebdavMakeCollectionRequest * - ezcWebdavPropPatchRequest * - ezcWebdavPutRequest * * @param ezcWebdavPluginParameters $params * @return ezcWebdavResponse|null */ public function receivedRequest(ezcWebdavPluginParameters $params) { $request = $params['request']; $requestClass = get_class($request); if (isset(ezcWebdavLockPlugin::$requestHandlingMap[$requestClass])) { // Set headers parsed by the lock plugin only. $request->setHeader('If', $this->headerHandler->parseIfHeader($request)); $request->setHeader('Timeout', $this->headerHandler->parseTimeoutHeader($request)); $request->setHeader('Lock-Token', $this->headerHandler->parseLockTokenHeader($request)); $request->validateHeaders(); $handlerClass = ezcWebdavLockPlugin::$requestHandlingMap[$requestClass]; $this->handler = new $handlerClass(new ezcWebdavLockTools($this->options)); if ($this->handler->needsBackendLock) { ezcWebdavServer::getInstance()->backend->lock($this->options->backendLockWaitTime, $this->options->backendLockTimeout); } $res = null; try { $res = $this->handler->receivedRequest($request); } catch (Exception $e) { if ($this->handler->needsBackendLock) { ezcWebdavServer::getInstance()->backend->unlock(); } throw $e; } return $res; } // return null }
/** * testParseNoTaggedList * * @param mixed $content * @param mixed $result * @return void * * @dataProvider provideIfHeaderData */ public function testParseIfHeader($content, $result) { $_SERVER['HTTP_IF'] = $content; $handler = new ezcWebdavLockHeaderHandler(); $this->assertEquals($result, $handler->parseIfHeader()); }