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