1*a1a3b679SAndreas Boehler<?php 2*a1a3b679SAndreas Boehler 3*a1a3b679SAndreas Boehlernamespace Sabre\DAV; 4*a1a3b679SAndreas Boehler 5*a1a3b679SAndreas Boehler/** 6*a1a3b679SAndreas Boehler * File class 7*a1a3b679SAndreas Boehler * 8*a1a3b679SAndreas Boehler * This is a helper class, that should aid in getting file classes setup. 9*a1a3b679SAndreas Boehler * Most of its methods are implemented, and throw permission denied exceptions 10*a1a3b679SAndreas Boehler * 11*a1a3b679SAndreas Boehler * @copyright Copyright (C) 2007-2015 fruux GmbH (https://fruux.com/). 12*a1a3b679SAndreas Boehler * @author Evert Pot (http://evertpot.com/) 13*a1a3b679SAndreas Boehler * @license http://sabre.io/license/ Modified BSD License 14*a1a3b679SAndreas Boehler */ 15*a1a3b679SAndreas Boehlerabstract class File extends Node implements IFile { 16*a1a3b679SAndreas Boehler 17*a1a3b679SAndreas Boehler /** 18*a1a3b679SAndreas Boehler * Updates the data 19*a1a3b679SAndreas Boehler * 20*a1a3b679SAndreas Boehler * data is a readable stream resource. 21*a1a3b679SAndreas Boehler * 22*a1a3b679SAndreas Boehler * @param resource $data 23*a1a3b679SAndreas Boehler * @return void 24*a1a3b679SAndreas Boehler */ 25*a1a3b679SAndreas Boehler function put($data) { 26*a1a3b679SAndreas Boehler 27*a1a3b679SAndreas Boehler throw new Exception\Forbidden('Permission denied to change data'); 28*a1a3b679SAndreas Boehler 29*a1a3b679SAndreas Boehler } 30*a1a3b679SAndreas Boehler 31*a1a3b679SAndreas Boehler /** 32*a1a3b679SAndreas Boehler * Returns the data 33*a1a3b679SAndreas Boehler * 34*a1a3b679SAndreas Boehler * This method may either return a string or a readable stream resource 35*a1a3b679SAndreas Boehler * 36*a1a3b679SAndreas Boehler * @return mixed 37*a1a3b679SAndreas Boehler */ 38*a1a3b679SAndreas Boehler function get() { 39*a1a3b679SAndreas Boehler 40*a1a3b679SAndreas Boehler throw new Exception\Forbidden('Permission denied to read this file'); 41*a1a3b679SAndreas Boehler 42*a1a3b679SAndreas Boehler } 43*a1a3b679SAndreas Boehler 44*a1a3b679SAndreas Boehler /** 45*a1a3b679SAndreas Boehler * Returns the size of the file, in bytes. 46*a1a3b679SAndreas Boehler * 47*a1a3b679SAndreas Boehler * @return int 48*a1a3b679SAndreas Boehler */ 49*a1a3b679SAndreas Boehler function getSize() { 50*a1a3b679SAndreas Boehler 51*a1a3b679SAndreas Boehler return 0; 52*a1a3b679SAndreas Boehler 53*a1a3b679SAndreas Boehler } 54*a1a3b679SAndreas Boehler 55*a1a3b679SAndreas Boehler /** 56*a1a3b679SAndreas Boehler * Returns the ETag for a file 57*a1a3b679SAndreas Boehler * 58*a1a3b679SAndreas Boehler * An ETag is a unique identifier representing the current version of the file. If the file changes, the ETag MUST change. 59*a1a3b679SAndreas Boehler * The ETag is an arbitrary string, but MUST be surrounded by double-quotes. 60*a1a3b679SAndreas Boehler * 61*a1a3b679SAndreas Boehler * Return null if the ETag can not effectively be determined 62*a1a3b679SAndreas Boehler * 63*a1a3b679SAndreas Boehler * @return string|null 64*a1a3b679SAndreas Boehler */ 65*a1a3b679SAndreas Boehler function getETag() { 66*a1a3b679SAndreas Boehler 67*a1a3b679SAndreas Boehler return null; 68*a1a3b679SAndreas Boehler 69*a1a3b679SAndreas Boehler } 70*a1a3b679SAndreas Boehler 71*a1a3b679SAndreas Boehler /** 72*a1a3b679SAndreas Boehler * Returns the mime-type for a file 73*a1a3b679SAndreas Boehler * 74*a1a3b679SAndreas Boehler * If null is returned, we'll assume application/octet-stream 75*a1a3b679SAndreas Boehler * 76*a1a3b679SAndreas Boehler * @return string|null 77*a1a3b679SAndreas Boehler */ 78*a1a3b679SAndreas Boehler function getContentType() { 79*a1a3b679SAndreas Boehler 80*a1a3b679SAndreas Boehler return null; 81*a1a3b679SAndreas Boehler 82*a1a3b679SAndreas Boehler } 83*a1a3b679SAndreas Boehler 84*a1a3b679SAndreas Boehler} 85