Blame view

sources/apps/files_external/lib/streamwrapper.php 2.28 KB
03e52840d   Kload   Init
1
2
3
4
5
6
7
8
9
10
11
  <?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 {
6d9380f96   Cédric Dupont   Update sources OC...
12
13
14
15
16
  
  	/**
  	 * @param string $path
  	 * @return string|null
  	 */
03e52840d   Kload   Init
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
  	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...
33
34
35
  			$url = $this->constructUrl($path);
  			$success = rmdir($url);
  			clearstatcache(false, $url);
03e52840d   Kload   Init
36
37
38
39
40
41
42
43
44
45
46
  			return $success;
  		} else {
  			return false;
  		}
  	}
  
  	public function opendir($path) {
  		return opendir($this->constructUrl($path));
  	}
  
  	public function filetype($path) {
31b7f2792   Kload   Upgrade to ownclo...
47
  		return @filetype($this->constructUrl($path));
03e52840d   Kload   Init
48
49
50
51
52
53
54
  	}
  
  	public function file_exists($path) {
  		return file_exists($this->constructUrl($path));
  	}
  
  	public function unlink($path) {
31b7f2792   Kload   Upgrade to ownclo...
55
56
57
58
59
  		$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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
  		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...
80
  			return true;
03e52840d   Kload   Init
81
82
  		}
  	}
6d9380f96   Cédric Dupont   Update sources OC...
83
84
85
86
  	/**
  	 * @param string $path
  	 * @param string $target
  	 */
03e52840d   Kload   Init
87
88
89
  	public function getFile($path, $target) {
  		return copy($this->constructUrl($path), $target);
  	}
6d9380f96   Cédric Dupont   Update sources OC...
90
91
92
  	/**
  	 * @param string $target
  	 */
03e52840d   Kload   Init
93
94
95
96
97
98
99
100
101
102
103
104
105
  	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));
  	}
  
  }