1<?php 2 3namespace Sabre\DAV\Exception; 4 5use Sabre\DAV; 6 7/** 8 * PreconditionFailed 9 * 10 * This exception is normally thrown when a client submitted a conditional request, 11 * like for example an If, If-None-Match or If-Match header, which caused the HTTP 12 * request to not execute (the condition of the header failed) 13 * 14 * @copyright Copyright (C) fruux GmbH (https://fruux.com/) 15 * @author Evert Pot (http://evertpot.com/) 16 * @license http://sabre.io/license/ Modified BSD License 17 */ 18class PreconditionFailed extends DAV\Exception { 19 20 /** 21 * When this exception is thrown, the header-name might be set. 22 * 23 * This allows the exception-catching code to determine which HTTP header 24 * caused the exception. 25 * 26 * @var string 27 */ 28 public $header = null; 29 30 /** 31 * Create the exception 32 * 33 * @param string $message 34 * @param string $header 35 */ 36 function __construct($message, $header = null) { 37 38 parent::__construct($message); 39 $this->header = $header; 40 41 } 42 43 /** 44 * Returns the HTTP statuscode for this exception 45 * 46 * @return int 47 */ 48 function getHTTPCode() { 49 50 return 412; 51 52 } 53 54 /** 55 * This method allows the exception to include additional information into the WebDAV error response 56 * 57 * @param DAV\Server $server 58 * @param \DOMElement $errorNode 59 * @return void 60 */ 61 function serialize(DAV\Server $server, \DOMElement $errorNode) { 62 63 if ($this->header) { 64 $prop = $errorNode->ownerDocument->createElement('s:header'); 65 $prop->nodeValue = $this->header; 66 $errorNode->appendChild($prop); 67 } 68 69 } 70 71} 72