Blame view

sources/3rdparty/Sabre/DAV/Property/LockDiscovery.php 3.03 KB
03e52840d   Kload   Init
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
  <?php
  
  /**
   * Represents {DAV:}lockdiscovery property
   *
   * This property contains all the open locks on a given resource
   *
   * @package Sabre
   * @subpackage DAV
   * @copyright Copyright (C) 2007-2013 Rooftop Solutions. All rights reserved.
   * @author Evert Pot (http://www.rooftopsolutions.nl/)
   * @license http://code.google.com/p/sabredav/wiki/License Modified BSD License
   */
  class Sabre_DAV_Property_LockDiscovery extends Sabre_DAV_Property {
  
      /**
       * locks
       *
       * @var array
       */
      public $locks;
  
      /**
       * Should we show the locktoken as well?
       *
       * @var bool
       */
      public $revealLockToken;
  
      /**
       * Hides the {DAV:}lockroot element from the response.
       *
       * It was reported that showing the lockroot in the response can break
       * Office 2000 compatibility.
       */
      static public $hideLockRoot = false;
  
      /**
       * __construct
       *
       * @param array $locks
       * @param bool $revealLockToken
       */
      public function __construct($locks, $revealLockToken = false) {
  
          $this->locks = $locks;
          $this->revealLockToken = $revealLockToken;
  
      }
  
      /**
       * serialize
       *
       * @param Sabre_DAV_Server $server
       * @param DOMElement       $prop
       * @return void
       */
      public function serialize(Sabre_DAV_Server $server, DOMElement $prop) {
  
          $doc = $prop->ownerDocument;
  
          foreach($this->locks as $lock) {
  
              $activeLock = $doc->createElementNS('DAV:','d:activelock');
              $prop->appendChild($activeLock);
  
              $lockScope = $doc->createElementNS('DAV:','d:lockscope');
              $activeLock->appendChild($lockScope);
  
              $lockScope->appendChild($doc->createElementNS('DAV:','d:' . ($lock->scope==Sabre_DAV_Locks_LockInfo::EXCLUSIVE?'exclusive':'shared')));
  
              $lockType = $doc->createElementNS('DAV:','d:locktype');
              $activeLock->appendChild($lockType);
  
              $lockType->appendChild($doc->createElementNS('DAV:','d:write'));
  
              /* {DAV:}lockroot */
              if (!self::$hideLockRoot) {
                  $lockRoot = $doc->createElementNS('DAV:','d:lockroot');
                  $activeLock->appendChild($lockRoot);
                  $href = $doc->createElementNS('DAV:','d:href');
                  $href->appendChild($doc->createTextNode($server->getBaseUri() . $lock->uri));
                  $lockRoot->appendChild($href);
              }
  
              $activeLock->appendChild($doc->createElementNS('DAV:','d:depth',($lock->depth == Sabre_DAV_Server::DEPTH_INFINITY?'infinity':$lock->depth)));
              $activeLock->appendChild($doc->createElementNS('DAV:','d:timeout','Second-' . $lock->timeout));
  
              if ($this->revealLockToken) {
                  $lockToken = $doc->createElementNS('DAV:','d:locktoken');
                  $activeLock->appendChild($lockToken);
                  $lockToken->appendChild($doc->createElementNS('DAV:','d:href','opaquelocktoken:' . $lock->token));
              }
  
              $activeLock->appendChild($doc->createElementNS('DAV:','d:owner',$lock->owner));
  
          }
  
      }
  
  }