xref: /plugin/davcal/vendor/sabre/dav/lib/DAV/FS/File.php (revision a1a3b6794e0e143a4a8b51d3185ce2d339be61ab)
1*a1a3b679SAndreas Boehler<?php
2*a1a3b679SAndreas Boehler
3*a1a3b679SAndreas Boehlernamespace Sabre\DAV\FS;
4*a1a3b679SAndreas Boehler
5*a1a3b679SAndreas Boehleruse Sabre\DAV;
6*a1a3b679SAndreas Boehler
7*a1a3b679SAndreas Boehler/**
8*a1a3b679SAndreas Boehler * File class
9*a1a3b679SAndreas Boehler *
10*a1a3b679SAndreas Boehler * @copyright Copyright (C) 2007-2015 fruux GmbH (https://fruux.com/).
11*a1a3b679SAndreas Boehler * @author Evert Pot (http://evertpot.com/)
12*a1a3b679SAndreas Boehler * @license http://sabre.io/license/ Modified BSD License
13*a1a3b679SAndreas Boehler */
14*a1a3b679SAndreas Boehlerclass File extends Node implements DAV\IFile {
15*a1a3b679SAndreas Boehler
16*a1a3b679SAndreas Boehler    /**
17*a1a3b679SAndreas Boehler     * Updates the data
18*a1a3b679SAndreas Boehler     *
19*a1a3b679SAndreas Boehler     * @param resource $data
20*a1a3b679SAndreas Boehler     * @return void
21*a1a3b679SAndreas Boehler     */
22*a1a3b679SAndreas Boehler    function put($data) {
23*a1a3b679SAndreas Boehler
24*a1a3b679SAndreas Boehler        file_put_contents($this->path, $data);
25*a1a3b679SAndreas Boehler        clearstatcache(true, $this->path);
26*a1a3b679SAndreas Boehler
27*a1a3b679SAndreas Boehler    }
28*a1a3b679SAndreas Boehler
29*a1a3b679SAndreas Boehler    /**
30*a1a3b679SAndreas Boehler     * Returns the data
31*a1a3b679SAndreas Boehler     *
32*a1a3b679SAndreas Boehler     * @return resource
33*a1a3b679SAndreas Boehler     */
34*a1a3b679SAndreas Boehler    function get() {
35*a1a3b679SAndreas Boehler
36*a1a3b679SAndreas Boehler        return fopen($this->path, 'r');
37*a1a3b679SAndreas Boehler
38*a1a3b679SAndreas Boehler    }
39*a1a3b679SAndreas Boehler
40*a1a3b679SAndreas Boehler    /**
41*a1a3b679SAndreas Boehler     * Delete the current file
42*a1a3b679SAndreas Boehler     *
43*a1a3b679SAndreas Boehler     * @return void
44*a1a3b679SAndreas Boehler     */
45*a1a3b679SAndreas Boehler    function delete() {
46*a1a3b679SAndreas Boehler
47*a1a3b679SAndreas Boehler        unlink($this->path);
48*a1a3b679SAndreas Boehler
49*a1a3b679SAndreas Boehler    }
50*a1a3b679SAndreas Boehler
51*a1a3b679SAndreas Boehler    /**
52*a1a3b679SAndreas Boehler     * Returns the size of the node, in bytes
53*a1a3b679SAndreas Boehler     *
54*a1a3b679SAndreas Boehler     * @return int
55*a1a3b679SAndreas Boehler     */
56*a1a3b679SAndreas Boehler    function getSize() {
57*a1a3b679SAndreas Boehler
58*a1a3b679SAndreas Boehler        return filesize($this->path);
59*a1a3b679SAndreas Boehler
60*a1a3b679SAndreas Boehler    }
61*a1a3b679SAndreas Boehler
62*a1a3b679SAndreas Boehler    /**
63*a1a3b679SAndreas Boehler     * Returns the ETag for a file
64*a1a3b679SAndreas Boehler     *
65*a1a3b679SAndreas Boehler     * An ETag is a unique identifier representing the current version of the file. If the file changes, the ETag MUST change.
66*a1a3b679SAndreas Boehler     * The ETag is an arbitrary string, but MUST be surrounded by double-quotes.
67*a1a3b679SAndreas Boehler     *
68*a1a3b679SAndreas Boehler     * Return null if the ETag can not effectively be determined
69*a1a3b679SAndreas Boehler     *
70*a1a3b679SAndreas Boehler     * @return mixed
71*a1a3b679SAndreas Boehler     */
72*a1a3b679SAndreas Boehler    function getETag() {
73*a1a3b679SAndreas Boehler
74*a1a3b679SAndreas Boehler        return '"' . sha1(
75*a1a3b679SAndreas Boehler            fileinode($this->path) .
76*a1a3b679SAndreas Boehler            filesize($this->path) .
77*a1a3b679SAndreas Boehler            filemtime($this->path)
78*a1a3b679SAndreas Boehler        ) . '"';
79*a1a3b679SAndreas Boehler
80*a1a3b679SAndreas Boehler    }
81*a1a3b679SAndreas Boehler
82*a1a3b679SAndreas Boehler    /**
83*a1a3b679SAndreas Boehler     * Returns the mime-type for a file
84*a1a3b679SAndreas Boehler     *
85*a1a3b679SAndreas Boehler     * If null is returned, we'll assume application/octet-stream
86*a1a3b679SAndreas Boehler     *
87*a1a3b679SAndreas Boehler     * @return mixed
88*a1a3b679SAndreas Boehler     */
89*a1a3b679SAndreas Boehler    function getContentType() {
90*a1a3b679SAndreas Boehler
91*a1a3b679SAndreas Boehler        return null;
92*a1a3b679SAndreas Boehler
93*a1a3b679SAndreas Boehler    }
94*a1a3b679SAndreas Boehler
95*a1a3b679SAndreas Boehler}
96