summaryrefslogtreecommitdiffstats
path: root/lib/repair
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2015-01-12 15:22:02 +0100
committerThomas Müller <thomas.mueller@tmit.eu>2015-01-12 20:20:19 +0100
commit7966eee0078633f0836bd9303e296b328418e78c (patch)
tree8405e3886ed26fd3eb2a4bbb6d02997495dcfb6c /lib/repair
parent5f7c115dfee58db718d0887562a5a8df8ccc7279 (diff)
downloadnextcloud-server-7966eee0078633f0836bd9303e296b328418e78c.tar.gz
nextcloud-server-7966eee0078633f0836bd9303e296b328418e78c.zip
Adding repair step to fix missing etags - fixes #12172
Diffstat (limited to 'lib/repair')
-rw-r--r--lib/repair/filletags.php41
1 files changed, 41 insertions, 0 deletions
diff --git a/lib/repair/filletags.php b/lib/repair/filletags.php
new file mode 100644
index 00000000000..b94ae385f05
--- /dev/null
+++ b/lib/repair/filletags.php
@@ -0,0 +1,41 @@
+<?php
+/**
+ * Copyright (c) 2015 Thomas Müller <deepdiver@owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace OC\Repair;
+
+use Doctrine\DBAL\Query\QueryBuilder;
+use OC\Hooks\BasicEmitter;
+
+class FillETags extends BasicEmitter implements \OC\RepairStep {
+
+ /** @var \OC\DB\Connection */
+ protected $connection;
+
+ /**
+ * @param \OC\DB\Connection $connection
+ */
+ public function __construct($connection) {
+ $this->connection = $connection;
+ }
+
+ public function getName() {
+ return 'Generate ETags for file where no ETag is present.';
+ }
+
+ public function run() {
+ $qb = $this->connection->createQueryBuilder();
+ $qb->update('`*PREFIX*filecache`')
+ ->set('`etag`', $qb->expr()->literal('xxx'))
+ ->where($qb->expr()->eq('`etag`', $qb->expr()->literal('')))
+ ->orWhere($qb->expr()->isNull('`etag`'));
+
+ $result = $qb->execute();
+ $this->emit('\OC\Repair', 'info', array("ETags have been fixed for $result files/folders."));
+ }
+}
+