Blame view

sources/apps/files_external/lib/streamwrapper.php 2.13 KB
03e52840d   Kload   Init
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
  <?php
  /**
   * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com>
   * This file is licensed under the Affero General Public License version 3 or
   * later.
   * See the COPYING-README file.
   */
  
  namespace OC\Files\Storage;
  
  abstract class StreamWrapper extends Common {
  	abstract public function constructUrl($path);
  
  	public function mkdir($path) {
  		return mkdir($this->constructUrl($path));
  	}
  
  	public function rmdir($path) {
  		if ($this->file_exists($path)) {
  			$dh = $this->opendir($path);
  			while (($file = readdir($dh)) !== false) {
  				if ($this->is_dir($path . '/' . $file)) {
  					$this->rmdir($path . '/' . $file);
  				} else {
  					$this->unlink($path . '/' . $file);
  				}
  			}
31b7f2792   Kload   Upgrade to ownclo...
28
29
30
  			$url = $this->constructUrl($path);
  			$success = rmdir($url);
  			clearstatcache(false, $url);
03e52840d   Kload   Init
31
32
33
34
35
36
37
38
39
40
41
  			return $success;
  		} else {
  			return false;
  		}
  	}
  
  	public function opendir($path) {
  		return opendir($this->constructUrl($path));
  	}
  
  	public function filetype($path) {
31b7f2792   Kload   Upgrade to ownclo...
42
  		return @filetype($this->constructUrl($path));
03e52840d   Kload   Init
43
44
45
46
47
48
49
  	}
  
  	public function file_exists($path) {
  		return file_exists($this->constructUrl($path));
  	}
  
  	public function unlink($path) {
31b7f2792   Kload   Upgrade to ownclo...
50
51
52
53
54
  		$url = $this->constructUrl($path);
  		$success = unlink($url);
  		// normally unlink() is supposed to do this implicitly,
  		// but doing it anyway just to be sure
  		clearstatcache(false, $url);
03e52840d   Kload   Init
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
  		return $success;
  	}
  
  	public function fopen($path, $mode) {
  		return fopen($this->constructUrl($path), $mode);
  	}
  
  	public function touch($path, $mtime = null) {
  		if ($this->file_exists($path)) {
  			if (is_null($mtime)) {
  				$fh = $this->fopen($path, 'a');
  				fwrite($fh, '');
  				fclose($fh);
  
  				return true;
  			} else {
  				return false; //not supported
  			}
  		} else {
  			$this->file_put_contents($path, '');
31b7f2792   Kload   Upgrade to ownclo...
75
  			return true;
03e52840d   Kload   Init
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
  		}
  	}
  
  	public function getFile($path, $target) {
  		return copy($this->constructUrl($path), $target);
  	}
  
  	public function uploadFile($path, $target) {
  		return copy($path, $this->constructUrl($target));
  	}
  
  	public function rename($path1, $path2) {
  		return rename($this->constructUrl($path1), $this->constructUrl($path2));
  	}
  
  	public function stat($path) {
  		return stat($this->constructUrl($path));
  	}
  
  }