Completed
Push — stable10 ( b85e94...1e5021 )
by
unknown
23:18 queued 12:32
created
lib/private/Files/Cache/HomePropagator.php 1 patch
Indentation   +21 added lines, -21 removed lines patch added patch discarded remove patch
@@ -25,28 +25,28 @@
 block discarded – undo
25 25
 use OCP\IDBConnection;
26 26
 
27 27
 class HomePropagator extends Propagator {
28
-	private $ignoredBaseFolders;
28
+    private $ignoredBaseFolders;
29 29
 
30
-	/**
31
-	 * @param \OC\Files\Storage\Storage $storage
32
-	 */
33
-	public function __construct(\OC\Files\Storage\Storage $storage, IDBConnection $connection) {
34
-		parent::__construct($storage, $connection);
35
-		$this->ignoredBaseFolders = ['files_encryption'];
36
-	}
30
+    /**
31
+     * @param \OC\Files\Storage\Storage $storage
32
+     */
33
+    public function __construct(\OC\Files\Storage\Storage $storage, IDBConnection $connection) {
34
+        parent::__construct($storage, $connection);
35
+        $this->ignoredBaseFolders = ['files_encryption'];
36
+    }
37 37
 
38 38
 
39
-	/**
40
-	 * @param string $internalPath
41
-	 * @param int $time
42
-	 * @param int $sizeDifference number of bytes the file has grown
43
-	 */
44
-	public function propagateChange($internalPath, $time, $sizeDifference = 0) {
45
-		list($baseFolder) = explode('/', $internalPath, 2);
46
-		if (in_array($baseFolder, $this->ignoredBaseFolders)) {
47
-			return [];
48
-		} else {
49
-			parent::propagateChange($internalPath, $time, $sizeDifference);
50
-		}
51
-	}
39
+    /**
40
+     * @param string $internalPath
41
+     * @param int $time
42
+     * @param int $sizeDifference number of bytes the file has grown
43
+     */
44
+    public function propagateChange($internalPath, $time, $sizeDifference = 0) {
45
+        list($baseFolder) = explode('/', $internalPath, 2);
46
+        if (in_array($baseFolder, $this->ignoredBaseFolders)) {
47
+            return [];
48
+        } else {
49
+            parent::propagateChange($internalPath, $time, $sizeDifference);
50
+        }
51
+    }
52 52
 }
Please login to merge, or discard this patch.
lib/private/Files/Cache/Updater.php 1 patch
Indentation   +212 added lines, -212 removed lines patch added patch discarded remove patch
@@ -36,216 +36,216 @@
 block discarded – undo
36 36
  *
37 37
  */
38 38
 class Updater implements IUpdater {
39
-	/**
40
-	 * @var bool
41
-	 */
42
-	protected $enabled = true;
43
-
44
-	/**
45
-	 * @var \OC\Files\Storage\Storage
46
-	 */
47
-	protected $storage;
48
-
49
-	/**
50
-	 * @var \OC\Files\Cache\Propagator
51
-	 */
52
-	protected $propagator;
53
-
54
-	/**
55
-	 * @var Scanner
56
-	 */
57
-	protected $scanner;
58
-
59
-	/**
60
-	 * @var Cache
61
-	 */
62
-	protected $cache;
63
-
64
-	/**
65
-	 * @param \OC\Files\Storage\Storage $storage
66
-	 */
67
-	public function __construct(\OC\Files\Storage\Storage $storage) {
68
-		$this->storage = $storage;
69
-		$this->propagator = $storage->getPropagator();
70
-		$this->scanner = $storage->getScanner();
71
-		$this->cache = $storage->getCache();
72
-	}
73
-
74
-	/**
75
-	 * Disable updating the cache trough this updater
76
-	 */
77
-	public function disable() {
78
-		$this->enabled = false;
79
-	}
80
-
81
-	/**
82
-	 * Re-enable the updating of the cache trough this updater
83
-	 */
84
-	public function enable() {
85
-		$this->enabled = true;
86
-	}
87
-
88
-	/**
89
-	 * Get the propagator for etags and mtime for the view the updater works on
90
-	 *
91
-	 * @return Propagator
92
-	 */
93
-	public function getPropagator() {
94
-		return $this->propagator;
95
-	}
96
-
97
-	/**
98
-	 * Propagate etag and mtime changes for the parent folders of $path up to the root of the filesystem
99
-	 *
100
-	 * @param string $path the path of the file to propagate the changes for
101
-	 * @param int|null $time the timestamp to set as mtime for the parent folders, if left out the current time is used
102
-	 */
103
-	public function propagate($path, $time = null) {
104
-		if (Scanner::isPartialFile($path)) {
105
-			return;
106
-		}
107
-		$this->propagator->propagateChange($path, $time);
108
-	}
109
-
110
-	/**
111
-	 * Update the cache for $path and update the size, etag and mtime of the parent folders
112
-	 *
113
-	 * @param string $path
114
-	 * @param int $time
115
-	 */
116
-	public function update($path, $time = null) {
117
-		if (!$this->enabled or Scanner::isPartialFile($path)) {
118
-			return;
119
-		}
120
-		if (is_null($time)) {
121
-			$time = time();
122
-		}
123
-
124
-		$data = $this->scanner->scan($path, Scanner::SCAN_SHALLOW, -1, false);
125
-		if (
126
-			isset($data['oldSize']) && isset($data['size']) &&
127
-			!$data['encrypted'] // encryption is a pita and touches the cache itself
128
-		) {
129
-			$sizeDifference = $data['size'] - $data['oldSize'];
130
-		} else {
131
-			// scanner didn't provide size info, fallback to full size calculation
132
-			$sizeDifference = 0;
133
-			if ($this->cache instanceof Cache) {
134
-				$this->cache->correctFolderSize($path, $data);
135
-			}
136
-		}
137
-		$this->correctParentStorageMtime($path);
138
-		$this->propagator->propagateChange($path, $time, $sizeDifference);
139
-	}
140
-
141
-	/**
142
-	 * Remove $path from the cache and update the size, etag and mtime of the parent folders
143
-	 *
144
-	 * @param string $path
145
-	 */
146
-	public function remove($path) {
147
-		if (!$this->enabled or Scanner::isPartialFile($path)) {
148
-			return;
149
-		}
150
-
151
-		$parent = dirname($path);
152
-		if ($parent === '.') {
153
-			$parent = '';
154
-		}
155
-
156
-		$entry = $this->cache->get($path);
157
-
158
-		$this->cache->remove($path);
159
-
160
-		$this->correctParentStorageMtime($path);
161
-		if ($entry instanceof ICacheEntry) {
162
-			$this->propagator->propagateChange($path, time(), -$entry->getSize());
163
-		} else {
164
-			$this->propagator->propagateChange($path, time());
165
-			if ($this->cache instanceof Cache) {
166
-				$this->cache->correctFolderSize($parent);
167
-			}
168
-		}
169
-
170
-	}
171
-
172
-	/**
173
-	 * Rename a file or folder in the cache and update the size, etag and mtime of the parent folders
174
-	 *
175
-	 * @param IStorage $sourceStorage
176
-	 * @param string $source
177
-	 * @param string $target
178
-	 */
179
-	public function renameFromStorage(IStorage $sourceStorage, $source, $target) {
180
-		if (!$this->enabled or Scanner::isPartialFile($source) or Scanner::isPartialFile($target)) {
181
-			return;
182
-		}
183
-
184
-		$time = time();
185
-
186
-		$sourceCache = $sourceStorage->getCache();
187
-		$sourceUpdater = $sourceStorage->getUpdater();
188
-		$sourcePropagator = $sourceStorage->getPropagator();
189
-
190
-		if ($sourceCache->inCache($source)) {
191
-			if ($this->cache->inCache($target)) {
192
-				$this->cache->remove($target);
193
-			}
194
-
195
-			if ($sourceStorage === $this->storage) {
196
-				$this->cache->move($source, $target);
197
-			} else {
198
-				$this->cache->moveFromCache($sourceCache, $source, $target);
199
-			}
200
-		}
201
-
202
-		if (pathinfo($source, PATHINFO_EXTENSION) !== pathinfo($target, PATHINFO_EXTENSION)) {
203
-			// handle mime type change
204
-			$mimeType = $this->storage->getMimeType($target);
205
-			$fileId = $this->cache->getId($target);
206
-			$this->cache->update($fileId, ['mimetype' => $mimeType]);
207
-		}
208
-
209
-		if ($sourceCache instanceof Cache) {
210
-			$sourceCache->correctFolderSize($source);
211
-		}
212
-		if ($this->cache instanceof Cache) {
213
-			$this->cache->correctFolderSize($target);
214
-		}
215
-		if ($sourceUpdater instanceof Updater) {
216
-			$sourceUpdater->correctParentStorageMtime($source);
217
-		}
218
-		$this->correctParentStorageMtime($target);
219
-		$this->updateStorageMTimeOnly($target);
220
-		$sourcePropagator->propagateChange($source, $time);
221
-		$this->propagator->propagateChange($target, $time);
222
-	}
223
-
224
-	private function updateStorageMTimeOnly($internalPath) {
225
-		$fileId = $this->cache->getId($internalPath);
226
-		if ($fileId !== -1) {
227
-			$this->cache->update(
228
-				$fileId, [
229
-					'mtime' => null, // this magic tells it to not overwrite mtime
230
-					'storage_mtime' => $this->storage->filemtime($internalPath)
231
-				]
232
-			);
233
-		}
234
-	}
235
-
236
-	/**
237
-	 * update the storage_mtime of the direct parent in the cache to the mtime from the storage
238
-	 *
239
-	 * @param string $internalPath
240
-	 */
241
-	private function correctParentStorageMtime($internalPath) {
242
-		$parentId = $this->cache->getParentId($internalPath);
243
-		$parent = dirname($internalPath);
244
-		if ($parentId != -1) {
245
-			$mtime = $this->storage->filemtime($parent);
246
-			if ($mtime !== false) {
247
-				$this->cache->update($parentId, array('storage_mtime' => $mtime));
248
-			}
249
-		}
250
-	}
39
+    /**
40
+     * @var bool
41
+     */
42
+    protected $enabled = true;
43
+
44
+    /**
45
+     * @var \OC\Files\Storage\Storage
46
+     */
47
+    protected $storage;
48
+
49
+    /**
50
+     * @var \OC\Files\Cache\Propagator
51
+     */
52
+    protected $propagator;
53
+
54
+    /**
55
+     * @var Scanner
56
+     */
57
+    protected $scanner;
58
+
59
+    /**
60
+     * @var Cache
61
+     */
62
+    protected $cache;
63
+
64
+    /**
65
+     * @param \OC\Files\Storage\Storage $storage
66
+     */
67
+    public function __construct(\OC\Files\Storage\Storage $storage) {
68
+        $this->storage = $storage;
69
+        $this->propagator = $storage->getPropagator();
70
+        $this->scanner = $storage->getScanner();
71
+        $this->cache = $storage->getCache();
72
+    }
73
+
74
+    /**
75
+     * Disable updating the cache trough this updater
76
+     */
77
+    public function disable() {
78
+        $this->enabled = false;
79
+    }
80
+
81
+    /**
82
+     * Re-enable the updating of the cache trough this updater
83
+     */
84
+    public function enable() {
85
+        $this->enabled = true;
86
+    }
87
+
88
+    /**
89
+     * Get the propagator for etags and mtime for the view the updater works on
90
+     *
91
+     * @return Propagator
92
+     */
93
+    public function getPropagator() {
94
+        return $this->propagator;
95
+    }
96
+
97
+    /**
98
+     * Propagate etag and mtime changes for the parent folders of $path up to the root of the filesystem
99
+     *
100
+     * @param string $path the path of the file to propagate the changes for
101
+     * @param int|null $time the timestamp to set as mtime for the parent folders, if left out the current time is used
102
+     */
103
+    public function propagate($path, $time = null) {
104
+        if (Scanner::isPartialFile($path)) {
105
+            return;
106
+        }
107
+        $this->propagator->propagateChange($path, $time);
108
+    }
109
+
110
+    /**
111
+     * Update the cache for $path and update the size, etag and mtime of the parent folders
112
+     *
113
+     * @param string $path
114
+     * @param int $time
115
+     */
116
+    public function update($path, $time = null) {
117
+        if (!$this->enabled or Scanner::isPartialFile($path)) {
118
+            return;
119
+        }
120
+        if (is_null($time)) {
121
+            $time = time();
122
+        }
123
+
124
+        $data = $this->scanner->scan($path, Scanner::SCAN_SHALLOW, -1, false);
125
+        if (
126
+            isset($data['oldSize']) && isset($data['size']) &&
127
+            !$data['encrypted'] // encryption is a pita and touches the cache itself
128
+        ) {
129
+            $sizeDifference = $data['size'] - $data['oldSize'];
130
+        } else {
131
+            // scanner didn't provide size info, fallback to full size calculation
132
+            $sizeDifference = 0;
133
+            if ($this->cache instanceof Cache) {
134
+                $this->cache->correctFolderSize($path, $data);
135
+            }
136
+        }
137
+        $this->correctParentStorageMtime($path);
138
+        $this->propagator->propagateChange($path, $time, $sizeDifference);
139
+    }
140
+
141
+    /**
142
+     * Remove $path from the cache and update the size, etag and mtime of the parent folders
143
+     *
144
+     * @param string $path
145
+     */
146
+    public function remove($path) {
147
+        if (!$this->enabled or Scanner::isPartialFile($path)) {
148
+            return;
149
+        }
150
+
151
+        $parent = dirname($path);
152
+        if ($parent === '.') {
153
+            $parent = '';
154
+        }
155
+
156
+        $entry = $this->cache->get($path);
157
+
158
+        $this->cache->remove($path);
159
+
160
+        $this->correctParentStorageMtime($path);
161
+        if ($entry instanceof ICacheEntry) {
162
+            $this->propagator->propagateChange($path, time(), -$entry->getSize());
163
+        } else {
164
+            $this->propagator->propagateChange($path, time());
165
+            if ($this->cache instanceof Cache) {
166
+                $this->cache->correctFolderSize($parent);
167
+            }
168
+        }
169
+
170
+    }
171
+
172
+    /**
173
+     * Rename a file or folder in the cache and update the size, etag and mtime of the parent folders
174
+     *
175
+     * @param IStorage $sourceStorage
176
+     * @param string $source
177
+     * @param string $target
178
+     */
179
+    public function renameFromStorage(IStorage $sourceStorage, $source, $target) {
180
+        if (!$this->enabled or Scanner::isPartialFile($source) or Scanner::isPartialFile($target)) {
181
+            return;
182
+        }
183
+
184
+        $time = time();
185
+
186
+        $sourceCache = $sourceStorage->getCache();
187
+        $sourceUpdater = $sourceStorage->getUpdater();
188
+        $sourcePropagator = $sourceStorage->getPropagator();
189
+
190
+        if ($sourceCache->inCache($source)) {
191
+            if ($this->cache->inCache($target)) {
192
+                $this->cache->remove($target);
193
+            }
194
+
195
+            if ($sourceStorage === $this->storage) {
196
+                $this->cache->move($source, $target);
197
+            } else {
198
+                $this->cache->moveFromCache($sourceCache, $source, $target);
199
+            }
200
+        }
201
+
202
+        if (pathinfo($source, PATHINFO_EXTENSION) !== pathinfo($target, PATHINFO_EXTENSION)) {
203
+            // handle mime type change
204
+            $mimeType = $this->storage->getMimeType($target);
205
+            $fileId = $this->cache->getId($target);
206
+            $this->cache->update($fileId, ['mimetype' => $mimeType]);
207
+        }
208
+
209
+        if ($sourceCache instanceof Cache) {
210
+            $sourceCache->correctFolderSize($source);
211
+        }
212
+        if ($this->cache instanceof Cache) {
213
+            $this->cache->correctFolderSize($target);
214
+        }
215
+        if ($sourceUpdater instanceof Updater) {
216
+            $sourceUpdater->correctParentStorageMtime($source);
217
+        }
218
+        $this->correctParentStorageMtime($target);
219
+        $this->updateStorageMTimeOnly($target);
220
+        $sourcePropagator->propagateChange($source, $time);
221
+        $this->propagator->propagateChange($target, $time);
222
+    }
223
+
224
+    private function updateStorageMTimeOnly($internalPath) {
225
+        $fileId = $this->cache->getId($internalPath);
226
+        if ($fileId !== -1) {
227
+            $this->cache->update(
228
+                $fileId, [
229
+                    'mtime' => null, // this magic tells it to not overwrite mtime
230
+                    'storage_mtime' => $this->storage->filemtime($internalPath)
231
+                ]
232
+            );
233
+        }
234
+    }
235
+
236
+    /**
237
+     * update the storage_mtime of the direct parent in the cache to the mtime from the storage
238
+     *
239
+     * @param string $internalPath
240
+     */
241
+    private function correctParentStorageMtime($internalPath) {
242
+        $parentId = $this->cache->getParentId($internalPath);
243
+        $parent = dirname($internalPath);
244
+        if ($parentId != -1) {
245
+            $mtime = $this->storage->filemtime($parent);
246
+            if ($mtime !== false) {
247
+                $this->cache->update($parentId, array('storage_mtime' => $mtime));
248
+            }
249
+        }
250
+    }
251 251
 }
Please login to merge, or discard this patch.
lib/private/Files/Cache/CacheEntry.php 2 patches
Indentation   +62 added lines, -62 removed lines patch added patch discarded remove patch
@@ -28,88 +28,88 @@
 block discarded – undo
28 28
  * meta data for a file or folder
29 29
  */
30 30
 class CacheEntry implements ICacheEntry, \ArrayAccess {
31
-	/**
32
-	 * @var array
33
-	 */
34
-	private $data;
31
+    /**
32
+     * @var array
33
+     */
34
+    private $data;
35 35
 
36
-	public function __construct(array $data) {
37
-		$this->data = $data;
38
-	}
36
+    public function __construct(array $data) {
37
+        $this->data = $data;
38
+    }
39 39
 
40
-	public function offsetSet($offset, $value) {
41
-		$this->data[$offset] = $value;
42
-	}
40
+    public function offsetSet($offset, $value) {
41
+        $this->data[$offset] = $value;
42
+    }
43 43
 
44
-	public function offsetExists($offset) {
45
-		return isset($this->data[$offset]);
46
-	}
44
+    public function offsetExists($offset) {
45
+        return isset($this->data[$offset]);
46
+    }
47 47
 
48
-	public function offsetUnset($offset) {
49
-		unset($this->data[$offset]);
50
-	}
48
+    public function offsetUnset($offset) {
49
+        unset($this->data[$offset]);
50
+    }
51 51
 
52
-	public function offsetGet($offset) {
53
-		if (isset($this->data[$offset])) {
54
-			return $this->data[$offset];
55
-		} else {
56
-			return null;
57
-		}
58
-	}
52
+    public function offsetGet($offset) {
53
+        if (isset($this->data[$offset])) {
54
+            return $this->data[$offset];
55
+        } else {
56
+            return null;
57
+        }
58
+    }
59 59
 
60
-	public function getId() {
61
-		return (int)$this->data['fileid'];
62
-	}
60
+    public function getId() {
61
+        return (int)$this->data['fileid'];
62
+    }
63 63
 
64
-	public function getStorageId() {
65
-		return $this->data['storage'];
66
-	}
64
+    public function getStorageId() {
65
+        return $this->data['storage'];
66
+    }
67 67
 
68 68
 
69
-	public function getPath() {
70
-		return $this->data['path'];
71
-	}
69
+    public function getPath() {
70
+        return $this->data['path'];
71
+    }
72 72
 
73 73
 
74
-	public function getName() {
75
-		return $this->data['name'];
76
-	}
74
+    public function getName() {
75
+        return $this->data['name'];
76
+    }
77 77
 
78 78
 
79
-	public function getMimeType() {
80
-		return $this->data['mimetype'];
81
-	}
79
+    public function getMimeType() {
80
+        return $this->data['mimetype'];
81
+    }
82 82
 
83 83
 
84
-	public function getMimePart() {
85
-		return $this->data['mimepart'];
86
-	}
84
+    public function getMimePart() {
85
+        return $this->data['mimepart'];
86
+    }
87 87
 
88
-	public function getSize() {
89
-		return $this->data['size'];
90
-	}
88
+    public function getSize() {
89
+        return $this->data['size'];
90
+    }
91 91
 
92
-	public function getMTime() {
93
-		return $this->data['mtime'];
94
-	}
92
+    public function getMTime() {
93
+        return $this->data['mtime'];
94
+    }
95 95
 
96
-	public function getStorageMTime() {
97
-		return $this->data['storage_mtime'];
98
-	}
96
+    public function getStorageMTime() {
97
+        return $this->data['storage_mtime'];
98
+    }
99 99
 
100
-	public function getEtag() {
101
-		return $this->data['etag'];
102
-	}
100
+    public function getEtag() {
101
+        return $this->data['etag'];
102
+    }
103 103
 
104
-	public function getPermissions() {
105
-		return $this->data['permissions'];
106
-	}
104
+    public function getPermissions() {
105
+        return $this->data['permissions'];
106
+    }
107 107
 
108
-	public function isEncrypted() {
109
-		return isset($this->data['encrypted']) && $this->data['encrypted'];
110
-	}
108
+    public function isEncrypted() {
109
+        return isset($this->data['encrypted']) && $this->data['encrypted'];
110
+    }
111 111
 
112
-	public function getData() {
113
-		return $this->data;
114
-	}
112
+    public function getData() {
113
+        return $this->data;
114
+    }
115 115
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -58,7 +58,7 @@
 block discarded – undo
58 58
 	}
59 59
 
60 60
 	public function getId() {
61
-		return (int)$this->data['fileid'];
61
+		return (int) $this->data['fileid'];
62 62
 	}
63 63
 
64 64
 	public function getStorageId() {
Please login to merge, or discard this patch.
lib/private/Files/Cache/HomeCache.php 2 patches
Indentation   +51 added lines, -51 removed lines patch added patch discarded remove patch
@@ -30,58 +30,58 @@
 block discarded – undo
30 30
 use OCP\Files\Cache\ICacheEntry;
31 31
 
32 32
 class HomeCache extends Cache {
33
-	/**
34
-	 * get the size of a folder and set it in the cache
35
-	 *
36
-	 * @param string $path
37
-	 * @param array $entry (optional) meta data of the folder
38
-	 * @return int
39
-	 */
40
-	public function calculateFolderSize($path, $entry = null) {
41
-		if ($path !== '/' and $path !== '' and $path !== 'files' and $path !== 'files_trashbin' and $path !== 'files_versions') {
42
-			return parent::calculateFolderSize($path, $entry);
43
-		} elseif ($path === '' or $path === '/') {
44
-			// since the size of / isn't used (the size of /files is used instead) there is no use in calculating it
45
-			return 0;
46
-		}
33
+    /**
34
+     * get the size of a folder and set it in the cache
35
+     *
36
+     * @param string $path
37
+     * @param array $entry (optional) meta data of the folder
38
+     * @return int
39
+     */
40
+    public function calculateFolderSize($path, $entry = null) {
41
+        if ($path !== '/' and $path !== '' and $path !== 'files' and $path !== 'files_trashbin' and $path !== 'files_versions') {
42
+            return parent::calculateFolderSize($path, $entry);
43
+        } elseif ($path === '' or $path === '/') {
44
+            // since the size of / isn't used (the size of /files is used instead) there is no use in calculating it
45
+            return 0;
46
+        }
47 47
 
48
-		$totalSize = 0;
49
-		if (is_null($entry)) {
50
-			$entry = $this->get($path);
51
-		}
52
-		if ($entry && $entry['mimetype'] === 'httpd/unix-directory') {
53
-			$id = $entry['fileid'];
54
-			$sql = 'SELECT SUM(`size`) AS f1 ' .
55
-			   'FROM `*PREFIX*filecache` ' .
56
-				'WHERE `parent` = ? AND `storage` = ? AND `size` >= 0';
57
-			$result = \OC_DB::executeAudited($sql, array($id, $this->getNumericStorageId()));
58
-			if ($row = $result->fetchRow()) {
59
-				$result->closeCursor();
60
-				list($sum) = array_values($row);
61
-				$totalSize = 0 + $sum;
62
-				$entry['size'] += 0;
63
-				if ($entry['size'] !== $totalSize) {
64
-					$this->update($id, array('size' => $totalSize));
65
-				}
66
-			}
67
-		}
68
-		return $totalSize;
69
-	}
48
+        $totalSize = 0;
49
+        if (is_null($entry)) {
50
+            $entry = $this->get($path);
51
+        }
52
+        if ($entry && $entry['mimetype'] === 'httpd/unix-directory') {
53
+            $id = $entry['fileid'];
54
+            $sql = 'SELECT SUM(`size`) AS f1 ' .
55
+                'FROM `*PREFIX*filecache` ' .
56
+                'WHERE `parent` = ? AND `storage` = ? AND `size` >= 0';
57
+            $result = \OC_DB::executeAudited($sql, array($id, $this->getNumericStorageId()));
58
+            if ($row = $result->fetchRow()) {
59
+                $result->closeCursor();
60
+                list($sum) = array_values($row);
61
+                $totalSize = 0 + $sum;
62
+                $entry['size'] += 0;
63
+                if ($entry['size'] !== $totalSize) {
64
+                    $this->update($id, array('size' => $totalSize));
65
+                }
66
+            }
67
+        }
68
+        return $totalSize;
69
+    }
70 70
 
71
-	/**
72
-	 * @param string $path
73
-	 * @return ICacheEntry
74
-	 */
75
-	public function get($path) {
76
-		$data = parent::get($path);
77
-		if ($path === '' or $path === '/') {
78
-			// only the size of the "files" dir counts
79
-			$filesData = parent::get('files');
71
+    /**
72
+     * @param string $path
73
+     * @return ICacheEntry
74
+     */
75
+    public function get($path) {
76
+        $data = parent::get($path);
77
+        if ($path === '' or $path === '/') {
78
+            // only the size of the "files" dir counts
79
+            $filesData = parent::get('files');
80 80
 
81
-			if (isset($filesData['size'])) {
82
-				$data['size'] = $filesData['size'];
83
-			}
84
-		}
85
-		return $data;
86
-	}
81
+            if (isset($filesData['size'])) {
82
+                $data['size'] = $filesData['size'];
83
+            }
84
+        }
85
+        return $data;
86
+    }
87 87
 }
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -51,8 +51,8 @@
 block discarded – undo
51 51
 		}
52 52
 		if ($entry && $entry['mimetype'] === 'httpd/unix-directory') {
53 53
 			$id = $entry['fileid'];
54
-			$sql = 'SELECT SUM(`size`) AS f1 ' .
55
-			   'FROM `*PREFIX*filecache` ' .
54
+			$sql = 'SELECT SUM(`size`) AS f1 '.
55
+			   'FROM `*PREFIX*filecache` '.
56 56
 				'WHERE `parent` = ? AND `storage` = ? AND `size` >= 0';
57 57
 			$result = \OC_DB::executeAudited($sql, array($id, $this->getNumericStorageId()));
58 58
 			if ($row = $result->fetchRow()) {
Please login to merge, or discard this patch.
lib/private/Files/Cache/MoveFromCacheTrait.php 2 patches
Indentation   +51 added lines, -51 removed lines patch added patch discarded remove patch
@@ -29,60 +29,60 @@
 block discarded – undo
29 29
  * Fallback implementation for moveFromCache
30 30
  */
31 31
 trait MoveFromCacheTrait {
32
-	/**
33
-	 * store meta data for a file or folder
34
-	 *
35
-	 * @param string $file
36
-	 * @param array $data
37
-	 *
38
-	 * @return int file id
39
-	 * @throws \RuntimeException
40
-	 */
41
-	abstract public function put($file, array $data);
32
+    /**
33
+     * store meta data for a file or folder
34
+     *
35
+     * @param string $file
36
+     * @param array $data
37
+     *
38
+     * @return int file id
39
+     * @throws \RuntimeException
40
+     */
41
+    abstract public function put($file, array $data);
42 42
 
43
-	/**
44
-	 * Move a file or folder in the cache
45
-	 *
46
-	 * @param \OCP\Files\Cache\ICache $sourceCache
47
-	 * @param string $sourcePath
48
-	 * @param string $targetPath
49
-	 */
50
-	public function moveFromCache(ICache $sourceCache, $sourcePath, $targetPath) {
51
-		$sourceEntry = $sourceCache->get($sourcePath);
43
+    /**
44
+     * Move a file or folder in the cache
45
+     *
46
+     * @param \OCP\Files\Cache\ICache $sourceCache
47
+     * @param string $sourcePath
48
+     * @param string $targetPath
49
+     */
50
+    public function moveFromCache(ICache $sourceCache, $sourcePath, $targetPath) {
51
+        $sourceEntry = $sourceCache->get($sourcePath);
52 52
 
53
-		$this->copyFromCache($sourceCache, $sourceEntry, $targetPath);
53
+        $this->copyFromCache($sourceCache, $sourceEntry, $targetPath);
54 54
 
55
-		$sourceCache->remove($sourcePath);
56
-	}
55
+        $sourceCache->remove($sourcePath);
56
+    }
57 57
 
58
-	/**
59
-	 * Copy a file or folder in the cache
60
-	 *
61
-	 * @param \OCP\Files\Cache\ICache $sourceCache
62
-	 * @param ICacheEntry $sourceEntry
63
-	 * @param string $targetPath
64
-	 */
65
-	public function copyFromCache(ICache $sourceCache, ICacheEntry $sourceEntry, $targetPath) {
66
-		$this->put($targetPath, $this->cacheEntryToArray($sourceEntry));
67
-		if ($sourceEntry->getMimeType() === ICacheEntry::DIRECTORY_MIMETYPE) {
68
-			$folderContent = $sourceCache->getFolderContentsById($sourceEntry->getId());
69
-			foreach ($folderContent as $subEntry) {
70
-				$subTargetPath = $targetPath . '/' . $subEntry->getName();
71
-				$this->copyFromCache($sourceCache, $subEntry, $subTargetPath);
72
-			}
73
-		}
74
-	}
58
+    /**
59
+     * Copy a file or folder in the cache
60
+     *
61
+     * @param \OCP\Files\Cache\ICache $sourceCache
62
+     * @param ICacheEntry $sourceEntry
63
+     * @param string $targetPath
64
+     */
65
+    public function copyFromCache(ICache $sourceCache, ICacheEntry $sourceEntry, $targetPath) {
66
+        $this->put($targetPath, $this->cacheEntryToArray($sourceEntry));
67
+        if ($sourceEntry->getMimeType() === ICacheEntry::DIRECTORY_MIMETYPE) {
68
+            $folderContent = $sourceCache->getFolderContentsById($sourceEntry->getId());
69
+            foreach ($folderContent as $subEntry) {
70
+                $subTargetPath = $targetPath . '/' . $subEntry->getName();
71
+                $this->copyFromCache($sourceCache, $subEntry, $subTargetPath);
72
+            }
73
+        }
74
+    }
75 75
 
76
-	private function cacheEntryToArray(ICacheEntry $entry) {
77
-		return [
78
-			'size' => $entry->getSize(),
79
-			'mtime' => $entry->getMTime(),
80
-			'storage_mtime' => $entry->getStorageMTime(),
81
-			'mimetype' => $entry->getMimeType(),
82
-			'mimepart' => $entry->getMimePart(),
83
-			'etag' => $entry->getEtag(),
84
-			'permissions' => $entry->getPermissions(),
85
-			'encrypted' => $entry->isEncrypted()
86
-		];
87
-	}
76
+    private function cacheEntryToArray(ICacheEntry $entry) {
77
+        return [
78
+            'size' => $entry->getSize(),
79
+            'mtime' => $entry->getMTime(),
80
+            'storage_mtime' => $entry->getStorageMTime(),
81
+            'mimetype' => $entry->getMimeType(),
82
+            'mimepart' => $entry->getMimePart(),
83
+            'etag' => $entry->getEtag(),
84
+            'permissions' => $entry->getPermissions(),
85
+            'encrypted' => $entry->isEncrypted()
86
+        ];
87
+    }
88 88
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -67,7 +67,7 @@
 block discarded – undo
67 67
 		if ($sourceEntry->getMimeType() === ICacheEntry::DIRECTORY_MIMETYPE) {
68 68
 			$folderContent = $sourceCache->getFolderContentsById($sourceEntry->getId());
69 69
 			foreach ($folderContent as $subEntry) {
70
-				$subTargetPath = $targetPath . '/' . $subEntry->getName();
70
+				$subTargetPath = $targetPath.'/'.$subEntry->getName();
71 71
 				$this->copyFromCache($sourceCache, $subEntry, $subTargetPath);
72 72
 			}
73 73
 		}
Please login to merge, or discard this patch.
lib/private/Files/Cache/Watcher.php 1 patch
Indentation   +98 added lines, -98 removed lines patch added patch discarded remove patch
@@ -32,113 +32,113 @@
 block discarded – undo
32 32
  */
33 33
 class Watcher implements IWatcher {
34 34
 
35
-	protected $watchPolicy = self::CHECK_ONCE;
35
+    protected $watchPolicy = self::CHECK_ONCE;
36 36
 
37
-	protected $checkedPaths = array();
37
+    protected $checkedPaths = array();
38 38
 
39
-	/**
40
-	 * @var \OC\Files\Storage\Storage $storage
41
-	 */
42
-	protected $storage;
39
+    /**
40
+     * @var \OC\Files\Storage\Storage $storage
41
+     */
42
+    protected $storage;
43 43
 
44
-	/**
45
-	 * @var Cache $cache
46
-	 */
47
-	protected $cache;
44
+    /**
45
+     * @var Cache $cache
46
+     */
47
+    protected $cache;
48 48
 
49
-	/**
50
-	 * @var Scanner $scanner ;
51
-	 */
52
-	protected $scanner;
49
+    /**
50
+     * @var Scanner $scanner ;
51
+     */
52
+    protected $scanner;
53 53
 
54
-	/**
55
-	 * @param \OC\Files\Storage\Storage $storage
56
-	 */
57
-	public function __construct(\OC\Files\Storage\Storage $storage) {
58
-		$this->storage = $storage;
59
-		$this->cache = $storage->getCache();
60
-		$this->scanner = $storage->getScanner();
61
-	}
54
+    /**
55
+     * @param \OC\Files\Storage\Storage $storage
56
+     */
57
+    public function __construct(\OC\Files\Storage\Storage $storage) {
58
+        $this->storage = $storage;
59
+        $this->cache = $storage->getCache();
60
+        $this->scanner = $storage->getScanner();
61
+    }
62 62
 
63
-	/**
64
-	 * @param int $policy either \OC\Files\Cache\Watcher::CHECK_NEVER, \OC\Files\Cache\Watcher::CHECK_ONCE, \OC\Files\Cache\Watcher::CHECK_ALWAYS
65
-	 */
66
-	public function setPolicy($policy) {
67
-		$this->watchPolicy = $policy;
68
-	}
63
+    /**
64
+     * @param int $policy either \OC\Files\Cache\Watcher::CHECK_NEVER, \OC\Files\Cache\Watcher::CHECK_ONCE, \OC\Files\Cache\Watcher::CHECK_ALWAYS
65
+     */
66
+    public function setPolicy($policy) {
67
+        $this->watchPolicy = $policy;
68
+    }
69 69
 
70
-	/**
71
-	 * @return int either \OC\Files\Cache\Watcher::CHECK_NEVER, \OC\Files\Cache\Watcher::CHECK_ONCE, \OC\Files\Cache\Watcher::CHECK_ALWAYS
72
-	 */
73
-	public function getPolicy() {
74
-		return $this->watchPolicy;
75
-	}
70
+    /**
71
+     * @return int either \OC\Files\Cache\Watcher::CHECK_NEVER, \OC\Files\Cache\Watcher::CHECK_ONCE, \OC\Files\Cache\Watcher::CHECK_ALWAYS
72
+     */
73
+    public function getPolicy() {
74
+        return $this->watchPolicy;
75
+    }
76 76
 
77
-	/**
78
-	 * check $path for updates and update if needed
79
-	 *
80
-	 * @param string $path
81
-	 * @param ICacheEntry|null $cachedEntry
82
-	 * @return boolean true if path was updated
83
-	 */
84
-	public function checkUpdate($path, $cachedEntry = null) {
85
-		if (is_null($cachedEntry)) {
86
-			$cachedEntry = $this->cache->get($path);
87
-		}
88
-		if ($this->needsUpdate($path, $cachedEntry)) {
89
-			$this->update($path, $cachedEntry);
90
-			return true;
91
-		} else {
92
-			return false;
93
-		}
94
-	}
77
+    /**
78
+     * check $path for updates and update if needed
79
+     *
80
+     * @param string $path
81
+     * @param ICacheEntry|null $cachedEntry
82
+     * @return boolean true if path was updated
83
+     */
84
+    public function checkUpdate($path, $cachedEntry = null) {
85
+        if (is_null($cachedEntry)) {
86
+            $cachedEntry = $this->cache->get($path);
87
+        }
88
+        if ($this->needsUpdate($path, $cachedEntry)) {
89
+            $this->update($path, $cachedEntry);
90
+            return true;
91
+        } else {
92
+            return false;
93
+        }
94
+    }
95 95
 
96
-	/**
97
-	 * Update the cache for changes to $path
98
-	 *
99
-	 * @param string $path
100
-	 * @param ICacheEntry $cachedData
101
-	 */
102
-	public function update($path, $cachedData) {
103
-		if ($this->storage->is_dir($path)) {
104
-			$this->scanner->scan($path, Scanner::SCAN_SHALLOW);
105
-		} else {
106
-			$this->scanner->scanFile($path);
107
-		}
108
-		if ($cachedData['mimetype'] === 'httpd/unix-directory') {
109
-			$this->cleanFolder($path);
110
-		}
111
-		if ($this->cache instanceof Cache) {
112
-			$this->cache->correctFolderSize($path);
113
-		}
114
-	}
96
+    /**
97
+     * Update the cache for changes to $path
98
+     *
99
+     * @param string $path
100
+     * @param ICacheEntry $cachedData
101
+     */
102
+    public function update($path, $cachedData) {
103
+        if ($this->storage->is_dir($path)) {
104
+            $this->scanner->scan($path, Scanner::SCAN_SHALLOW);
105
+        } else {
106
+            $this->scanner->scanFile($path);
107
+        }
108
+        if ($cachedData['mimetype'] === 'httpd/unix-directory') {
109
+            $this->cleanFolder($path);
110
+        }
111
+        if ($this->cache instanceof Cache) {
112
+            $this->cache->correctFolderSize($path);
113
+        }
114
+    }
115 115
 
116
-	/**
117
-	 * Check if the cache for $path needs to be updated
118
-	 *
119
-	 * @param string $path
120
-	 * @param ICacheEntry $cachedData
121
-	 * @return bool
122
-	 */
123
-	public function needsUpdate($path, $cachedData) {
124
-		if ($this->watchPolicy === self::CHECK_ALWAYS or ($this->watchPolicy === self::CHECK_ONCE and array_search($path, $this->checkedPaths) === false)) {
125
-			$this->checkedPaths[] = $path;
126
-			return $this->storage->hasUpdated($path, $cachedData['storage_mtime']);
127
-		}
128
-		return false;
129
-	}
116
+    /**
117
+     * Check if the cache for $path needs to be updated
118
+     *
119
+     * @param string $path
120
+     * @param ICacheEntry $cachedData
121
+     * @return bool
122
+     */
123
+    public function needsUpdate($path, $cachedData) {
124
+        if ($this->watchPolicy === self::CHECK_ALWAYS or ($this->watchPolicy === self::CHECK_ONCE and array_search($path, $this->checkedPaths) === false)) {
125
+            $this->checkedPaths[] = $path;
126
+            return $this->storage->hasUpdated($path, $cachedData['storage_mtime']);
127
+        }
128
+        return false;
129
+    }
130 130
 
131
-	/**
132
-	 * remove deleted files in $path from the cache
133
-	 *
134
-	 * @param string $path
135
-	 */
136
-	public function cleanFolder($path) {
137
-		$cachedContent = $this->cache->getFolderContents($path);
138
-		foreach ($cachedContent as $entry) {
139
-			if (!$this->storage->file_exists($entry['path'])) {
140
-				$this->cache->remove($entry['path']);
141
-			}
142
-		}
143
-	}
131
+    /**
132
+     * remove deleted files in $path from the cache
133
+     *
134
+     * @param string $path
135
+     */
136
+    public function cleanFolder($path) {
137
+        $cachedContent = $this->cache->getFolderContents($path);
138
+        foreach ($cachedContent as $entry) {
139
+            if (!$this->storage->file_exists($entry['path'])) {
140
+                $this->cache->remove($entry['path']);
141
+            }
142
+        }
143
+    }
144 144
 }
Please login to merge, or discard this patch.
lib/private/Files/Cache/FailedCache.php 1 patch
Indentation   +111 added lines, -111 removed lines patch added patch discarded remove patch
@@ -29,115 +29,115 @@
 block discarded – undo
29 29
  * Storage placeholder to represent a missing precondition, storage unavailable
30 30
  */
31 31
 class FailedCache implements ICache {
32
-	/** @var bool whether to show the failed storage in the ui */
33
-	private $visible;
34
-
35
-	/**
36
-	 * FailedCache constructor.
37
-	 *
38
-	 * @param bool $visible
39
-	 */
40
-	public function __construct($visible = true) {
41
-		$this->visible = $visible;
42
-	}
43
-
44
-
45
-	public function getNumericStorageId() {
46
-		return -1;
47
-	}
48
-
49
-	public function get($file) {
50
-		if ($file === '') {
51
-			return new CacheEntry([
52
-				'fileid' => -1,
53
-				'size' => 0,
54
-				'mimetype' => 'httpd/unix-directory',
55
-				'mimepart' => 'httpd',
56
-				'permissions' => $this->visible ? Constants::PERMISSION_READ : 0,
57
-				'mtime' => time()
58
-			]);
59
-		} else {
60
-			return false;
61
-		}
62
-	}
63
-
64
-	public function getFolderContents($folder) {
65
-		return [];
66
-	}
67
-
68
-	public function getFolderContentsById($fileId) {
69
-		return [];
70
-	}
71
-
72
-	public function put($file, array $data) {
73
-		return;
74
-	}
75
-
76
-	public function insert($file, array $data) {
77
-		return;
78
-	}
79
-
80
-	public function update($id, array $data) {
81
-		return;
82
-	}
83
-
84
-	public function getId($file) {
85
-		return -1;
86
-	}
87
-
88
-	public function getParentId($file) {
89
-		return -1;
90
-	}
91
-
92
-	public function inCache($file) {
93
-		return false;
94
-	}
95
-
96
-	public function remove($file) {
97
-		return;
98
-	}
99
-
100
-	public function move($source, $target) {
101
-		return;
102
-	}
103
-
104
-	public function moveFromCache(ICache $sourceCache, $sourcePath, $targetPath) {
105
-		return;
106
-	}
107
-
108
-	public function clear() {
109
-		return;
110
-	}
111
-
112
-	public function getStatus($file) {
113
-		return ICache::NOT_FOUND;
114
-	}
115
-
116
-	public function search($pattern) {
117
-		return [];
118
-	}
119
-
120
-	public function searchByMime($mimetype) {
121
-		return [];
122
-	}
123
-
124
-	public function searchByTag($tag, $userId) {
125
-		return [];
126
-	}
127
-
128
-	public function getAll() {
129
-		return [];
130
-	}
131
-
132
-	public function getIncomplete() {
133
-		return [];
134
-	}
135
-
136
-	public function getPathById($id) {
137
-		return null;
138
-	}
139
-
140
-	public function normalize($path) {
141
-		return $path;
142
-	}
32
+    /** @var bool whether to show the failed storage in the ui */
33
+    private $visible;
34
+
35
+    /**
36
+     * FailedCache constructor.
37
+     *
38
+     * @param bool $visible
39
+     */
40
+    public function __construct($visible = true) {
41
+        $this->visible = $visible;
42
+    }
43
+
44
+
45
+    public function getNumericStorageId() {
46
+        return -1;
47
+    }
48
+
49
+    public function get($file) {
50
+        if ($file === '') {
51
+            return new CacheEntry([
52
+                'fileid' => -1,
53
+                'size' => 0,
54
+                'mimetype' => 'httpd/unix-directory',
55
+                'mimepart' => 'httpd',
56
+                'permissions' => $this->visible ? Constants::PERMISSION_READ : 0,
57
+                'mtime' => time()
58
+            ]);
59
+        } else {
60
+            return false;
61
+        }
62
+    }
63
+
64
+    public function getFolderContents($folder) {
65
+        return [];
66
+    }
67
+
68
+    public function getFolderContentsById($fileId) {
69
+        return [];
70
+    }
71
+
72
+    public function put($file, array $data) {
73
+        return;
74
+    }
75
+
76
+    public function insert($file, array $data) {
77
+        return;
78
+    }
79
+
80
+    public function update($id, array $data) {
81
+        return;
82
+    }
83
+
84
+    public function getId($file) {
85
+        return -1;
86
+    }
87
+
88
+    public function getParentId($file) {
89
+        return -1;
90
+    }
91
+
92
+    public function inCache($file) {
93
+        return false;
94
+    }
95
+
96
+    public function remove($file) {
97
+        return;
98
+    }
99
+
100
+    public function move($source, $target) {
101
+        return;
102
+    }
103
+
104
+    public function moveFromCache(ICache $sourceCache, $sourcePath, $targetPath) {
105
+        return;
106
+    }
107
+
108
+    public function clear() {
109
+        return;
110
+    }
111
+
112
+    public function getStatus($file) {
113
+        return ICache::NOT_FOUND;
114
+    }
115
+
116
+    public function search($pattern) {
117
+        return [];
118
+    }
119
+
120
+    public function searchByMime($mimetype) {
121
+        return [];
122
+    }
123
+
124
+    public function searchByTag($tag, $userId) {
125
+        return [];
126
+    }
127
+
128
+    public function getAll() {
129
+        return [];
130
+    }
131
+
132
+    public function getIncomplete() {
133
+        return [];
134
+    }
135
+
136
+    public function getPathById($id) {
137
+        return null;
138
+    }
139
+
140
+    public function normalize($path) {
141
+        return $path;
142
+    }
143 143
 }
Please login to merge, or discard this patch.
lib/private/Lock/DBLockingProvider.php 2 patches
Indentation   +219 added lines, -219 removed lines patch added patch discarded remove patch
@@ -37,245 +37,245 @@
 block discarded – undo
37 37
  * Locking provider that stores the locks in the database
38 38
  */
39 39
 class DBLockingProvider extends AbstractLockingProvider {
40
-	/**
41
-	 * @var \OCP\IDBConnection
42
-	 */
43
-	private $connection;
40
+    /**
41
+     * @var \OCP\IDBConnection
42
+     */
43
+    private $connection;
44 44
 
45
-	/**
46
-	 * @var \OCP\ILogger
47
-	 */
48
-	private $logger;
45
+    /**
46
+     * @var \OCP\ILogger
47
+     */
48
+    private $logger;
49 49
 
50
-	/**
51
-	 * @var \OCP\AppFramework\Utility\ITimeFactory
52
-	 */
53
-	private $timeFactory;
50
+    /**
51
+     * @var \OCP\AppFramework\Utility\ITimeFactory
52
+     */
53
+    private $timeFactory;
54 54
 
55
-	private $sharedLocks = [];
55
+    private $sharedLocks = [];
56 56
 
57
-	/**
58
-	 * Check if we have an open shared lock for a path
59
-	 *
60
-	 * @param string $path
61
-	 * @return bool
62
-	 */
63
-	protected function isLocallyLocked($path) {
64
-		return isset($this->sharedLocks[$path]) && $this->sharedLocks[$path];
65
-	}
57
+    /**
58
+     * Check if we have an open shared lock for a path
59
+     *
60
+     * @param string $path
61
+     * @return bool
62
+     */
63
+    protected function isLocallyLocked($path) {
64
+        return isset($this->sharedLocks[$path]) && $this->sharedLocks[$path];
65
+    }
66 66
 
67
-	/**
68
-	 * Mark a locally acquired lock
69
-	 *
70
-	 * @param string $path
71
-	 * @param int $type self::LOCK_SHARED or self::LOCK_EXCLUSIVE
72
-	 */
73
-	protected function markAcquire($path, $type) {
74
-		parent::markAcquire($path, $type);
75
-		if ($type === self::LOCK_SHARED) {
76
-			$this->sharedLocks[$path] = true;
77
-		}
78
-	}
67
+    /**
68
+     * Mark a locally acquired lock
69
+     *
70
+     * @param string $path
71
+     * @param int $type self::LOCK_SHARED or self::LOCK_EXCLUSIVE
72
+     */
73
+    protected function markAcquire($path, $type) {
74
+        parent::markAcquire($path, $type);
75
+        if ($type === self::LOCK_SHARED) {
76
+            $this->sharedLocks[$path] = true;
77
+        }
78
+    }
79 79
 
80
-	/**
81
-	 * Change the type of an existing tracked lock
82
-	 *
83
-	 * @param string $path
84
-	 * @param int $targetType self::LOCK_SHARED or self::LOCK_EXCLUSIVE
85
-	 */
86
-	protected function markChange($path, $targetType) {
87
-		parent::markChange($path, $targetType);
88
-		if ($targetType === self::LOCK_SHARED) {
89
-			$this->sharedLocks[$path] = true;
90
-		} else if ($targetType === self::LOCK_EXCLUSIVE) {
91
-			$this->sharedLocks[$path] = false;
92
-		}
93
-	}
80
+    /**
81
+     * Change the type of an existing tracked lock
82
+     *
83
+     * @param string $path
84
+     * @param int $targetType self::LOCK_SHARED or self::LOCK_EXCLUSIVE
85
+     */
86
+    protected function markChange($path, $targetType) {
87
+        parent::markChange($path, $targetType);
88
+        if ($targetType === self::LOCK_SHARED) {
89
+            $this->sharedLocks[$path] = true;
90
+        } else if ($targetType === self::LOCK_EXCLUSIVE) {
91
+            $this->sharedLocks[$path] = false;
92
+        }
93
+    }
94 94
 
95
-	/**
96
-	 * @param \OCP\IDBConnection $connection
97
-	 * @param \OCP\ILogger $logger
98
-	 * @param \OCP\AppFramework\Utility\ITimeFactory $timeFactory
99
-	 * @param int $ttl
100
-	 */
101
-	public function __construct(IDBConnection $connection, ILogger $logger, ITimeFactory $timeFactory, $ttl = 3600) {
102
-		$this->connection = $connection;
103
-		$this->logger = $logger;
104
-		$this->timeFactory = $timeFactory;
105
-		$this->ttl = $ttl;
106
-	}
95
+    /**
96
+     * @param \OCP\IDBConnection $connection
97
+     * @param \OCP\ILogger $logger
98
+     * @param \OCP\AppFramework\Utility\ITimeFactory $timeFactory
99
+     * @param int $ttl
100
+     */
101
+    public function __construct(IDBConnection $connection, ILogger $logger, ITimeFactory $timeFactory, $ttl = 3600) {
102
+        $this->connection = $connection;
103
+        $this->logger = $logger;
104
+        $this->timeFactory = $timeFactory;
105
+        $this->ttl = $ttl;
106
+    }
107 107
 
108
-	/**
109
-	 * Insert a file locking row if it does not exists.
110
-	 *
111
-	 * @param string $path
112
-	 * @param int $lock
113
-	 * @return int number of inserted rows
114
-	 */
108
+    /**
109
+     * Insert a file locking row if it does not exists.
110
+     *
111
+     * @param string $path
112
+     * @param int $lock
113
+     * @return int number of inserted rows
114
+     */
115 115
 
116
-	protected function initLockField($path, $lock = 0) {
117
-		$expire = $this->getExpireTime();
118
-		return $this->connection->insertIfNotExist('*PREFIX*file_locks', ['key' => $path, 'lock' => $lock, 'ttl' => $expire], ['key']);
119
-	}
116
+    protected function initLockField($path, $lock = 0) {
117
+        $expire = $this->getExpireTime();
118
+        return $this->connection->insertIfNotExist('*PREFIX*file_locks', ['key' => $path, 'lock' => $lock, 'ttl' => $expire], ['key']);
119
+    }
120 120
 
121
-	/**
122
-	 * @return int
123
-	 */
124
-	protected function getExpireTime() {
125
-		return $this->timeFactory->getTime() + $this->ttl;
126
-	}
121
+    /**
122
+     * @return int
123
+     */
124
+    protected function getExpireTime() {
125
+        return $this->timeFactory->getTime() + $this->ttl;
126
+    }
127 127
 
128
-	/**
129
-	 * @param string $path
130
-	 * @param int $type self::LOCK_SHARED or self::LOCK_EXCLUSIVE
131
-	 * @return bool
132
-	 */
133
-	public function isLocked($path, $type) {
134
-		if ($this->hasAcquiredLock($path, $type)) {
135
-			return true;
136
-		}
137
-		$query = $this->connection->prepare('SELECT `lock` from `*PREFIX*file_locks` WHERE `key` = ?');
138
-		$query->execute([$path]);
139
-		$lockValue = (int)$query->fetchColumn();
140
-		if ($type === self::LOCK_SHARED) {
141
-			if ($this->isLocallyLocked($path)) {
142
-				// if we have a shared lock we kept open locally but it's released we always have at least 1 shared lock in the db
143
-				return $lockValue > 1;
144
-			} else {
145
-				return $lockValue > 0;
146
-			}
147
-		} else if ($type === self::LOCK_EXCLUSIVE) {
148
-			return $lockValue === -1;
149
-		} else {
150
-			return false;
151
-		}
152
-	}
128
+    /**
129
+     * @param string $path
130
+     * @param int $type self::LOCK_SHARED or self::LOCK_EXCLUSIVE
131
+     * @return bool
132
+     */
133
+    public function isLocked($path, $type) {
134
+        if ($this->hasAcquiredLock($path, $type)) {
135
+            return true;
136
+        }
137
+        $query = $this->connection->prepare('SELECT `lock` from `*PREFIX*file_locks` WHERE `key` = ?');
138
+        $query->execute([$path]);
139
+        $lockValue = (int)$query->fetchColumn();
140
+        if ($type === self::LOCK_SHARED) {
141
+            if ($this->isLocallyLocked($path)) {
142
+                // if we have a shared lock we kept open locally but it's released we always have at least 1 shared lock in the db
143
+                return $lockValue > 1;
144
+            } else {
145
+                return $lockValue > 0;
146
+            }
147
+        } else if ($type === self::LOCK_EXCLUSIVE) {
148
+            return $lockValue === -1;
149
+        } else {
150
+            return false;
151
+        }
152
+    }
153 153
 
154
-	/**
155
-	 * @param string $path
156
-	 * @param int $type self::LOCK_SHARED or self::LOCK_EXCLUSIVE
157
-	 * @throws \OCP\Lock\LockedException
158
-	 */
159
-	public function acquireLock($path, $type) {
160
-		$expire = $this->getExpireTime();
161
-		if ($type === self::LOCK_SHARED) {
162
-			if (!$this->isLocallyLocked($path)) {
163
-				$result = $this->initLockField($path, 1);
164
-				if ($result <= 0) {
165
-					$result = $this->connection->executeUpdate(
166
-						'UPDATE `*PREFIX*file_locks` SET `lock` = `lock` + 1, `ttl` = ? WHERE `key` = ? AND `lock` >= 0',
167
-						[$expire, $path]
168
-					);
169
-				}
170
-			} else {
171
-				$result = 1;
172
-			}
173
-		} else {
174
-			$existing = 0;
175
-			if ($this->hasAcquiredLock($path, ILockingProvider::LOCK_SHARED) === false && $this->isLocallyLocked($path)) {
176
-				$existing = 1;
177
-			}
178
-			$result = $this->initLockField($path, -1);
179
-			if ($result <= 0) {
180
-				$result = $this->connection->executeUpdate(
181
-					'UPDATE `*PREFIX*file_locks` SET `lock` = -1, `ttl` = ? WHERE `key` = ? AND `lock` = ?',
182
-					[$expire, $path, $existing]
183
-				);
184
-			}
185
-		}
186
-		if ($result !== 1) {
187
-			throw new LockedException($path);
188
-		}
189
-		$this->markAcquire($path, $type);
190
-	}
154
+    /**
155
+     * @param string $path
156
+     * @param int $type self::LOCK_SHARED or self::LOCK_EXCLUSIVE
157
+     * @throws \OCP\Lock\LockedException
158
+     */
159
+    public function acquireLock($path, $type) {
160
+        $expire = $this->getExpireTime();
161
+        if ($type === self::LOCK_SHARED) {
162
+            if (!$this->isLocallyLocked($path)) {
163
+                $result = $this->initLockField($path, 1);
164
+                if ($result <= 0) {
165
+                    $result = $this->connection->executeUpdate(
166
+                        'UPDATE `*PREFIX*file_locks` SET `lock` = `lock` + 1, `ttl` = ? WHERE `key` = ? AND `lock` >= 0',
167
+                        [$expire, $path]
168
+                    );
169
+                }
170
+            } else {
171
+                $result = 1;
172
+            }
173
+        } else {
174
+            $existing = 0;
175
+            if ($this->hasAcquiredLock($path, ILockingProvider::LOCK_SHARED) === false && $this->isLocallyLocked($path)) {
176
+                $existing = 1;
177
+            }
178
+            $result = $this->initLockField($path, -1);
179
+            if ($result <= 0) {
180
+                $result = $this->connection->executeUpdate(
181
+                    'UPDATE `*PREFIX*file_locks` SET `lock` = -1, `ttl` = ? WHERE `key` = ? AND `lock` = ?',
182
+                    [$expire, $path, $existing]
183
+                );
184
+            }
185
+        }
186
+        if ($result !== 1) {
187
+            throw new LockedException($path);
188
+        }
189
+        $this->markAcquire($path, $type);
190
+    }
191 191
 
192
-	/**
193
-	 * @param string $path
194
-	 * @param int $type self::LOCK_SHARED or self::LOCK_EXCLUSIVE
195
-	 */
196
-	public function releaseLock($path, $type) {
197
-		$this->markRelease($path, $type);
192
+    /**
193
+     * @param string $path
194
+     * @param int $type self::LOCK_SHARED or self::LOCK_EXCLUSIVE
195
+     */
196
+    public function releaseLock($path, $type) {
197
+        $this->markRelease($path, $type);
198 198
 
199
-		// we keep shared locks till the end of the request so we can re-use them
200
-		if ($type === self::LOCK_EXCLUSIVE) {
201
-			$this->connection->executeUpdate(
202
-				'UPDATE `*PREFIX*file_locks` SET `lock` = 0 WHERE `key` = ? AND `lock` = -1',
203
-				[$path]
204
-			);
205
-		}
206
-	}
199
+        // we keep shared locks till the end of the request so we can re-use them
200
+        if ($type === self::LOCK_EXCLUSIVE) {
201
+            $this->connection->executeUpdate(
202
+                'UPDATE `*PREFIX*file_locks` SET `lock` = 0 WHERE `key` = ? AND `lock` = -1',
203
+                [$path]
204
+            );
205
+        }
206
+    }
207 207
 
208
-	/**
209
-	 * Change the type of an existing lock
210
-	 *
211
-	 * @param string $path
212
-	 * @param int $targetType self::LOCK_SHARED or self::LOCK_EXCLUSIVE
213
-	 * @throws \OCP\Lock\LockedException
214
-	 */
215
-	public function changeLock($path, $targetType) {
216
-		$expire = $this->getExpireTime();
217
-		if ($targetType === self::LOCK_SHARED) {
218
-			$result = $this->connection->executeUpdate(
219
-				'UPDATE `*PREFIX*file_locks` SET `lock` = 1, `ttl` = ? WHERE `key` = ? AND `lock` = -1',
220
-				[$expire, $path]
221
-			);
222
-		} else {
223
-			// since we only keep one shared lock in the db we need to check if we have more then one shared lock locally manually
224
-			if (isset($this->acquiredLocks['shared'][$path]) && $this->acquiredLocks['shared'][$path] > 1) {
225
-				throw new LockedException($path);
226
-			}
227
-			$result = $this->connection->executeUpdate(
228
-				'UPDATE `*PREFIX*file_locks` SET `lock` = -1, `ttl` = ? WHERE `key` = ? AND `lock` = 1',
229
-				[$expire, $path]
230
-			);
231
-		}
232
-		if ($result !== 1) {
233
-			throw new LockedException($path);
234
-		}
235
-		$this->markChange($path, $targetType);
236
-	}
208
+    /**
209
+     * Change the type of an existing lock
210
+     *
211
+     * @param string $path
212
+     * @param int $targetType self::LOCK_SHARED or self::LOCK_EXCLUSIVE
213
+     * @throws \OCP\Lock\LockedException
214
+     */
215
+    public function changeLock($path, $targetType) {
216
+        $expire = $this->getExpireTime();
217
+        if ($targetType === self::LOCK_SHARED) {
218
+            $result = $this->connection->executeUpdate(
219
+                'UPDATE `*PREFIX*file_locks` SET `lock` = 1, `ttl` = ? WHERE `key` = ? AND `lock` = -1',
220
+                [$expire, $path]
221
+            );
222
+        } else {
223
+            // since we only keep one shared lock in the db we need to check if we have more then one shared lock locally manually
224
+            if (isset($this->acquiredLocks['shared'][$path]) && $this->acquiredLocks['shared'][$path] > 1) {
225
+                throw new LockedException($path);
226
+            }
227
+            $result = $this->connection->executeUpdate(
228
+                'UPDATE `*PREFIX*file_locks` SET `lock` = -1, `ttl` = ? WHERE `key` = ? AND `lock` = 1',
229
+                [$expire, $path]
230
+            );
231
+        }
232
+        if ($result !== 1) {
233
+            throw new LockedException($path);
234
+        }
235
+        $this->markChange($path, $targetType);
236
+    }
237 237
 
238
-	/**
239
-	 * cleanup empty locks
240
-	 */
241
-	public function cleanExpiredLocks() {
242
-		$expire = $this->timeFactory->getTime();
243
-		try {
244
-			$this->connection->executeUpdate(
245
-				'DELETE FROM `*PREFIX*file_locks` WHERE `ttl` < ?',
246
-				[$expire]
247
-			);
248
-		} catch (\Exception $e) {
249
-			// If the table is missing, the clean up was successful
250
-			if ($this->connection->tableExists('file_locks')) {
251
-				throw $e;
252
-			}
253
-		}
254
-	}
238
+    /**
239
+     * cleanup empty locks
240
+     */
241
+    public function cleanExpiredLocks() {
242
+        $expire = $this->timeFactory->getTime();
243
+        try {
244
+            $this->connection->executeUpdate(
245
+                'DELETE FROM `*PREFIX*file_locks` WHERE `ttl` < ?',
246
+                [$expire]
247
+            );
248
+        } catch (\Exception $e) {
249
+            // If the table is missing, the clean up was successful
250
+            if ($this->connection->tableExists('file_locks')) {
251
+                throw $e;
252
+            }
253
+        }
254
+    }
255 255
 
256
-	/**
257
-	 * release all lock acquired by this instance which were marked using the mark* methods
258
-	 */
259
-	public function releaseAll() {
260
-		parent::releaseAll();
256
+    /**
257
+     * release all lock acquired by this instance which were marked using the mark* methods
258
+     */
259
+    public function releaseAll() {
260
+        parent::releaseAll();
261 261
 
262
-		// since we keep shared locks we need to manually clean those
263
-		$lockedPaths = array_keys($this->sharedLocks);
264
-		$lockedPaths = array_filter($lockedPaths, function ($path) {
265
-			return $this->sharedLocks[$path];
266
-		});
262
+        // since we keep shared locks we need to manually clean those
263
+        $lockedPaths = array_keys($this->sharedLocks);
264
+        $lockedPaths = array_filter($lockedPaths, function ($path) {
265
+            return $this->sharedLocks[$path];
266
+        });
267 267
 
268
-		$chunkedPaths = array_chunk($lockedPaths, 100);
268
+        $chunkedPaths = array_chunk($lockedPaths, 100);
269 269
 
270
-		foreach ($chunkedPaths as $chunk) {
271
-			$builder = $this->connection->getQueryBuilder();
270
+        foreach ($chunkedPaths as $chunk) {
271
+            $builder = $this->connection->getQueryBuilder();
272 272
 
273
-			$query = $builder->update('file_locks')
274
-				->set('lock', $builder->createFunction('`lock` -1'))
275
-				->where($builder->expr()->in('key', $builder->createNamedParameter($chunk, IQueryBuilder::PARAM_STR_ARRAY)))
276
-				->andWhere($builder->expr()->gt('lock', new Literal(0)));
273
+            $query = $builder->update('file_locks')
274
+                ->set('lock', $builder->createFunction('`lock` -1'))
275
+                ->where($builder->expr()->in('key', $builder->createNamedParameter($chunk, IQueryBuilder::PARAM_STR_ARRAY)))
276
+                ->andWhere($builder->expr()->gt('lock', new Literal(0)));
277 277
 
278
-			$query->execute();
279
-		}
280
-	}
278
+            $query->execute();
279
+        }
280
+    }
281 281
 }
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -136,7 +136,7 @@  discard block
 block discarded – undo
136 136
 		}
137 137
 		$query = $this->connection->prepare('SELECT `lock` from `*PREFIX*file_locks` WHERE `key` = ?');
138 138
 		$query->execute([$path]);
139
-		$lockValue = (int)$query->fetchColumn();
139
+		$lockValue = (int) $query->fetchColumn();
140 140
 		if ($type === self::LOCK_SHARED) {
141 141
 			if ($this->isLocallyLocked($path)) {
142 142
 				// if we have a shared lock we kept open locally but it's released we always have at least 1 shared lock in the db
@@ -261,7 +261,7 @@  discard block
 block discarded – undo
261 261
 
262 262
 		// since we keep shared locks we need to manually clean those
263 263
 		$lockedPaths = array_keys($this->sharedLocks);
264
-		$lockedPaths = array_filter($lockedPaths, function ($path) {
264
+		$lockedPaths = array_filter($lockedPaths, function($path) {
265 265
 			return $this->sharedLocks[$path];
266 266
 		});
267 267
 
Please login to merge, or discard this patch.
lib/private/Lock/NoopLockingProvider.php 1 patch
Indentation   +21 added lines, -21 removed lines patch added patch discarded remove patch
@@ -35,35 +35,35 @@
 block discarded – undo
35 35
     /**
36 36
      * {@inheritdoc}
37 37
      */
38
-	public function isLocked($path, $type) {
39
-		return false;
40
-	}
38
+    public function isLocked($path, $type) {
39
+        return false;
40
+    }
41 41
 
42 42
     /**
43 43
      * {@inheritdoc}
44 44
      */
45
-	public function acquireLock($path, $type) {
46
-		// do nothing
47
-	}
45
+    public function acquireLock($path, $type) {
46
+        // do nothing
47
+    }
48 48
 
49
-	/**
49
+    /**
50 50
      * {@inheritdoc}
51
-	 */
52
-	public function releaseLock($path, $type) {
53
-		// do nothing
54
-	}
51
+     */
52
+    public function releaseLock($path, $type) {
53
+        // do nothing
54
+    }
55 55
 
56
-	/**1
56
+    /**1
57 57
 	 * {@inheritdoc}
58 58
 	 */
59
-	public function releaseAll() {
60
-		// do nothing
61
-	}
59
+    public function releaseAll() {
60
+        // do nothing
61
+    }
62 62
 
63
-	/**
64
-	 * {@inheritdoc}
65
-	 */
66
-	public function changeLock($path, $targetType) {
67
-		// do nothing
68
-	}
63
+    /**
64
+     * {@inheritdoc}
65
+     */
66
+    public function changeLock($path, $targetType) {
67
+        // do nothing
68
+    }
69 69
 }
Please login to merge, or discard this patch.