Blame view
sources/3rdparty/sabre/dav/tests/Sabre/DAV/Mock/File.php
2.73 KB
|
6d9380f96
|
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 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
<?php
namespace Sabre\DAV\Mock;
use Sabre\DAV;
/**
* Mock File
*
* See the Collection in this directory for more details.
*
* @copyright Copyright (C) 2007-2014 fruux GmbH. All rights reserved.
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
class File extends DAV\File {
protected $name;
protected $contents;
protected $parent;
/**
* Creates the object
*
* @param string $name
* @param array $children
* @return void
*/
public function __construct($name, $contents, Collection $parent) {
$this->name = $name;
$this->put($contents);
$this->parent = $parent;
}
/**
* Returns the name of the node.
*
* This is used to generate the url.
*
* @return string
*/
public function getName() {
return $this->name;
}
/**
* Updates the data
*
* The data argument is a readable stream resource.
*
* After a succesful put operation, you may choose to return an ETag. The
* etag must always be surrounded by double-quotes. These quotes must
* appear in the actual string you're returning.
*
* Clients may use the ETag from a PUT request to later on make sure that
* when they update the file, the contents haven't changed in the mean
* time.
*
* If you don't plan to store the file byte-by-byte, and you return a
* different object on a subsequent GET you are strongly recommended to not
* return an ETag, and just return null.
*
* @param resource $data
* @return string|null
*/
public function put($data) {
if (is_resource($data)) {
$data = stream_get_contents($data);
}
$this->contents = $data;
return '"' . md5($data) . '"';
}
/**
* Returns the data
*
* This method may either return a string or a readable stream resource
*
* @return mixed
*/
public function get() {
return $this->contents;
}
/**
* Returns the ETag for a file
*
* An ETag is a unique identifier representing the current version of the file. If the file changes, the ETag MUST change.
*
* Return null if the ETag can not effectively be determined
*
* @return void
*/
public function getETag() {
return '"' . md5($this->contents) . '"';
}
/**
* Returns the size of the node, in bytes
*
* @return int
*/
public function getSize() {
return strlen($this->contents);
}
/**
* Delete the node
*
* @return void
*/
public function delete() {
$this->parent->deleteChild($this->name);
}
}
|