Blame view

sources/3rdparty/sabre/dav/lib/Sabre/DAV/Mount/Plugin.php 2.09 KB
03e52840d   Kload   Init
1
  <?php
6d9380f96   Cédric Dupont   Update sources OC...
2
3
4
  namespace Sabre\DAV\Mount;
  
  use Sabre\DAV;
03e52840d   Kload   Init
5
6
7
8
9
  /**
   * This plugin provides support for RFC4709: Mounting WebDAV servers
   *
   * Simply append ?mount to any collection to generate the davmount response.
   *
6d9380f96   Cédric Dupont   Update sources OC...
10
11
12
   * @copyright Copyright (C) 2007-2014 fruux GmbH (https://fruux.com/).
   * @author Evert Pot (http://evertpot.com/)
   * @license http://sabre.io/license/ Modified BSD License
03e52840d   Kload   Init
13
   */
6d9380f96   Cédric Dupont   Update sources OC...
14
  class Plugin extends DAV\ServerPlugin {
03e52840d   Kload   Init
15
16
17
18
  
      /**
       * Reference to Server class
       *
6d9380f96   Cédric Dupont   Update sources OC...
19
       * @var Sabre\DAV\Server
03e52840d   Kload   Init
20
21
22
23
24
25
       */
      protected $server;
  
      /**
       * Initializes the plugin and registers event handles
       *
6d9380f96   Cédric Dupont   Update sources OC...
26
       * @param DAV\Server $server
03e52840d   Kload   Init
27
28
       * @return void
       */
6d9380f96   Cédric Dupont   Update sources OC...
29
      public function initialize(DAV\Server $server) {
03e52840d   Kload   Init
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
  
          $this->server = $server;
          $this->server->subscribeEvent('beforeMethod',array($this,'beforeMethod'), 90);
  
      }
  
      /**
       * 'beforeMethod' event handles. This event handles intercepts GET requests ending
       * with ?mount
       *
       * @param string $method
       * @param string $uri
       * @return bool
       */
      public function beforeMethod($method, $uri) {
  
          if ($method!='GET') return;
          if ($this->server->httpRequest->getQueryString()!='mount') return;
  
          $currentUri = $this->server->httpRequest->getAbsoluteUri();
  
          // Stripping off everything after the ?
          list($currentUri) = explode('?',$currentUri);
  
          $this->davMount($currentUri);
  
          // Returning false to break the event chain
          return false;
  
      }
  
      /**
       * Generates the davmount response
       *
       * @param string $uri absolute uri
       * @return void
       */
      public function davMount($uri) {
  
          $this->server->httpResponse->sendStatus(200);
          $this->server->httpResponse->setHeader('Content-Type','application/davmount+xml');
          ob_start();
          echo '<?xml version="1.0"?>', "
  ";
          echo "<dm:mount xmlns:dm=\"http://purl.org/NET/webdav/mount\">
  ";
          echo "  <dm:url>", htmlspecialchars($uri, ENT_NOQUOTES, 'UTF-8'), "</dm:url>
  ";
          echo "</dm:mount>";
          $this->server->httpResponse->sendBody(ob_get_clean());
  
      }
  
  
  }