/** * Checks and handles MKCOL request * @param DAV_Resource $resource * @return void * @throws DAV_Status */ protected function handle($resource) { if ($resource) { if ($resource->isVisible()) { throw new DAV_Status(DAV::HTTP_METHOD_NOT_ALLOWED); } throw DAV::forbidden(); } $resource = DAV::$REGISTRY->resource(dirname(DAV::getPath())); if (!$resource or !$resource->isVisible()) { throw new DAV_Status(DAV::HTTP_CONFLICT, 'Unable to MKCOL in unknown resource'); } if (!$resource instanceof DAV_Collection) { throw new DAV_Status(DAV::HTTP_METHOD_NOT_ALLOWED); } if (0 < (int) @$_SERVER['CONTENT_LENGTH']) { throw new DAV_Status(DAV::HTTP_UNSUPPORTED_MEDIA_TYPE); } $resource->assertLock(); $resource->method_MKCOL(basename(DAV::getPath())); DAV::redirect(DAV::HTTP_CREATED, DAV::getPath()); }