Completed
Pull Request — master (#8833)
by Blizzz
40:18 queued 20:49
created
lib/private/Template/ResourceNotFoundException.php 2 patches
Indentation   +17 added lines, -17 removed lines patch added patch discarded remove patch
@@ -24,23 +24,23 @@
 block discarded – undo
24 24
 namespace OC\Template;
25 25
 
26 26
 class ResourceNotFoundException extends \LogicException {
27
-	protected $resource;
28
-	protected $webPath;
27
+    protected $resource;
28
+    protected $webPath;
29 29
 
30
-	/**
31
-	 * @param string $resource
32
-	 * @param string $webPath
33
-	 */
34
-	public function __construct($resource, $webPath) {
35
-		parent::__construct('Resource not found');
36
-		$this->resource = $resource;
37
-		$this->webPath = $webPath;
38
-	}
30
+    /**
31
+     * @param string $resource
32
+     * @param string $webPath
33
+     */
34
+    public function __construct($resource, $webPath) {
35
+        parent::__construct('Resource not found');
36
+        $this->resource = $resource;
37
+        $this->webPath = $webPath;
38
+    }
39 39
 
40
-	/**
41
-	 * @return string
42
-	 */
43
-	public function getResourcePath() {
44
-		return $this->webPath . '/' . $this->resource;
45
-	}
40
+    /**
41
+     * @return string
42
+     */
43
+    public function getResourcePath() {
44
+        return $this->webPath . '/' . $this->resource;
45
+    }
46 46
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -41,6 +41,6 @@
 block discarded – undo
41 41
 	 * @return string
42 42
 	 */
43 43
 	public function getResourcePath() {
44
-		return $this->webPath . '/' . $this->resource;
44
+		return $this->webPath.'/'.$this->resource;
45 45
 	}
46 46
 }
Please login to merge, or discard this patch.
lib/private/Template/TemplateFileLocator.php 2 patches
Indentation   +29 added lines, -29 removed lines patch added patch discarded remove patch
@@ -26,37 +26,37 @@
 block discarded – undo
26 26
 namespace OC\Template;
27 27
 
28 28
 class TemplateFileLocator {
29
-	protected $dirs;
30
-	private $path;
29
+    protected $dirs;
30
+    private $path;
31 31
 
32
-	/**
33
-	 * @param string[] $dirs
34
-	 */
35
-	public function __construct( $dirs ) {
36
-		$this->dirs = $dirs;
37
-	}
32
+    /**
33
+     * @param string[] $dirs
34
+     */
35
+    public function __construct( $dirs ) {
36
+        $this->dirs = $dirs;
37
+    }
38 38
 
39
-	/**
40
-	 * @param string $template
41
-	 * @return string
42
-	 * @throws \Exception
43
-	 */
44
-	public function find( $template ) {
45
-		if ($template === '') {
46
-			throw new \InvalidArgumentException('Empty template name');
47
-		}
39
+    /**
40
+     * @param string $template
41
+     * @return string
42
+     * @throws \Exception
43
+     */
44
+    public function find( $template ) {
45
+        if ($template === '') {
46
+            throw new \InvalidArgumentException('Empty template name');
47
+        }
48 48
 
49
-		foreach($this->dirs as $dir) {
50
-			$file = $dir.$template.'.php';
51
-			if (is_file($file)) {
52
-				$this->path = $dir;
53
-				return $file;
54
-			}
55
-		}
56
-		throw new \Exception('template file not found: template:'.$template);
57
-	}
49
+        foreach($this->dirs as $dir) {
50
+            $file = $dir.$template.'.php';
51
+            if (is_file($file)) {
52
+                $this->path = $dir;
53
+                return $file;
54
+            }
55
+        }
56
+        throw new \Exception('template file not found: template:'.$template);
57
+    }
58 58
 
59
-	public function getPath() {
60
-		return $this->path;
61
-	}
59
+    public function getPath() {
60
+        return $this->path;
61
+    }
62 62
 }
Please login to merge, or discard this patch.
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -32,7 +32,7 @@  discard block
 block discarded – undo
32 32
 	/**
33 33
 	 * @param string[] $dirs
34 34
 	 */
35
-	public function __construct( $dirs ) {
35
+	public function __construct($dirs) {
36 36
 		$this->dirs = $dirs;
37 37
 	}
38 38
 
@@ -41,12 +41,12 @@  discard block
 block discarded – undo
41 41
 	 * @return string
42 42
 	 * @throws \Exception
43 43
 	 */
44
-	public function find( $template ) {
44
+	public function find($template) {
45 45
 		if ($template === '') {
46 46
 			throw new \InvalidArgumentException('Empty template name');
47 47
 		}
48 48
 
49
-		foreach($this->dirs as $dir) {
49
+		foreach ($this->dirs as $dir) {
50 50
 			$file = $dir.$template.'.php';
51 51
 			if (is_file($file)) {
52 52
 				$this->path = $dir;
Please login to merge, or discard this patch.
lib/private/Hooks/BasicEmitter.php 1 patch
Indentation   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -24,5 +24,5 @@
 block discarded – undo
24 24
 namespace OC\Hooks;
25 25
 
26 26
 abstract class BasicEmitter implements Emitter {
27
-	use EmitterTrait;
27
+    use EmitterTrait;
28 28
 }
Please login to merge, or discard this patch.
lib/private/Hooks/Emitter.php 1 patch
Indentation   +14 added lines, -14 removed lines patch added patch discarded remove patch
@@ -32,19 +32,19 @@
 block discarded – undo
32 32
  * @package OC\Hooks
33 33
  */
34 34
 interface Emitter {
35
-	/**
36
-	 * @param string $scope
37
-	 * @param string $method
38
-	 * @param callable $callback
39
-	 * @return void
40
-	 */
41
-	public function listen($scope, $method, callable $callback);
35
+    /**
36
+     * @param string $scope
37
+     * @param string $method
38
+     * @param callable $callback
39
+     * @return void
40
+     */
41
+    public function listen($scope, $method, callable $callback);
42 42
 
43
-	/**
44
-	 * @param string $scope optional
45
-	 * @param string $method optional
46
-	 * @param callable $callback optional
47
-	 * @return void
48
-	 */
49
-	public function removeListener($scope = null, $method = null, callable $callback = null);
43
+    /**
44
+     * @param string $scope optional
45
+     * @param string $method optional
46
+     * @param callable $callback optional
47
+     * @return void
48
+     */
49
+    public function removeListener($scope = null, $method = null, callable $callback = null);
50 50
 }
Please login to merge, or discard this patch.
lib/private/Hooks/ForwardingEmitter.php 1 patch
Indentation   +28 added lines, -28 removed lines patch added patch discarded remove patch
@@ -31,35 +31,35 @@
 block discarded – undo
31 31
  * @package OC\Hooks
32 32
  */
33 33
 abstract class ForwardingEmitter extends BasicEmitter {
34
-	/**
35
-	 * @var \OC\Hooks\Emitter[] array
36
-	 */
37
-	private $forwardEmitters = array();
34
+    /**
35
+     * @var \OC\Hooks\Emitter[] array
36
+     */
37
+    private $forwardEmitters = array();
38 38
 
39
-	/**
40
-	 * @param string $scope
41
-	 * @param string $method
42
-	 * @param callable $callback
43
-	 */
44
-	public function listen($scope, $method, callable $callback) {
45
-		parent::listen($scope, $method, $callback);
46
-		foreach ($this->forwardEmitters as $emitter) {
47
-			$emitter->listen($scope, $method, $callback);
48
-		}
49
-	}
39
+    /**
40
+     * @param string $scope
41
+     * @param string $method
42
+     * @param callable $callback
43
+     */
44
+    public function listen($scope, $method, callable $callback) {
45
+        parent::listen($scope, $method, $callback);
46
+        foreach ($this->forwardEmitters as $emitter) {
47
+            $emitter->listen($scope, $method, $callback);
48
+        }
49
+    }
50 50
 
51
-	/**
52
-	 * @param \OC\Hooks\Emitter $emitter
53
-	 */
54
-	protected function forward(Emitter $emitter) {
55
-		$this->forwardEmitters[] = $emitter;
51
+    /**
52
+     * @param \OC\Hooks\Emitter $emitter
53
+     */
54
+    protected function forward(Emitter $emitter) {
55
+        $this->forwardEmitters[] = $emitter;
56 56
 
57
-		//forward all previously connected hooks
58
-		foreach ($this->listeners as $key => $listeners) {
59
-			list($scope, $method) = explode('::', $key, 2);
60
-			foreach ($listeners as $listener) {
61
-				$emitter->listen($scope, $method, $listener);
62
-			}
63
-		}
64
-	}
57
+        //forward all previously connected hooks
58
+        foreach ($this->listeners as $key => $listeners) {
59
+            list($scope, $method) = explode('::', $key, 2);
60
+            foreach ($listeners as $listener) {
61
+                $emitter->listen($scope, $method, $listener);
62
+            }
63
+        }
64
+    }
65 65
 }
Please login to merge, or discard this patch.
lib/private/Hooks/EmitterTrait.php 2 patches
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -35,7 +35,7 @@  discard block
 block discarded – undo
35 35
 	 * @param callable $callback
36 36
 	 */
37 37
 	public function listen($scope, $method, callable $callback) {
38
-		$eventName = $scope . '::' . $method;
38
+		$eventName = $scope.'::'.$method;
39 39
 		if (!isset($this->listeners[$eventName])) {
40 40
 			$this->listeners[$eventName] = array();
41 41
 		}
@@ -53,7 +53,7 @@  discard block
 block discarded – undo
53 53
 		$names = array();
54 54
 		$allNames = array_keys($this->listeners);
55 55
 		if ($scope and $method) {
56
-			$name = $scope . '::' . $method;
56
+			$name = $scope.'::'.$method;
57 57
 			if (isset($this->listeners[$name])) {
58 58
 				$names[] = $name;
59 59
 			}
@@ -93,7 +93,7 @@  discard block
 block discarded – undo
93 93
 	 * @param array $arguments optional
94 94
 	 */
95 95
 	protected function emit($scope, $method, array $arguments = array()) {
96
-		$eventName = $scope . '::' . $method;
96
+		$eventName = $scope.'::'.$method;
97 97
 		if (isset($this->listeners[$eventName])) {
98 98
 			foreach ($this->listeners[$eventName] as $callback) {
99 99
 				call_user_func_array($callback, $arguments);
Please login to merge, or discard this patch.
Indentation   +72 added lines, -72 removed lines patch added patch discarded remove patch
@@ -24,80 +24,80 @@
 block discarded – undo
24 24
 
25 25
 trait EmitterTrait {
26 26
 
27
-	/**
28
-	 * @var callable[][] $listeners
29
-	 */
30
-	protected $listeners = array();
27
+    /**
28
+     * @var callable[][] $listeners
29
+     */
30
+    protected $listeners = array();
31 31
 
32
-	/**
33
-	 * @param string $scope
34
-	 * @param string $method
35
-	 * @param callable $callback
36
-	 */
37
-	public function listen($scope, $method, callable $callback) {
38
-		$eventName = $scope . '::' . $method;
39
-		if (!isset($this->listeners[$eventName])) {
40
-			$this->listeners[$eventName] = array();
41
-		}
42
-		if (array_search($callback, $this->listeners[$eventName], true) === false) {
43
-			$this->listeners[$eventName][] = $callback;
44
-		}
45
-	}
32
+    /**
33
+     * @param string $scope
34
+     * @param string $method
35
+     * @param callable $callback
36
+     */
37
+    public function listen($scope, $method, callable $callback) {
38
+        $eventName = $scope . '::' . $method;
39
+        if (!isset($this->listeners[$eventName])) {
40
+            $this->listeners[$eventName] = array();
41
+        }
42
+        if (array_search($callback, $this->listeners[$eventName], true) === false) {
43
+            $this->listeners[$eventName][] = $callback;
44
+        }
45
+    }
46 46
 
47
-	/**
48
-	 * @param string $scope optional
49
-	 * @param string $method optional
50
-	 * @param callable $callback optional
51
-	 */
52
-	public function removeListener($scope = null, $method = null, callable $callback = null) {
53
-		$names = array();
54
-		$allNames = array_keys($this->listeners);
55
-		if ($scope and $method) {
56
-			$name = $scope . '::' . $method;
57
-			if (isset($this->listeners[$name])) {
58
-				$names[] = $name;
59
-			}
60
-		} elseif ($scope) {
61
-			foreach ($allNames as $name) {
62
-				$parts = explode('::', $name, 2);
63
-				if ($parts[0] == $scope) {
64
-					$names[] = $name;
65
-				}
66
-			}
67
-		} elseif ($method) {
68
-			foreach ($allNames as $name) {
69
-				$parts = explode('::', $name, 2);
70
-				if ($parts[1] == $method) {
71
-					$names[] = $name;
72
-				}
73
-			}
74
-		} else {
75
-			$names = $allNames;
76
-		}
47
+    /**
48
+     * @param string $scope optional
49
+     * @param string $method optional
50
+     * @param callable $callback optional
51
+     */
52
+    public function removeListener($scope = null, $method = null, callable $callback = null) {
53
+        $names = array();
54
+        $allNames = array_keys($this->listeners);
55
+        if ($scope and $method) {
56
+            $name = $scope . '::' . $method;
57
+            if (isset($this->listeners[$name])) {
58
+                $names[] = $name;
59
+            }
60
+        } elseif ($scope) {
61
+            foreach ($allNames as $name) {
62
+                $parts = explode('::', $name, 2);
63
+                if ($parts[0] == $scope) {
64
+                    $names[] = $name;
65
+                }
66
+            }
67
+        } elseif ($method) {
68
+            foreach ($allNames as $name) {
69
+                $parts = explode('::', $name, 2);
70
+                if ($parts[1] == $method) {
71
+                    $names[] = $name;
72
+                }
73
+            }
74
+        } else {
75
+            $names = $allNames;
76
+        }
77 77
 
78
-		foreach ($names as $name) {
79
-			if ($callback) {
80
-				$index = array_search($callback, $this->listeners[$name], true);
81
-				if ($index !== false) {
82
-					unset($this->listeners[$name][$index]);
83
-				}
84
-			} else {
85
-				$this->listeners[$name] = array();
86
-			}
87
-		}
88
-	}
78
+        foreach ($names as $name) {
79
+            if ($callback) {
80
+                $index = array_search($callback, $this->listeners[$name], true);
81
+                if ($index !== false) {
82
+                    unset($this->listeners[$name][$index]);
83
+                }
84
+            } else {
85
+                $this->listeners[$name] = array();
86
+            }
87
+        }
88
+    }
89 89
 
90
-	/**
91
-	 * @param string $scope
92
-	 * @param string $method
93
-	 * @param array $arguments optional
94
-	 */
95
-	protected function emit($scope, $method, array $arguments = array()) {
96
-		$eventName = $scope . '::' . $method;
97
-		if (isset($this->listeners[$eventName])) {
98
-			foreach ($this->listeners[$eventName] as $callback) {
99
-				call_user_func_array($callback, $arguments);
100
-			}
101
-		}
102
-	}
90
+    /**
91
+     * @param string $scope
92
+     * @param string $method
93
+     * @param array $arguments optional
94
+     */
95
+    protected function emit($scope, $method, array $arguments = array()) {
96
+        $eventName = $scope . '::' . $method;
97
+        if (isset($this->listeners[$eventName])) {
98
+            foreach ($this->listeners[$eventName] as $callback) {
99
+                call_user_func_array($callback, $arguments);
100
+            }
101
+        }
102
+    }
103 103
 }
Please login to merge, or discard this patch.
lib/private/legacy/files.php 4 patches
Braces   +6 added lines, -12 removed lines patch added patch discarded remove patch
@@ -83,13 +83,11 @@  discard block
 block discarded – undo
83 83
 			    if (count($rangeArray) > 1) {
84 84
 				$type = 'multipart/byteranges; boundary='.self::getBoundary();
85 85
 				// no Content-Length header here
86
-			    }
87
-			    else {
86
+			    } else {
88 87
 				header(sprintf('Content-Range: bytes %d-%d/%d', $rangeArray[0]['from'], $rangeArray[0]['to'], $fileSize), true);
89 88
 				OC_Response::setContentLengthHeader($rangeArray[0]['to'] - $rangeArray[0]['from'] + 1);
90 89
 			    }
91
-			}
92
-			else {
90
+			} else {
93 91
 			    OC_Response::setContentLengthHeader($fileSize);
94 92
 			}
95 93
 		}
@@ -223,13 +221,11 @@  discard block
 block discarded – undo
223 221
 				if ($minOffset >= $fileSize) {
224 222
 					break;
225 223
 				}
226
-			}
227
-			elseif (is_numeric($ranges[0]) && $ranges[0] < $fileSize) {
224
+			} elseif (is_numeric($ranges[0]) && $ranges[0] < $fileSize) {
228 225
 				// case: x-
229 226
 				$rangeArray[$ind++] = array( 'from' => $ranges[0], 'to' => $fileSize-1, 'size' => $fileSize );
230 227
 				break;
231
-			}
232
-			elseif (is_numeric($ranges[1])) {
228
+			} elseif (is_numeric($ranges[1])) {
233 229
 				// case: -x
234 230
 				if ($ranges[1] > $fileSize) {
235 231
 					$ranges[1] = $fileSize;
@@ -277,8 +273,7 @@  discard block
 block discarded – undo
277 273
 			try {
278 274
 			    if (count($rangeArray) == 1) {
279 275
 				$view->readfilePart($filename, $rangeArray[0]['from'], $rangeArray[0]['to']);
280
-			    }
281
-			    else {
276
+			    } else {
282 277
 				// check if file is seekable (if not throw UnseekableException)
283 278
 				// we have to check it before body contents
284 279
 				$view->readfilePart($filename, $rangeArray[0]['size'], $rangeArray[0]['size']);
@@ -301,8 +296,7 @@  discard block
 block discarded – undo
301 296
 			    self::sendHeaders($filename, $name, array());
302 297
 			    $view->readfile($filename);
303 298
 			}
304
-		}
305
-		else {
299
+		} else {
306 300
 		    $view->readfile($filename);
307 301
 		}
308 302
 	}
Please login to merge, or discard this patch.
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -338,7 +338,7 @@
 block discarded – undo
338 338
 	 *
339 339
 	 * @param int $size file size in bytes
340 340
 	 * @param array $files override '.htaccess' and '.user.ini' locations
341
-	 * @return bool|int false on failure, size on success
341
+	 * @return integer false on failure, size on success
342 342
 	 */
343 343
 	public static function setUploadLimit($size, $files = []) {
344 344
 		//don't allow user to break his config
Please login to merge, or discard this patch.
Indentation   +390 added lines, -390 removed lines patch added patch discarded remove patch
@@ -48,398 +48,398 @@
 block discarded – undo
48 48
  *
49 49
  */
50 50
 class OC_Files {
51
-	const FILE = 1;
52
-	const ZIP_FILES = 2;
53
-	const ZIP_DIR = 3;
54
-
55
-	const UPLOAD_MIN_LIMIT_BYTES = 1048576; // 1 MiB
56
-
57
-
58
-	private static $multipartBoundary = '';
59
-
60
-	/**
61
-	 * @return string
62
-	 */
63
-	private static function getBoundary() {
64
-		if (empty(self::$multipartBoundary)) {
65
-			self::$multipartBoundary = md5(mt_rand());
66
-		}
67
-		return self::$multipartBoundary;
68
-	}
69
-
70
-	/**
71
-	 * @param string $filename
72
-	 * @param string $name
73
-	 * @param array $rangeArray ('from'=>int,'to'=>int), ...
74
-	 */
75
-	private static function sendHeaders($filename, $name, array $rangeArray) {
76
-		OC_Response::setContentDispositionHeader($name, 'attachment');
77
-		header('Content-Transfer-Encoding: binary', true);
78
-		header('Pragma: public');// enable caching in IE
79
-		header('Expires: 0');
80
-		header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
81
-		$fileSize = \OC\Files\Filesystem::filesize($filename);
82
-		$type = \OC::$server->getMimeTypeDetector()->getSecureMimeType(\OC\Files\Filesystem::getMimeType($filename));
83
-		if ($fileSize > -1) {
84
-			if (!empty($rangeArray)) {
85
-			    header('HTTP/1.1 206 Partial Content', true);
86
-			    header('Accept-Ranges: bytes', true);
87
-			    if (count($rangeArray) > 1) {
88
-				$type = 'multipart/byteranges; boundary='.self::getBoundary();
89
-				// no Content-Length header here
90
-			    }
91
-			    else {
92
-				header(sprintf('Content-Range: bytes %d-%d/%d', $rangeArray[0]['from'], $rangeArray[0]['to'], $fileSize), true);
93
-				OC_Response::setContentLengthHeader($rangeArray[0]['to'] - $rangeArray[0]['from'] + 1);
94
-			    }
95
-			}
96
-			else {
97
-			    OC_Response::setContentLengthHeader($fileSize);
98
-			}
99
-		}
100
-		header('Content-Type: '.$type, true);
101
-	}
102
-
103
-	/**
104
-	 * return the content of a file or return a zip file containing multiple files
105
-	 *
106
-	 * @param string $dir
107
-	 * @param string $files ; separated list of files to download
108
-	 * @param array $params ; 'head' boolean to only send header of the request ; 'range' http range header
109
-	 */
110
-	public static function get($dir, $files, $params = null) {
111
-
112
-		$view = \OC\Files\Filesystem::getView();
113
-		$getType = self::FILE;
114
-		$filename = $dir;
115
-		try {
116
-
117
-			if (is_array($files) && count($files) === 1) {
118
-				$files = $files[0];
119
-			}
120
-
121
-			if (!is_array($files)) {
122
-				$filename = $dir . '/' . $files;
123
-				if (!$view->is_dir($filename)) {
124
-					self::getSingleFile($view, $dir, $files, is_null($params) ? array() : $params);
125
-					return;
126
-				}
127
-			}
128
-
129
-			$name = 'download';
130
-			if (is_array($files)) {
131
-				$getType = self::ZIP_FILES;
132
-				$basename = basename($dir);
133
-				if ($basename) {
134
-					$name = $basename;
135
-				}
136
-
137
-				$filename = $dir . '/' . $name;
138
-			} else {
139
-				$filename = $dir . '/' . $files;
140
-				$getType = self::ZIP_DIR;
141
-				// downloading root ?
142
-				if ($files !== '') {
143
-					$name = $files;
144
-				}
145
-			}
146
-
147
-			$streamer = new Streamer();
148
-			OC_Util::obEnd();
149
-
150
-			self::lockFiles($view, $dir, $files);
151
-
152
-			$streamer->sendHeaders($name);
153
-			$executionTime = (int)OC::$server->getIniWrapper()->getNumeric('max_execution_time');
154
-			if (strpos(@ini_get('disable_functions'), 'set_time_limit') === false) {
155
-				@set_time_limit(0);
156
-			}
157
-			ignore_user_abort(true);
158
-			if ($getType === self::ZIP_FILES) {
159
-				foreach ($files as $file) {
160
-					$file = $dir . '/' . $file;
161
-					if (\OC\Files\Filesystem::is_file($file)) {
162
-						$fileSize = \OC\Files\Filesystem::filesize($file);
163
-						$fileTime = \OC\Files\Filesystem::filemtime($file);
164
-						$fh = \OC\Files\Filesystem::fopen($file, 'r');
165
-						$streamer->addFileFromStream($fh, basename($file), $fileSize, $fileTime);
166
-						fclose($fh);
167
-					} elseif (\OC\Files\Filesystem::is_dir($file)) {
168
-						$streamer->addDirRecursive($file);
169
-					}
170
-				}
171
-			} elseif ($getType === self::ZIP_DIR) {
172
-				$file = $dir . '/' . $files;
173
-				$streamer->addDirRecursive($file);
174
-			}
175
-			$streamer->finalize();
176
-			set_time_limit($executionTime);
177
-			self::unlockAllTheFiles($dir, $files, $getType, $view, $filename);
178
-		} catch (\OCP\Lock\LockedException $ex) {
179
-			self::unlockAllTheFiles($dir, $files, $getType, $view, $filename);
180
-			OC::$server->getLogger()->logException($ex);
181
-			$l = \OC::$server->getL10N('core');
182
-			$hint = method_exists($ex, 'getHint') ? $ex->getHint() : '';
183
-			\OC_Template::printErrorPage($l->t('File is currently busy, please try again later'), $hint);
184
-		} catch (\OCP\Files\ForbiddenException $ex) {
185
-			self::unlockAllTheFiles($dir, $files, $getType, $view, $filename);
186
-			OC::$server->getLogger()->logException($ex);
187
-			$l = \OC::$server->getL10N('core');
188
-			\OC_Template::printErrorPage($l->t('Can\'t read file'), $ex->getMessage());
189
-		} catch (\Exception $ex) {
190
-			self::unlockAllTheFiles($dir, $files, $getType, $view, $filename);
191
-			OC::$server->getLogger()->logException($ex);
192
-			$l = \OC::$server->getL10N('core');
193
-			$hint = method_exists($ex, 'getHint') ? $ex->getHint() : '';
194
-			\OC_Template::printErrorPage($l->t('Can\'t read file'), $hint);
195
-		}
196
-	}
197
-
198
-	/**
199
-	 * @param string $rangeHeaderPos
200
-	 * @param int $fileSize
201
-	 * @return array $rangeArray ('from'=>int,'to'=>int), ...
202
-	 */
203
-	private static function parseHttpRangeHeader($rangeHeaderPos, $fileSize) {
204
-		$rArray=explode(',', $rangeHeaderPos);
205
-		$minOffset = 0;
206
-		$ind = 0;
207
-
208
-		$rangeArray = array();
209
-
210
-		foreach ($rArray as $value) {
211
-			$ranges = explode('-', $value);
212
-			if (is_numeric($ranges[0])) {
213
-				if ($ranges[0] < $minOffset) { // case: bytes=500-700,601-999
214
-					$ranges[0] = $minOffset;
215
-				}
216
-				if ($ind > 0 && $rangeArray[$ind-1]['to']+1 == $ranges[0]) { // case: bytes=500-600,601-999
217
-					$ind--;
218
-					$ranges[0] = $rangeArray[$ind]['from'];
219
-				}
220
-			}
221
-
222
-			if (is_numeric($ranges[0]) && is_numeric($ranges[1]) && $ranges[0] < $fileSize && $ranges[0] <= $ranges[1]) {
223
-				// case: x-x
224
-				if ($ranges[1] >= $fileSize) {
225
-					$ranges[1] = $fileSize-1;
226
-				}
227
-				$rangeArray[$ind++] = array( 'from' => $ranges[0], 'to' => $ranges[1], 'size' => $fileSize );
228
-				$minOffset = $ranges[1] + 1;
229
-				if ($minOffset >= $fileSize) {
230
-					break;
231
-				}
232
-			}
233
-			elseif (is_numeric($ranges[0]) && $ranges[0] < $fileSize) {
234
-				// case: x-
235
-				$rangeArray[$ind++] = array( 'from' => $ranges[0], 'to' => $fileSize-1, 'size' => $fileSize );
236
-				break;
237
-			}
238
-			elseif (is_numeric($ranges[1])) {
239
-				// case: -x
240
-				if ($ranges[1] > $fileSize) {
241
-					$ranges[1] = $fileSize;
242
-				}
243
-				$rangeArray[$ind++] = array( 'from' => $fileSize-$ranges[1], 'to' => $fileSize-1, 'size' => $fileSize );
244
-				break;
245
-			}
246
-		}
247
-		return $rangeArray;
248
-	}
249
-
250
-	/**
251
-	 * @param View $view
252
-	 * @param string $name
253
-	 * @param string $dir
254
-	 * @param array $params ; 'head' boolean to only send header of the request ; 'range' http range header
255
-	 */
256
-	private static function getSingleFile($view, $dir, $name, $params) {
257
-		$filename = $dir . '/' . $name;
258
-		OC_Util::obEnd();
259
-		$view->lockFile($filename, ILockingProvider::LOCK_SHARED);
51
+    const FILE = 1;
52
+    const ZIP_FILES = 2;
53
+    const ZIP_DIR = 3;
54
+
55
+    const UPLOAD_MIN_LIMIT_BYTES = 1048576; // 1 MiB
56
+
57
+
58
+    private static $multipartBoundary = '';
59
+
60
+    /**
61
+     * @return string
62
+     */
63
+    private static function getBoundary() {
64
+        if (empty(self::$multipartBoundary)) {
65
+            self::$multipartBoundary = md5(mt_rand());
66
+        }
67
+        return self::$multipartBoundary;
68
+    }
69
+
70
+    /**
71
+     * @param string $filename
72
+     * @param string $name
73
+     * @param array $rangeArray ('from'=>int,'to'=>int), ...
74
+     */
75
+    private static function sendHeaders($filename, $name, array $rangeArray) {
76
+        OC_Response::setContentDispositionHeader($name, 'attachment');
77
+        header('Content-Transfer-Encoding: binary', true);
78
+        header('Pragma: public');// enable caching in IE
79
+        header('Expires: 0');
80
+        header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
81
+        $fileSize = \OC\Files\Filesystem::filesize($filename);
82
+        $type = \OC::$server->getMimeTypeDetector()->getSecureMimeType(\OC\Files\Filesystem::getMimeType($filename));
83
+        if ($fileSize > -1) {
84
+            if (!empty($rangeArray)) {
85
+                header('HTTP/1.1 206 Partial Content', true);
86
+                header('Accept-Ranges: bytes', true);
87
+                if (count($rangeArray) > 1) {
88
+                $type = 'multipart/byteranges; boundary='.self::getBoundary();
89
+                // no Content-Length header here
90
+                }
91
+                else {
92
+                header(sprintf('Content-Range: bytes %d-%d/%d', $rangeArray[0]['from'], $rangeArray[0]['to'], $fileSize), true);
93
+                OC_Response::setContentLengthHeader($rangeArray[0]['to'] - $rangeArray[0]['from'] + 1);
94
+                }
95
+            }
96
+            else {
97
+                OC_Response::setContentLengthHeader($fileSize);
98
+            }
99
+        }
100
+        header('Content-Type: '.$type, true);
101
+    }
102
+
103
+    /**
104
+     * return the content of a file or return a zip file containing multiple files
105
+     *
106
+     * @param string $dir
107
+     * @param string $files ; separated list of files to download
108
+     * @param array $params ; 'head' boolean to only send header of the request ; 'range' http range header
109
+     */
110
+    public static function get($dir, $files, $params = null) {
111
+
112
+        $view = \OC\Files\Filesystem::getView();
113
+        $getType = self::FILE;
114
+        $filename = $dir;
115
+        try {
116
+
117
+            if (is_array($files) && count($files) === 1) {
118
+                $files = $files[0];
119
+            }
120
+
121
+            if (!is_array($files)) {
122
+                $filename = $dir . '/' . $files;
123
+                if (!$view->is_dir($filename)) {
124
+                    self::getSingleFile($view, $dir, $files, is_null($params) ? array() : $params);
125
+                    return;
126
+                }
127
+            }
128
+
129
+            $name = 'download';
130
+            if (is_array($files)) {
131
+                $getType = self::ZIP_FILES;
132
+                $basename = basename($dir);
133
+                if ($basename) {
134
+                    $name = $basename;
135
+                }
136
+
137
+                $filename = $dir . '/' . $name;
138
+            } else {
139
+                $filename = $dir . '/' . $files;
140
+                $getType = self::ZIP_DIR;
141
+                // downloading root ?
142
+                if ($files !== '') {
143
+                    $name = $files;
144
+                }
145
+            }
146
+
147
+            $streamer = new Streamer();
148
+            OC_Util::obEnd();
149
+
150
+            self::lockFiles($view, $dir, $files);
151
+
152
+            $streamer->sendHeaders($name);
153
+            $executionTime = (int)OC::$server->getIniWrapper()->getNumeric('max_execution_time');
154
+            if (strpos(@ini_get('disable_functions'), 'set_time_limit') === false) {
155
+                @set_time_limit(0);
156
+            }
157
+            ignore_user_abort(true);
158
+            if ($getType === self::ZIP_FILES) {
159
+                foreach ($files as $file) {
160
+                    $file = $dir . '/' . $file;
161
+                    if (\OC\Files\Filesystem::is_file($file)) {
162
+                        $fileSize = \OC\Files\Filesystem::filesize($file);
163
+                        $fileTime = \OC\Files\Filesystem::filemtime($file);
164
+                        $fh = \OC\Files\Filesystem::fopen($file, 'r');
165
+                        $streamer->addFileFromStream($fh, basename($file), $fileSize, $fileTime);
166
+                        fclose($fh);
167
+                    } elseif (\OC\Files\Filesystem::is_dir($file)) {
168
+                        $streamer->addDirRecursive($file);
169
+                    }
170
+                }
171
+            } elseif ($getType === self::ZIP_DIR) {
172
+                $file = $dir . '/' . $files;
173
+                $streamer->addDirRecursive($file);
174
+            }
175
+            $streamer->finalize();
176
+            set_time_limit($executionTime);
177
+            self::unlockAllTheFiles($dir, $files, $getType, $view, $filename);
178
+        } catch (\OCP\Lock\LockedException $ex) {
179
+            self::unlockAllTheFiles($dir, $files, $getType, $view, $filename);
180
+            OC::$server->getLogger()->logException($ex);
181
+            $l = \OC::$server->getL10N('core');
182
+            $hint = method_exists($ex, 'getHint') ? $ex->getHint() : '';
183
+            \OC_Template::printErrorPage($l->t('File is currently busy, please try again later'), $hint);
184
+        } catch (\OCP\Files\ForbiddenException $ex) {
185
+            self::unlockAllTheFiles($dir, $files, $getType, $view, $filename);
186
+            OC::$server->getLogger()->logException($ex);
187
+            $l = \OC::$server->getL10N('core');
188
+            \OC_Template::printErrorPage($l->t('Can\'t read file'), $ex->getMessage());
189
+        } catch (\Exception $ex) {
190
+            self::unlockAllTheFiles($dir, $files, $getType, $view, $filename);
191
+            OC::$server->getLogger()->logException($ex);
192
+            $l = \OC::$server->getL10N('core');
193
+            $hint = method_exists($ex, 'getHint') ? $ex->getHint() : '';
194
+            \OC_Template::printErrorPage($l->t('Can\'t read file'), $hint);
195
+        }
196
+    }
197
+
198
+    /**
199
+     * @param string $rangeHeaderPos
200
+     * @param int $fileSize
201
+     * @return array $rangeArray ('from'=>int,'to'=>int), ...
202
+     */
203
+    private static function parseHttpRangeHeader($rangeHeaderPos, $fileSize) {
204
+        $rArray=explode(',', $rangeHeaderPos);
205
+        $minOffset = 0;
206
+        $ind = 0;
207
+
208
+        $rangeArray = array();
209
+
210
+        foreach ($rArray as $value) {
211
+            $ranges = explode('-', $value);
212
+            if (is_numeric($ranges[0])) {
213
+                if ($ranges[0] < $minOffset) { // case: bytes=500-700,601-999
214
+                    $ranges[0] = $minOffset;
215
+                }
216
+                if ($ind > 0 && $rangeArray[$ind-1]['to']+1 == $ranges[0]) { // case: bytes=500-600,601-999
217
+                    $ind--;
218
+                    $ranges[0] = $rangeArray[$ind]['from'];
219
+                }
220
+            }
221
+
222
+            if (is_numeric($ranges[0]) && is_numeric($ranges[1]) && $ranges[0] < $fileSize && $ranges[0] <= $ranges[1]) {
223
+                // case: x-x
224
+                if ($ranges[1] >= $fileSize) {
225
+                    $ranges[1] = $fileSize-1;
226
+                }
227
+                $rangeArray[$ind++] = array( 'from' => $ranges[0], 'to' => $ranges[1], 'size' => $fileSize );
228
+                $minOffset = $ranges[1] + 1;
229
+                if ($minOffset >= $fileSize) {
230
+                    break;
231
+                }
232
+            }
233
+            elseif (is_numeric($ranges[0]) && $ranges[0] < $fileSize) {
234
+                // case: x-
235
+                $rangeArray[$ind++] = array( 'from' => $ranges[0], 'to' => $fileSize-1, 'size' => $fileSize );
236
+                break;
237
+            }
238
+            elseif (is_numeric($ranges[1])) {
239
+                // case: -x
240
+                if ($ranges[1] > $fileSize) {
241
+                    $ranges[1] = $fileSize;
242
+                }
243
+                $rangeArray[$ind++] = array( 'from' => $fileSize-$ranges[1], 'to' => $fileSize-1, 'size' => $fileSize );
244
+                break;
245
+            }
246
+        }
247
+        return $rangeArray;
248
+    }
249
+
250
+    /**
251
+     * @param View $view
252
+     * @param string $name
253
+     * @param string $dir
254
+     * @param array $params ; 'head' boolean to only send header of the request ; 'range' http range header
255
+     */
256
+    private static function getSingleFile($view, $dir, $name, $params) {
257
+        $filename = $dir . '/' . $name;
258
+        OC_Util::obEnd();
259
+        $view->lockFile($filename, ILockingProvider::LOCK_SHARED);
260 260
 		
261
-		$rangeArray = array();
261
+        $rangeArray = array();
262 262
 
263
-		if (isset($params['range']) && substr($params['range'], 0, 6) === 'bytes=') {
264
-			$rangeArray = self::parseHttpRangeHeader(substr($params['range'], 6), 
265
-								 \OC\Files\Filesystem::filesize($filename));
266
-		}
263
+        if (isset($params['range']) && substr($params['range'], 0, 6) === 'bytes=') {
264
+            $rangeArray = self::parseHttpRangeHeader(substr($params['range'], 6), 
265
+                                    \OC\Files\Filesystem::filesize($filename));
266
+        }
267 267
 		
268
-		if (\OC\Files\Filesystem::isReadable($filename)) {
269
-			self::sendHeaders($filename, $name, $rangeArray);
270
-		} elseif (!\OC\Files\Filesystem::file_exists($filename)) {
271
-			header("HTTP/1.1 404 Not Found");
272
-			$tmpl = new OC_Template('', '404', 'guest');
273
-			$tmpl->printPage();
274
-			exit();
275
-		} else {
276
-			header("HTTP/1.1 403 Forbidden");
277
-			die('403 Forbidden');
278
-		}
279
-		if (isset($params['head']) && $params['head']) {
280
-			return;
281
-		}
282
-		if (!empty($rangeArray)) {
283
-			try {
284
-			    if (count($rangeArray) == 1) {
285
-				$view->readfilePart($filename, $rangeArray[0]['from'], $rangeArray[0]['to']);
286
-			    }
287
-			    else {
288
-				// check if file is seekable (if not throw UnseekableException)
289
-				// we have to check it before body contents
290
-				$view->readfilePart($filename, $rangeArray[0]['size'], $rangeArray[0]['size']);
291
-
292
-				$type = \OC::$server->getMimeTypeDetector()->getSecureMimeType(\OC\Files\Filesystem::getMimeType($filename));
293
-
294
-				foreach ($rangeArray as $range) {
295
-				    echo "\r\n--".self::getBoundary()."\r\n".
296
-				         "Content-type: ".$type."\r\n".
297
-				         "Content-range: bytes ".$range['from']."-".$range['to']."/".$range['size']."\r\n\r\n";
298
-				    $view->readfilePart($filename, $range['from'], $range['to']);
299
-				}
300
-				echo "\r\n--".self::getBoundary()."--\r\n";
301
-			    }
302
-			} catch (\OCP\Files\UnseekableException $ex) {
303
-			    // file is unseekable
304
-			    header_remove('Accept-Ranges');
305
-			    header_remove('Content-Range');
306
-			    header("HTTP/1.1 200 OK");
307
-			    self::sendHeaders($filename, $name, array());
308
-			    $view->readfile($filename);
309
-			}
310
-		}
311
-		else {
312
-		    $view->readfile($filename);
313
-		}
314
-	}
315
-
316
-	/**
317
-	 * @param View $view
318
-	 * @param string $dir
319
-	 * @param string[]|string $files
320
-	 */
321
-	public static function lockFiles($view, $dir, $files) {
322
-		if (!is_array($files)) {
323
-			$file = $dir . '/' . $files;
324
-			$files = [$file];
325
-		}
326
-		foreach ($files as $file) {
327
-			$file = $dir . '/' . $file;
328
-			$view->lockFile($file, ILockingProvider::LOCK_SHARED);
329
-			if ($view->is_dir($file)) {
330
-				$contents = $view->getDirectoryContent($file);
331
-				$contents = array_map(function($fileInfo) use ($file) {
332
-					/** @var \OCP\Files\FileInfo $fileInfo */
333
-					return $file . '/' . $fileInfo->getName();
334
-				}, $contents);
335
-				self::lockFiles($view, $dir, $contents);
336
-			}
337
-		}
338
-	}
339
-
340
-	/**
341
-	 * set the maximum upload size limit for apache hosts using .htaccess
342
-	 *
343
-	 * @param int $size file size in bytes
344
-	 * @param array $files override '.htaccess' and '.user.ini' locations
345
-	 * @return bool|int false on failure, size on success
346
-	 */
347
-	public static function setUploadLimit($size, $files = []) {
348
-		//don't allow user to break his config
349
-		$size = (int)$size;
350
-		if ($size < self::UPLOAD_MIN_LIMIT_BYTES) {
351
-			return false;
352
-		}
353
-		$size = OC_Helper::phpFileSize($size);
354
-
355
-		$phpValueKeys = array(
356
-			'upload_max_filesize',
357
-			'post_max_size'
358
-		);
359
-
360
-		// default locations if not overridden by $files
361
-		$files = array_merge([
362
-			'.htaccess' => OC::$SERVERROOT . '/.htaccess',
363
-			'.user.ini' => OC::$SERVERROOT . '/.user.ini'
364
-		], $files);
365
-
366
-		$updateFiles = [
367
-			$files['.htaccess'] => [
368
-				'pattern' => '/php_value %1$s (\S)*/',
369
-				'setting' => 'php_value %1$s %2$s'
370
-			],
371
-			$files['.user.ini'] => [
372
-				'pattern' => '/%1$s=(\S)*/',
373
-				'setting' => '%1$s=%2$s'
374
-			]
375
-		];
376
-
377
-		$success = true;
378
-
379
-		foreach ($updateFiles as $filename => $patternMap) {
380
-			// suppress warnings from fopen()
381
-			$handle = @fopen($filename, 'r+');
382
-			if (!$handle) {
383
-				\OCP\Util::writeLog('files',
384
-					'Can\'t write upload limit to ' . $filename . '. Please check the file permissions',
385
-					\OCP\Util::WARN);
386
-				$success = false;
387
-				continue; // try to update as many files as possible
388
-			}
389
-
390
-			$content = '';
391
-			while (!feof($handle)) {
392
-				$content .= fread($handle, 1000);
393
-			}
394
-
395
-			foreach ($phpValueKeys as $key) {
396
-				$pattern = vsprintf($patternMap['pattern'], [$key]);
397
-				$setting = vsprintf($patternMap['setting'], [$key, $size]);
398
-				$hasReplaced = 0;
399
-				$newContent = preg_replace($pattern, $setting, $content, 2, $hasReplaced);
400
-				if ($newContent !== null) {
401
-					$content = $newContent;
402
-				}
403
-				if ($hasReplaced === 0) {
404
-					$content .= "\n" . $setting;
405
-				}
406
-			}
407
-
408
-			// write file back
409
-			ftruncate($handle, 0);
410
-			rewind($handle);
411
-			fwrite($handle, $content);
412
-
413
-			fclose($handle);
414
-		}
415
-
416
-		if ($success) {
417
-			return OC_Helper::computerFileSize($size);
418
-		}
419
-		return false;
420
-	}
421
-
422
-	/**
423
-	 * @param string $dir
424
-	 * @param $files
425
-	 * @param integer $getType
426
-	 * @param View $view
427
-	 * @param string $filename
428
-	 */
429
-	private static function unlockAllTheFiles($dir, $files, $getType, $view, $filename) {
430
-		if ($getType === self::FILE) {
431
-			$view->unlockFile($filename, ILockingProvider::LOCK_SHARED);
432
-		}
433
-		if ($getType === self::ZIP_FILES) {
434
-			foreach ($files as $file) {
435
-				$file = $dir . '/' . $file;
436
-				$view->unlockFile($file, ILockingProvider::LOCK_SHARED);
437
-			}
438
-		}
439
-		if ($getType === self::ZIP_DIR) {
440
-			$file = $dir . '/' . $files;
441
-			$view->unlockFile($file, ILockingProvider::LOCK_SHARED);
442
-		}
443
-	}
268
+        if (\OC\Files\Filesystem::isReadable($filename)) {
269
+            self::sendHeaders($filename, $name, $rangeArray);
270
+        } elseif (!\OC\Files\Filesystem::file_exists($filename)) {
271
+            header("HTTP/1.1 404 Not Found");
272
+            $tmpl = new OC_Template('', '404', 'guest');
273
+            $tmpl->printPage();
274
+            exit();
275
+        } else {
276
+            header("HTTP/1.1 403 Forbidden");
277
+            die('403 Forbidden');
278
+        }
279
+        if (isset($params['head']) && $params['head']) {
280
+            return;
281
+        }
282
+        if (!empty($rangeArray)) {
283
+            try {
284
+                if (count($rangeArray) == 1) {
285
+                $view->readfilePart($filename, $rangeArray[0]['from'], $rangeArray[0]['to']);
286
+                }
287
+                else {
288
+                // check if file is seekable (if not throw UnseekableException)
289
+                // we have to check it before body contents
290
+                $view->readfilePart($filename, $rangeArray[0]['size'], $rangeArray[0]['size']);
291
+
292
+                $type = \OC::$server->getMimeTypeDetector()->getSecureMimeType(\OC\Files\Filesystem::getMimeType($filename));
293
+
294
+                foreach ($rangeArray as $range) {
295
+                    echo "\r\n--".self::getBoundary()."\r\n".
296
+                            "Content-type: ".$type."\r\n".
297
+                            "Content-range: bytes ".$range['from']."-".$range['to']."/".$range['size']."\r\n\r\n";
298
+                    $view->readfilePart($filename, $range['from'], $range['to']);
299
+                }
300
+                echo "\r\n--".self::getBoundary()."--\r\n";
301
+                }
302
+            } catch (\OCP\Files\UnseekableException $ex) {
303
+                // file is unseekable
304
+                header_remove('Accept-Ranges');
305
+                header_remove('Content-Range');
306
+                header("HTTP/1.1 200 OK");
307
+                self::sendHeaders($filename, $name, array());
308
+                $view->readfile($filename);
309
+            }
310
+        }
311
+        else {
312
+            $view->readfile($filename);
313
+        }
314
+    }
315
+
316
+    /**
317
+     * @param View $view
318
+     * @param string $dir
319
+     * @param string[]|string $files
320
+     */
321
+    public static function lockFiles($view, $dir, $files) {
322
+        if (!is_array($files)) {
323
+            $file = $dir . '/' . $files;
324
+            $files = [$file];
325
+        }
326
+        foreach ($files as $file) {
327
+            $file = $dir . '/' . $file;
328
+            $view->lockFile($file, ILockingProvider::LOCK_SHARED);
329
+            if ($view->is_dir($file)) {
330
+                $contents = $view->getDirectoryContent($file);
331
+                $contents = array_map(function($fileInfo) use ($file) {
332
+                    /** @var \OCP\Files\FileInfo $fileInfo */
333
+                    return $file . '/' . $fileInfo->getName();
334
+                }, $contents);
335
+                self::lockFiles($view, $dir, $contents);
336
+            }
337
+        }
338
+    }
339
+
340
+    /**
341
+     * set the maximum upload size limit for apache hosts using .htaccess
342
+     *
343
+     * @param int $size file size in bytes
344
+     * @param array $files override '.htaccess' and '.user.ini' locations
345
+     * @return bool|int false on failure, size on success
346
+     */
347
+    public static function setUploadLimit($size, $files = []) {
348
+        //don't allow user to break his config
349
+        $size = (int)$size;
350
+        if ($size < self::UPLOAD_MIN_LIMIT_BYTES) {
351
+            return false;
352
+        }
353
+        $size = OC_Helper::phpFileSize($size);
354
+
355
+        $phpValueKeys = array(
356
+            'upload_max_filesize',
357
+            'post_max_size'
358
+        );
359
+
360
+        // default locations if not overridden by $files
361
+        $files = array_merge([
362
+            '.htaccess' => OC::$SERVERROOT . '/.htaccess',
363
+            '.user.ini' => OC::$SERVERROOT . '/.user.ini'
364
+        ], $files);
365
+
366
+        $updateFiles = [
367
+            $files['.htaccess'] => [
368
+                'pattern' => '/php_value %1$s (\S)*/',
369
+                'setting' => 'php_value %1$s %2$s'
370
+            ],
371
+            $files['.user.ini'] => [
372
+                'pattern' => '/%1$s=(\S)*/',
373
+                'setting' => '%1$s=%2$s'
374
+            ]
375
+        ];
376
+
377
+        $success = true;
378
+
379
+        foreach ($updateFiles as $filename => $patternMap) {
380
+            // suppress warnings from fopen()
381
+            $handle = @fopen($filename, 'r+');
382
+            if (!$handle) {
383
+                \OCP\Util::writeLog('files',
384
+                    'Can\'t write upload limit to ' . $filename . '. Please check the file permissions',
385
+                    \OCP\Util::WARN);
386
+                $success = false;
387
+                continue; // try to update as many files as possible
388
+            }
389
+
390
+            $content = '';
391
+            while (!feof($handle)) {
392
+                $content .= fread($handle, 1000);
393
+            }
394
+
395
+            foreach ($phpValueKeys as $key) {
396
+                $pattern = vsprintf($patternMap['pattern'], [$key]);
397
+                $setting = vsprintf($patternMap['setting'], [$key, $size]);
398
+                $hasReplaced = 0;
399
+                $newContent = preg_replace($pattern, $setting, $content, 2, $hasReplaced);
400
+                if ($newContent !== null) {
401
+                    $content = $newContent;
402
+                }
403
+                if ($hasReplaced === 0) {
404
+                    $content .= "\n" . $setting;
405
+                }
406
+            }
407
+
408
+            // write file back
409
+            ftruncate($handle, 0);
410
+            rewind($handle);
411
+            fwrite($handle, $content);
412
+
413
+            fclose($handle);
414
+        }
415
+
416
+        if ($success) {
417
+            return OC_Helper::computerFileSize($size);
418
+        }
419
+        return false;
420
+    }
421
+
422
+    /**
423
+     * @param string $dir
424
+     * @param $files
425
+     * @param integer $getType
426
+     * @param View $view
427
+     * @param string $filename
428
+     */
429
+    private static function unlockAllTheFiles($dir, $files, $getType, $view, $filename) {
430
+        if ($getType === self::FILE) {
431
+            $view->unlockFile($filename, ILockingProvider::LOCK_SHARED);
432
+        }
433
+        if ($getType === self::ZIP_FILES) {
434
+            foreach ($files as $file) {
435
+                $file = $dir . '/' . $file;
436
+                $view->unlockFile($file, ILockingProvider::LOCK_SHARED);
437
+            }
438
+        }
439
+        if ($getType === self::ZIP_DIR) {
440
+            $file = $dir . '/' . $files;
441
+            $view->unlockFile($file, ILockingProvider::LOCK_SHARED);
442
+        }
443
+    }
444 444
 
445 445
 }
Please login to merge, or discard this patch.
Spacing   +24 added lines, -24 removed lines patch added patch discarded remove patch
@@ -75,7 +75,7 @@  discard block
 block discarded – undo
75 75
 	private static function sendHeaders($filename, $name, array $rangeArray) {
76 76
 		OC_Response::setContentDispositionHeader($name, 'attachment');
77 77
 		header('Content-Transfer-Encoding: binary', true);
78
-		header('Pragma: public');// enable caching in IE
78
+		header('Pragma: public'); // enable caching in IE
79 79
 		header('Expires: 0');
80 80
 		header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
81 81
 		$fileSize = \OC\Files\Filesystem::filesize($filename);
@@ -119,7 +119,7 @@  discard block
 block discarded – undo
119 119
 			}
120 120
 
121 121
 			if (!is_array($files)) {
122
-				$filename = $dir . '/' . $files;
122
+				$filename = $dir.'/'.$files;
123 123
 				if (!$view->is_dir($filename)) {
124 124
 					self::getSingleFile($view, $dir, $files, is_null($params) ? array() : $params);
125 125
 					return;
@@ -134,9 +134,9 @@  discard block
 block discarded – undo
134 134
 					$name = $basename;
135 135
 				}
136 136
 
137
-				$filename = $dir . '/' . $name;
137
+				$filename = $dir.'/'.$name;
138 138
 			} else {
139
-				$filename = $dir . '/' . $files;
139
+				$filename = $dir.'/'.$files;
140 140
 				$getType = self::ZIP_DIR;
141 141
 				// downloading root ?
142 142
 				if ($files !== '') {
@@ -150,14 +150,14 @@  discard block
 block discarded – undo
150 150
 			self::lockFiles($view, $dir, $files);
151 151
 
152 152
 			$streamer->sendHeaders($name);
153
-			$executionTime = (int)OC::$server->getIniWrapper()->getNumeric('max_execution_time');
153
+			$executionTime = (int) OC::$server->getIniWrapper()->getNumeric('max_execution_time');
154 154
 			if (strpos(@ini_get('disable_functions'), 'set_time_limit') === false) {
155 155
 				@set_time_limit(0);
156 156
 			}
157 157
 			ignore_user_abort(true);
158 158
 			if ($getType === self::ZIP_FILES) {
159 159
 				foreach ($files as $file) {
160
-					$file = $dir . '/' . $file;
160
+					$file = $dir.'/'.$file;
161 161
 					if (\OC\Files\Filesystem::is_file($file)) {
162 162
 						$fileSize = \OC\Files\Filesystem::filesize($file);
163 163
 						$fileTime = \OC\Files\Filesystem::filemtime($file);
@@ -169,7 +169,7 @@  discard block
 block discarded – undo
169 169
 					}
170 170
 				}
171 171
 			} elseif ($getType === self::ZIP_DIR) {
172
-				$file = $dir . '/' . $files;
172
+				$file = $dir.'/'.$files;
173 173
 				$streamer->addDirRecursive($file);
174 174
 			}
175 175
 			$streamer->finalize();
@@ -201,7 +201,7 @@  discard block
 block discarded – undo
201 201
 	 * @return array $rangeArray ('from'=>int,'to'=>int), ...
202 202
 	 */
203 203
 	private static function parseHttpRangeHeader($rangeHeaderPos, $fileSize) {
204
-		$rArray=explode(',', $rangeHeaderPos);
204
+		$rArray = explode(',', $rangeHeaderPos);
205 205
 		$minOffset = 0;
206 206
 		$ind = 0;
207 207
 
@@ -213,7 +213,7 @@  discard block
 block discarded – undo
213 213
 				if ($ranges[0] < $minOffset) { // case: bytes=500-700,601-999
214 214
 					$ranges[0] = $minOffset;
215 215
 				}
216
-				if ($ind > 0 && $rangeArray[$ind-1]['to']+1 == $ranges[0]) { // case: bytes=500-600,601-999
216
+				if ($ind > 0 && $rangeArray[$ind - 1]['to'] + 1 == $ranges[0]) { // case: bytes=500-600,601-999
217 217
 					$ind--;
218 218
 					$ranges[0] = $rangeArray[$ind]['from'];
219 219
 				}
@@ -222,9 +222,9 @@  discard block
 block discarded – undo
222 222
 			if (is_numeric($ranges[0]) && is_numeric($ranges[1]) && $ranges[0] < $fileSize && $ranges[0] <= $ranges[1]) {
223 223
 				// case: x-x
224 224
 				if ($ranges[1] >= $fileSize) {
225
-					$ranges[1] = $fileSize-1;
225
+					$ranges[1] = $fileSize - 1;
226 226
 				}
227
-				$rangeArray[$ind++] = array( 'from' => $ranges[0], 'to' => $ranges[1], 'size' => $fileSize );
227
+				$rangeArray[$ind++] = array('from' => $ranges[0], 'to' => $ranges[1], 'size' => $fileSize);
228 228
 				$minOffset = $ranges[1] + 1;
229 229
 				if ($minOffset >= $fileSize) {
230 230
 					break;
@@ -232,7 +232,7 @@  discard block
 block discarded – undo
232 232
 			}
233 233
 			elseif (is_numeric($ranges[0]) && $ranges[0] < $fileSize) {
234 234
 				// case: x-
235
-				$rangeArray[$ind++] = array( 'from' => $ranges[0], 'to' => $fileSize-1, 'size' => $fileSize );
235
+				$rangeArray[$ind++] = array('from' => $ranges[0], 'to' => $fileSize - 1, 'size' => $fileSize);
236 236
 				break;
237 237
 			}
238 238
 			elseif (is_numeric($ranges[1])) {
@@ -240,7 +240,7 @@  discard block
 block discarded – undo
240 240
 				if ($ranges[1] > $fileSize) {
241 241
 					$ranges[1] = $fileSize;
242 242
 				}
243
-				$rangeArray[$ind++] = array( 'from' => $fileSize-$ranges[1], 'to' => $fileSize-1, 'size' => $fileSize );
243
+				$rangeArray[$ind++] = array('from' => $fileSize - $ranges[1], 'to' => $fileSize - 1, 'size' => $fileSize);
244 244
 				break;
245 245
 			}
246 246
 		}
@@ -254,7 +254,7 @@  discard block
 block discarded – undo
254 254
 	 * @param array $params ; 'head' boolean to only send header of the request ; 'range' http range header
255 255
 	 */
256 256
 	private static function getSingleFile($view, $dir, $name, $params) {
257
-		$filename = $dir . '/' . $name;
257
+		$filename = $dir.'/'.$name;
258 258
 		OC_Util::obEnd();
259 259
 		$view->lockFile($filename, ILockingProvider::LOCK_SHARED);
260 260
 		
@@ -320,17 +320,17 @@  discard block
 block discarded – undo
320 320
 	 */
321 321
 	public static function lockFiles($view, $dir, $files) {
322 322
 		if (!is_array($files)) {
323
-			$file = $dir . '/' . $files;
323
+			$file = $dir.'/'.$files;
324 324
 			$files = [$file];
325 325
 		}
326 326
 		foreach ($files as $file) {
327
-			$file = $dir . '/' . $file;
327
+			$file = $dir.'/'.$file;
328 328
 			$view->lockFile($file, ILockingProvider::LOCK_SHARED);
329 329
 			if ($view->is_dir($file)) {
330 330
 				$contents = $view->getDirectoryContent($file);
331 331
 				$contents = array_map(function($fileInfo) use ($file) {
332 332
 					/** @var \OCP\Files\FileInfo $fileInfo */
333
-					return $file . '/' . $fileInfo->getName();
333
+					return $file.'/'.$fileInfo->getName();
334 334
 				}, $contents);
335 335
 				self::lockFiles($view, $dir, $contents);
336 336
 			}
@@ -346,7 +346,7 @@  discard block
 block discarded – undo
346 346
 	 */
347 347
 	public static function setUploadLimit($size, $files = []) {
348 348
 		//don't allow user to break his config
349
-		$size = (int)$size;
349
+		$size = (int) $size;
350 350
 		if ($size < self::UPLOAD_MIN_LIMIT_BYTES) {
351 351
 			return false;
352 352
 		}
@@ -359,8 +359,8 @@  discard block
 block discarded – undo
359 359
 
360 360
 		// default locations if not overridden by $files
361 361
 		$files = array_merge([
362
-			'.htaccess' => OC::$SERVERROOT . '/.htaccess',
363
-			'.user.ini' => OC::$SERVERROOT . '/.user.ini'
362
+			'.htaccess' => OC::$SERVERROOT.'/.htaccess',
363
+			'.user.ini' => OC::$SERVERROOT.'/.user.ini'
364 364
 		], $files);
365 365
 
366 366
 		$updateFiles = [
@@ -381,7 +381,7 @@  discard block
 block discarded – undo
381 381
 			$handle = @fopen($filename, 'r+');
382 382
 			if (!$handle) {
383 383
 				\OCP\Util::writeLog('files',
384
-					'Can\'t write upload limit to ' . $filename . '. Please check the file permissions',
384
+					'Can\'t write upload limit to '.$filename.'. Please check the file permissions',
385 385
 					\OCP\Util::WARN);
386 386
 				$success = false;
387 387
 				continue; // try to update as many files as possible
@@ -401,7 +401,7 @@  discard block
 block discarded – undo
401 401
 					$content = $newContent;
402 402
 				}
403 403
 				if ($hasReplaced === 0) {
404
-					$content .= "\n" . $setting;
404
+					$content .= "\n".$setting;
405 405
 				}
406 406
 			}
407 407
 
@@ -432,12 +432,12 @@  discard block
 block discarded – undo
432 432
 		}
433 433
 		if ($getType === self::ZIP_FILES) {
434 434
 			foreach ($files as $file) {
435
-				$file = $dir . '/' . $file;
435
+				$file = $dir.'/'.$file;
436 436
 				$view->unlockFile($file, ILockingProvider::LOCK_SHARED);
437 437
 			}
438 438
 		}
439 439
 		if ($getType === self::ZIP_DIR) {
440
-			$file = $dir . '/' . $files;
440
+			$file = $dir.'/'.$files;
441 441
 			$view->unlockFile($file, ILockingProvider::LOCK_SHARED);
442 442
 		}
443 443
 	}
Please login to merge, or discard this patch.
lib/private/legacy/filechunking.php 2 patches
Indentation   +152 added lines, -152 removed lines patch added patch discarded remove patch
@@ -30,156 +30,156 @@
 block discarded – undo
30 30
 
31 31
 
32 32
 class OC_FileChunking {
33
-	protected $info;
34
-	protected $cache;
35
-
36
-	/**
37
-	 * TTL of chunks
38
-	 *
39
-	 * @var int
40
-	 */
41
-	protected $ttl;
42
-
43
-	static public function decodeName($name) {
44
-		preg_match('/(?P<name>.*)-chunking-(?P<transferid>\d+)-(?P<chunkcount>\d+)-(?P<index>\d+)/', $name, $matches);
45
-		return $matches;
46
-	}
47
-
48
-	/**
49
-	 * @param string[] $info
50
-	 */
51
-	public function __construct($info) {
52
-		$this->info = $info;
53
-		$this->ttl = \OC::$server->getConfig()->getSystemValue('cache_chunk_gc_ttl', 86400);
54
-	}
55
-
56
-	public function getPrefix() {
57
-		$name = $this->info['name'];
58
-		$transferid = $this->info['transferid'];
59
-
60
-		return $name.'-chunking-'.$transferid.'-';
61
-	}
62
-
63
-	protected function getCache() {
64
-		if (!isset($this->cache)) {
65
-			$this->cache = new \OC\Cache\File();
66
-		}
67
-		return $this->cache;
68
-	}
69
-
70
-	/**
71
-	 * Stores the given $data under the given $key - the number of stored bytes is returned
72
-	 *
73
-	 * @param string $index
74
-	 * @param resource $data
75
-	 * @return int
76
-	 */
77
-	public function store($index, $data) {
78
-		$cache = $this->getCache();
79
-		$name = $this->getPrefix().$index;
80
-		$cache->set($name, $data, $this->ttl);
81
-
82
-		return $cache->size($name);
83
-	}
84
-
85
-	public function isComplete() {
86
-		$prefix = $this->getPrefix();
87
-		$cache = $this->getCache();
88
-		$chunkcount = (int)$this->info['chunkcount'];
89
-
90
-		for($i=($chunkcount-1); $i >= 0; $i--) {
91
-			if (!$cache->hasKey($prefix.$i)) {
92
-				return false;
93
-			}
94
-		}
95
-
96
-		return true;
97
-	}
98
-
99
-	/**
100
-	 * Assembles the chunks into the file specified by the path.
101
-	 * Chunks are deleted afterwards.
102
-	 *
103
-	 * @param resource $f target path
104
-	 *
105
-	 * @return integer assembled file size
106
-	 *
107
-	 * @throws \OC\InsufficientStorageException when file could not be fully
108
-	 * assembled due to lack of free space
109
-	 */
110
-	public function assemble($f) {
111
-		$cache = $this->getCache();
112
-		$prefix = $this->getPrefix();
113
-		$count = 0;
114
-		for ($i = 0; $i < $this->info['chunkcount']; $i++) {
115
-			$chunk = $cache->get($prefix.$i);
116
-			// remove after reading to directly save space
117
-			$cache->remove($prefix.$i);
118
-			$count += fwrite($f, $chunk);
119
-			// let php release the memory to work around memory exhausted error with php 5.6
120
-			$chunk = null;
121
-		}
122
-
123
-		return $count;
124
-	}
125
-
126
-	/**
127
-	 * Returns the size of the chunks already present
128
-	 * @return integer size in bytes
129
-	 */
130
-	public function getCurrentSize() {
131
-		$cache = $this->getCache();
132
-		$prefix = $this->getPrefix();
133
-		$total = 0;
134
-		for ($i = 0; $i < $this->info['chunkcount']; $i++) {
135
-			$total += $cache->size($prefix.$i);
136
-		}
137
-		return $total;
138
-	}
139
-
140
-	/**
141
-	 * Removes all chunks which belong to this transmission
142
-	 */
143
-	public function cleanup() {
144
-		$cache = $this->getCache();
145
-		$prefix = $this->getPrefix();
146
-		for($i=0; $i < $this->info['chunkcount']; $i++) {
147
-			$cache->remove($prefix.$i);
148
-		}
149
-	}
150
-
151
-	/**
152
-	 * Removes one specific chunk
153
-	 * @param string $index
154
-	 */
155
-	public function remove($index) {
156
-		$cache = $this->getCache();
157
-		$prefix = $this->getPrefix();
158
-		$cache->remove($prefix.$index);
159
-	}
160
-
161
-	/**
162
-	 * Assembles the chunks into the file specified by the path.
163
-	 * Also triggers the relevant hooks and proxies.
164
-	 *
165
-	 * @param \OC\Files\Storage\Storage $storage storage
166
-	 * @param string $path target path relative to the storage
167
-	 * @return bool true on success or false if file could not be created
168
-	 *
169
-	 * @throws \OC\ServerNotAvailableException
170
-	 */
171
-	public function file_assemble($storage, $path) {
172
-		// use file_put_contents as method because that best matches what this function does
173
-		if (\OC\Files\Filesystem::isValidPath($path)) {
174
-			$target = $storage->fopen($path, 'w');
175
-			if ($target) {
176
-				$count = $this->assemble($target);
177
-				fclose($target);
178
-				return $count > 0;
179
-			} else {
180
-				return false;
181
-			}
182
-		}
183
-		return false;
184
-	}
33
+    protected $info;
34
+    protected $cache;
35
+
36
+    /**
37
+     * TTL of chunks
38
+     *
39
+     * @var int
40
+     */
41
+    protected $ttl;
42
+
43
+    static public function decodeName($name) {
44
+        preg_match('/(?P<name>.*)-chunking-(?P<transferid>\d+)-(?P<chunkcount>\d+)-(?P<index>\d+)/', $name, $matches);
45
+        return $matches;
46
+    }
47
+
48
+    /**
49
+     * @param string[] $info
50
+     */
51
+    public function __construct($info) {
52
+        $this->info = $info;
53
+        $this->ttl = \OC::$server->getConfig()->getSystemValue('cache_chunk_gc_ttl', 86400);
54
+    }
55
+
56
+    public function getPrefix() {
57
+        $name = $this->info['name'];
58
+        $transferid = $this->info['transferid'];
59
+
60
+        return $name.'-chunking-'.$transferid.'-';
61
+    }
62
+
63
+    protected function getCache() {
64
+        if (!isset($this->cache)) {
65
+            $this->cache = new \OC\Cache\File();
66
+        }
67
+        return $this->cache;
68
+    }
69
+
70
+    /**
71
+     * Stores the given $data under the given $key - the number of stored bytes is returned
72
+     *
73
+     * @param string $index
74
+     * @param resource $data
75
+     * @return int
76
+     */
77
+    public function store($index, $data) {
78
+        $cache = $this->getCache();
79
+        $name = $this->getPrefix().$index;
80
+        $cache->set($name, $data, $this->ttl);
81
+
82
+        return $cache->size($name);
83
+    }
84
+
85
+    public function isComplete() {
86
+        $prefix = $this->getPrefix();
87
+        $cache = $this->getCache();
88
+        $chunkcount = (int)$this->info['chunkcount'];
89
+
90
+        for($i=($chunkcount-1); $i >= 0; $i--) {
91
+            if (!$cache->hasKey($prefix.$i)) {
92
+                return false;
93
+            }
94
+        }
95
+
96
+        return true;
97
+    }
98
+
99
+    /**
100
+     * Assembles the chunks into the file specified by the path.
101
+     * Chunks are deleted afterwards.
102
+     *
103
+     * @param resource $f target path
104
+     *
105
+     * @return integer assembled file size
106
+     *
107
+     * @throws \OC\InsufficientStorageException when file could not be fully
108
+     * assembled due to lack of free space
109
+     */
110
+    public function assemble($f) {
111
+        $cache = $this->getCache();
112
+        $prefix = $this->getPrefix();
113
+        $count = 0;
114
+        for ($i = 0; $i < $this->info['chunkcount']; $i++) {
115
+            $chunk = $cache->get($prefix.$i);
116
+            // remove after reading to directly save space
117
+            $cache->remove($prefix.$i);
118
+            $count += fwrite($f, $chunk);
119
+            // let php release the memory to work around memory exhausted error with php 5.6
120
+            $chunk = null;
121
+        }
122
+
123
+        return $count;
124
+    }
125
+
126
+    /**
127
+     * Returns the size of the chunks already present
128
+     * @return integer size in bytes
129
+     */
130
+    public function getCurrentSize() {
131
+        $cache = $this->getCache();
132
+        $prefix = $this->getPrefix();
133
+        $total = 0;
134
+        for ($i = 0; $i < $this->info['chunkcount']; $i++) {
135
+            $total += $cache->size($prefix.$i);
136
+        }
137
+        return $total;
138
+    }
139
+
140
+    /**
141
+     * Removes all chunks which belong to this transmission
142
+     */
143
+    public function cleanup() {
144
+        $cache = $this->getCache();
145
+        $prefix = $this->getPrefix();
146
+        for($i=0; $i < $this->info['chunkcount']; $i++) {
147
+            $cache->remove($prefix.$i);
148
+        }
149
+    }
150
+
151
+    /**
152
+     * Removes one specific chunk
153
+     * @param string $index
154
+     */
155
+    public function remove($index) {
156
+        $cache = $this->getCache();
157
+        $prefix = $this->getPrefix();
158
+        $cache->remove($prefix.$index);
159
+    }
160
+
161
+    /**
162
+     * Assembles the chunks into the file specified by the path.
163
+     * Also triggers the relevant hooks and proxies.
164
+     *
165
+     * @param \OC\Files\Storage\Storage $storage storage
166
+     * @param string $path target path relative to the storage
167
+     * @return bool true on success or false if file could not be created
168
+     *
169
+     * @throws \OC\ServerNotAvailableException
170
+     */
171
+    public function file_assemble($storage, $path) {
172
+        // use file_put_contents as method because that best matches what this function does
173
+        if (\OC\Files\Filesystem::isValidPath($path)) {
174
+            $target = $storage->fopen($path, 'w');
175
+            if ($target) {
176
+                $count = $this->assemble($target);
177
+                fclose($target);
178
+                return $count > 0;
179
+            } else {
180
+                return false;
181
+            }
182
+        }
183
+        return false;
184
+    }
185 185
 }
Please login to merge, or discard this patch.
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -85,9 +85,9 @@  discard block
 block discarded – undo
85 85
 	public function isComplete() {
86 86
 		$prefix = $this->getPrefix();
87 87
 		$cache = $this->getCache();
88
-		$chunkcount = (int)$this->info['chunkcount'];
88
+		$chunkcount = (int) $this->info['chunkcount'];
89 89
 
90
-		for($i=($chunkcount-1); $i >= 0; $i--) {
90
+		for ($i = ($chunkcount - 1); $i >= 0; $i--) {
91 91
 			if (!$cache->hasKey($prefix.$i)) {
92 92
 				return false;
93 93
 			}
@@ -143,7 +143,7 @@  discard block
 block discarded – undo
143 143
 	public function cleanup() {
144 144
 		$cache = $this->getCache();
145 145
 		$prefix = $this->getPrefix();
146
-		for($i=0; $i < $this->info['chunkcount']; $i++) {
146
+		for ($i = 0; $i < $this->info['chunkcount']; $i++) {
147 147
 			$cache->remove($prefix.$i);
148 148
 		}
149 149
 	}
Please login to merge, or discard this patch.
lib/private/legacy/hook.php 3 patches
Indentation   +103 added lines, -103 removed lines patch added patch discarded remove patch
@@ -29,118 +29,118 @@
 block discarded – undo
29 29
  *
30 30
  */
31 31
 class OC_Hook{
32
-	public static $thrownExceptions = [];
32
+    public static $thrownExceptions = [];
33 33
 
34
-	static private $registered = array();
34
+    static private $registered = array();
35 35
 
36
-	/**
37
-	 * connects a function to a hook
38
-	 *
39
-	 * @param string $signalClass class name of emitter
40
-	 * @param string $signalName name of signal
41
-	 * @param string|object $slotClass class name of slot
42
-	 * @param string $slotName name of slot
43
-	 * @return bool
44
-	 *
45
-	 * This function makes it very easy to connect to use hooks.
46
-	 *
47
-	 * TODO: write example
48
-	 */
49
-	static public function connect($signalClass, $signalName, $slotClass, $slotName ) {
50
-		// If we're trying to connect to an emitting class that isn't
51
-		// yet registered, register it
52
-		if( !array_key_exists($signalClass, self::$registered )) {
53
-			self::$registered[$signalClass] = array();
54
-		}
55
-		// If we're trying to connect to an emitting method that isn't
56
-		// yet registered, register it with the emitting class
57
-		if( !array_key_exists( $signalName, self::$registered[$signalClass] )) {
58
-			self::$registered[$signalClass][$signalName] = array();
59
-		}
36
+    /**
37
+     * connects a function to a hook
38
+     *
39
+     * @param string $signalClass class name of emitter
40
+     * @param string $signalName name of signal
41
+     * @param string|object $slotClass class name of slot
42
+     * @param string $slotName name of slot
43
+     * @return bool
44
+     *
45
+     * This function makes it very easy to connect to use hooks.
46
+     *
47
+     * TODO: write example
48
+     */
49
+    static public function connect($signalClass, $signalName, $slotClass, $slotName ) {
50
+        // If we're trying to connect to an emitting class that isn't
51
+        // yet registered, register it
52
+        if( !array_key_exists($signalClass, self::$registered )) {
53
+            self::$registered[$signalClass] = array();
54
+        }
55
+        // If we're trying to connect to an emitting method that isn't
56
+        // yet registered, register it with the emitting class
57
+        if( !array_key_exists( $signalName, self::$registered[$signalClass] )) {
58
+            self::$registered[$signalClass][$signalName] = array();
59
+        }
60 60
 
61
-		// don't connect hooks twice
62
-		foreach (self::$registered[$signalClass][$signalName] as $hook) {
63
-			if ($hook['class'] === $slotClass and $hook['name'] === $slotName) {
64
-				return false;
65
-			}
66
-		}
67
-		// Connect the hook handler to the requested emitter
68
-		self::$registered[$signalClass][$signalName][] = array(
69
-				"class" => $slotClass,
70
-				"name" => $slotName
71
-		);
61
+        // don't connect hooks twice
62
+        foreach (self::$registered[$signalClass][$signalName] as $hook) {
63
+            if ($hook['class'] === $slotClass and $hook['name'] === $slotName) {
64
+                return false;
65
+            }
66
+        }
67
+        // Connect the hook handler to the requested emitter
68
+        self::$registered[$signalClass][$signalName][] = array(
69
+                "class" => $slotClass,
70
+                "name" => $slotName
71
+        );
72 72
 
73
-		// No chance for failure ;-)
74
-		return true;
75
-	}
73
+        // No chance for failure ;-)
74
+        return true;
75
+    }
76 76
 
77
-	/**
78
-	 * emits a signal
79
-	 *
80
-	 * @param string $signalClass class name of emitter
81
-	 * @param string $signalName name of signal
82
-	 * @param mixed $params default: array() array with additional data
83
-	 * @return bool true if slots exists or false if not
84
-	 * @throws \OC\HintException
85
-	 * @throws \OC\ServerNotAvailableException Emits a signal. To get data from the slot use references!
86
-	 *
87
-	 * TODO: write example
88
-	 */
89
-	static public function emit($signalClass, $signalName, $params = []) {
77
+    /**
78
+     * emits a signal
79
+     *
80
+     * @param string $signalClass class name of emitter
81
+     * @param string $signalName name of signal
82
+     * @param mixed $params default: array() array with additional data
83
+     * @return bool true if slots exists or false if not
84
+     * @throws \OC\HintException
85
+     * @throws \OC\ServerNotAvailableException Emits a signal. To get data from the slot use references!
86
+     *
87
+     * TODO: write example
88
+     */
89
+    static public function emit($signalClass, $signalName, $params = []) {
90 90
 
91
-		// Return false if no hook handlers are listening to this
92
-		// emitting class
93
-		if( !array_key_exists($signalClass, self::$registered )) {
94
-			return false;
95
-		}
91
+        // Return false if no hook handlers are listening to this
92
+        // emitting class
93
+        if( !array_key_exists($signalClass, self::$registered )) {
94
+            return false;
95
+        }
96 96
 
97
-		// Return false if no hook handlers are listening to this
98
-		// emitting method
99
-		if( !array_key_exists( $signalName, self::$registered[$signalClass] )) {
100
-			return false;
101
-		}
97
+        // Return false if no hook handlers are listening to this
98
+        // emitting method
99
+        if( !array_key_exists( $signalName, self::$registered[$signalClass] )) {
100
+            return false;
101
+        }
102 102
 
103
-		// Call all slots
104
-		foreach( self::$registered[$signalClass][$signalName] as $i ) {
105
-			try {
106
-				call_user_func( array( $i["class"], $i["name"] ), $params );
107
-			} catch (Exception $e){
108
-				self::$thrownExceptions[] = $e;
109
-				\OC::$server->getLogger()->logException($e);
110
-				if($e instanceof \OC\HintException) {
111
-					throw $e;
112
-				}
113
-				if($e instanceof \OC\ServerNotAvailableException) {
114
-					throw $e;
115
-				}
116
-			}
117
-		}
103
+        // Call all slots
104
+        foreach( self::$registered[$signalClass][$signalName] as $i ) {
105
+            try {
106
+                call_user_func( array( $i["class"], $i["name"] ), $params );
107
+            } catch (Exception $e){
108
+                self::$thrownExceptions[] = $e;
109
+                \OC::$server->getLogger()->logException($e);
110
+                if($e instanceof \OC\HintException) {
111
+                    throw $e;
112
+                }
113
+                if($e instanceof \OC\ServerNotAvailableException) {
114
+                    throw $e;
115
+                }
116
+            }
117
+        }
118 118
 
119
-		return true;
120
-	}
119
+        return true;
120
+    }
121 121
 
122
-	/**
123
-	 * clear hooks
124
-	 * @param string $signalClass
125
-	 * @param string $signalName
126
-	 */
127
-	static public function clear($signalClass='', $signalName='') {
128
-		if ($signalClass) {
129
-			if ($signalName) {
130
-				self::$registered[$signalClass][$signalName]=array();
131
-			}else{
132
-				self::$registered[$signalClass]=array();
133
-			}
134
-		}else{
135
-			self::$registered=array();
136
-		}
137
-	}
122
+    /**
123
+     * clear hooks
124
+     * @param string $signalClass
125
+     * @param string $signalName
126
+     */
127
+    static public function clear($signalClass='', $signalName='') {
128
+        if ($signalClass) {
129
+            if ($signalName) {
130
+                self::$registered[$signalClass][$signalName]=array();
131
+            }else{
132
+                self::$registered[$signalClass]=array();
133
+            }
134
+        }else{
135
+            self::$registered=array();
136
+        }
137
+    }
138 138
 
139
-	/**
140
-	 * DO NOT USE!
141
-	 * For unit tests ONLY!
142
-	 */
143
-	static public function getHooks() {
144
-		return self::$registered;
145
-	}
139
+    /**
140
+     * DO NOT USE!
141
+     * For unit tests ONLY!
142
+     */
143
+    static public function getHooks() {
144
+        return self::$registered;
145
+    }
146 146
 }
Please login to merge, or discard this patch.
Spacing   +17 added lines, -17 removed lines patch added patch discarded remove patch
@@ -28,7 +28,7 @@  discard block
 block discarded – undo
28 28
  * along with this program.  If not, see <http://www.gnu.org/licenses/>
29 29
  *
30 30
  */
31
-class OC_Hook{
31
+class OC_Hook {
32 32
 	public static $thrownExceptions = [];
33 33
 
34 34
 	static private $registered = array();
@@ -46,15 +46,15 @@  discard block
 block discarded – undo
46 46
 	 *
47 47
 	 * TODO: write example
48 48
 	 */
49
-	static public function connect($signalClass, $signalName, $slotClass, $slotName ) {
49
+	static public function connect($signalClass, $signalName, $slotClass, $slotName) {
50 50
 		// If we're trying to connect to an emitting class that isn't
51 51
 		// yet registered, register it
52
-		if( !array_key_exists($signalClass, self::$registered )) {
52
+		if (!array_key_exists($signalClass, self::$registered)) {
53 53
 			self::$registered[$signalClass] = array();
54 54
 		}
55 55
 		// If we're trying to connect to an emitting method that isn't
56 56
 		// yet registered, register it with the emitting class
57
-		if( !array_key_exists( $signalName, self::$registered[$signalClass] )) {
57
+		if (!array_key_exists($signalName, self::$registered[$signalClass])) {
58 58
 			self::$registered[$signalClass][$signalName] = array();
59 59
 		}
60 60
 
@@ -90,27 +90,27 @@  discard block
 block discarded – undo
90 90
 
91 91
 		// Return false if no hook handlers are listening to this
92 92
 		// emitting class
93
-		if( !array_key_exists($signalClass, self::$registered )) {
93
+		if (!array_key_exists($signalClass, self::$registered)) {
94 94
 			return false;
95 95
 		}
96 96
 
97 97
 		// Return false if no hook handlers are listening to this
98 98
 		// emitting method
99
-		if( !array_key_exists( $signalName, self::$registered[$signalClass] )) {
99
+		if (!array_key_exists($signalName, self::$registered[$signalClass])) {
100 100
 			return false;
101 101
 		}
102 102
 
103 103
 		// Call all slots
104
-		foreach( self::$registered[$signalClass][$signalName] as $i ) {
104
+		foreach (self::$registered[$signalClass][$signalName] as $i) {
105 105
 			try {
106
-				call_user_func( array( $i["class"], $i["name"] ), $params );
107
-			} catch (Exception $e){
106
+				call_user_func(array($i["class"], $i["name"]), $params);
107
+			} catch (Exception $e) {
108 108
 				self::$thrownExceptions[] = $e;
109 109
 				\OC::$server->getLogger()->logException($e);
110
-				if($e instanceof \OC\HintException) {
110
+				if ($e instanceof \OC\HintException) {
111 111
 					throw $e;
112 112
 				}
113
-				if($e instanceof \OC\ServerNotAvailableException) {
113
+				if ($e instanceof \OC\ServerNotAvailableException) {
114 114
 					throw $e;
115 115
 				}
116 116
 			}
@@ -124,15 +124,15 @@  discard block
 block discarded – undo
124 124
 	 * @param string $signalClass
125 125
 	 * @param string $signalName
126 126
 	 */
127
-	static public function clear($signalClass='', $signalName='') {
127
+	static public function clear($signalClass = '', $signalName = '') {
128 128
 		if ($signalClass) {
129 129
 			if ($signalName) {
130
-				self::$registered[$signalClass][$signalName]=array();
131
-			}else{
132
-				self::$registered[$signalClass]=array();
130
+				self::$registered[$signalClass][$signalName] = array();
131
+			} else {
132
+				self::$registered[$signalClass] = array();
133 133
 			}
134
-		}else{
135
-			self::$registered=array();
134
+		} else {
135
+			self::$registered = array();
136 136
 		}
137 137
 	}
138 138
 
Please login to merge, or discard this patch.
Braces   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -128,10 +128,10 @@
 block discarded – undo
128 128
 		if ($signalClass) {
129 129
 			if ($signalName) {
130 130
 				self::$registered[$signalClass][$signalName]=array();
131
-			}else{
131
+			} else{
132 132
 				self::$registered[$signalClass]=array();
133 133
 			}
134
-		}else{
134
+		} else{
135 135
 			self::$registered=array();
136 136
 		}
137 137
 	}
Please login to merge, or discard this patch.