OwsException.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. // @usage: throw new Api_OwsException("Access Denied to Create field '{$fieldName}' in object '{$typeName}.{$pkObject}'", __LINE__, null, 'MissingFieldPermCreate', 'request');
  3. // example:
  4. // <ows:ExceptionReport
  5. // xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.1.0" xsi:schemaLocation="http://www.opengis.net/ows/1.1 https://demo.boundlessgeo.com/geoserver/schemas/ows/1.1.0/owsAll.xsd">
  6. // <ows:Exception exceptionCode="MissingParameterValue" locator="request">
  7. // <ows:ExceptionText>Could not determine geoserver request from http request org.geoserver.platform.AdvancedDispatchFilter$AdvancedDispatchHttpRequest@4183f02c</ows:ExceptionText>
  8. // </ows:Exception>
  9. // </ows:ExceptionReport>
  10. class Api_OwsException extends Exception {
  11. public $wfsCode = '';
  12. public $wfsLocator = '';
  13. public function __construct($message, $code = 0, Exception $previous = null, $wfsCode = '', $wfsLocator = '') {
  14. $this->wfsCode = $wfsCode;
  15. $this->wfsLocator = $wfsLocator;
  16. parent::__construct($message, $code, $previous);
  17. }
  18. public function generateResponseXml() {
  19. $xmlWriter = new XMLWriter();
  20. if (!$xmlWriter) throw new HttpException("Error no XMLWriter", 404);
  21. // $xmlWriter->openUri('php://output');
  22. $xmlWriter->openMemory();
  23. $xmlWriter->setIndent(true);
  24. $xmlWriter->startDocument('1.0','UTF-8');
  25. $xmlWriter->startElement('ows:ExceptionReport');
  26. {
  27. $xmlWriter->writeAttribute('xmlns:xs', 'http://www.w3.org/2001/XMLSchema');
  28. $xmlWriter->writeAttribute('xmlns:ows', 'http://www.opengis.net/ows/1.1');
  29. $xmlWriter->writeAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance');
  30. $xmlWriter->writeAttribute('xsi:schemaLocation', 'http://www.opengis.net/ows/1.1 https://demo.boundlessgeo.com/geoserver/schemas/ows/1.1.0/owsAll.xsd');
  31. $xmlWriter->writeAttribute('version', '1.1.0');
  32. $xmlWriter->startElement('ows:Exception');
  33. {
  34. if ($this->wfsCode) $xmlWriter->writeAttribute('exceptionCode', $this->wfsCode);
  35. if ($this->wfsLocator) $xmlWriter->writeAttribute('locator', $this->wfsLocator);
  36. $xmlWriter->startElement('ows:ExceptionText');
  37. {
  38. $xmlWriter->text($this->message);
  39. }
  40. $xmlWriter->endElement();// ows:ExceptionText
  41. }
  42. $xmlWriter->endElement();// ows:Exception
  43. }
  44. $xmlWriter->endElement();// ows:ExceptionReport
  45. $xmlWriter->endDocument();
  46. return $xmlWriter->outputMemory(true);
  47. }
  48. public function sendResponseXml() {
  49. header('Content-type: application/xml');
  50. echo $this->generateResponseXml();
  51. }
  52. }