aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/private/DB/Adapter.php16
-rw-r--r--lib/private/DB/AdapterPgSql.php13
-rw-r--r--lib/private/DB/Connection.php4
-rw-r--r--lib/private/Lock/DBLockingProvider.php17
-rw-r--r--lib/public/IDBConnection.php14
-rw-r--r--settings/Controller/CheckSetupController.php4
-rw-r--r--settings/js/admin.js4
-rw-r--r--tests/Settings/Controller/CheckSetupControllerTest.php10
8 files changed, 54 insertions, 28 deletions
diff --git a/lib/private/DB/Adapter.php b/lib/private/DB/Adapter.php
index b9a5f272c57..5c822dda080 100644
--- a/lib/private/DB/Adapter.php
+++ b/lib/private/DB/Adapter.php
@@ -126,4 +126,20 @@ class Adapter {
return 0;
}
}
+
+ /**
+ * @suppress SqlInjectionChecker
+ */
+ public function insertIgnoreConflict(string $table,array $values) : int {
+ try {
+ $builder = $this->conn->getQueryBuilder();
+ $builder->insert($table);
+ foreach($values as $key => $value) {
+ $builder->setValue($key, $builder->createNamedParameter($value));
+ }
+ return $builder->execute();
+ } catch(UniqueConstraintViolationException $e) {
+ return 0;
+ }
+ }
}
diff --git a/lib/private/DB/AdapterPgSql.php b/lib/private/DB/AdapterPgSql.php
index 47ef4dff037..af1978d051c 100644
--- a/lib/private/DB/AdapterPgSql.php
+++ b/lib/private/DB/AdapterPgSql.php
@@ -35,4 +35,17 @@ class AdapterPgSql extends Adapter {
$statement = str_ireplace( 'UNIX_TIMESTAMP()', self::UNIX_TIMESTAMP_REPLACEMENT, $statement );
return $statement;
}
+
+ /**
+ * @suppress SqlInjectionChecker
+ */
+ public function insertIgnoreConflict(string $table,array $values) : int {
+ $builder = $this->conn->getQueryBuilder();
+ $builder->insert($table);
+ foreach($values as $key => $value) {
+ $builder->setValue($key, $builder->createNamedParameter($value));
+ }
+ $queryString = $builder->getSQL() . ' ON CONFLICT DO NOTHING';
+ return $this->conn->executeUpdate($queryString, $builder->getParameters(), $builder->getParameterTypes());
+ }
}
diff --git a/lib/private/DB/Connection.php b/lib/private/DB/Connection.php
index c63ef0067c1..506f4bcd4c9 100644
--- a/lib/private/DB/Connection.php
+++ b/lib/private/DB/Connection.php
@@ -257,6 +257,10 @@ class Connection extends ReconnectWrapper implements IDBConnection {
return $this->adapter->insertIfNotExist($table, $input, $compare);
}
+ public function insertIgnoreConflict(string $table, array $values) : int {
+ return $this->adapter->insertIgnoreConflict($table, $values);
+ }
+
private function getType($value) {
if (is_bool($value)) {
return IQueryBuilder::PARAM_BOOL;
diff --git a/lib/private/Lock/DBLockingProvider.php b/lib/private/Lock/DBLockingProvider.php
index 6d9c8f1b3d1..bd76385d85d 100644
--- a/lib/private/Lock/DBLockingProvider.php
+++ b/lib/private/Lock/DBLockingProvider.php
@@ -131,20 +131,13 @@ class DBLockingProvider extends AbstractLockingProvider {
* @param int $lock
* @return int number of inserted rows
*/
-
protected function initLockField(string $path, int $lock = 0): int {
$expire = $this->getExpireTime();
-
- try {
- $builder = $this->connection->getQueryBuilder();
- return $builder->insert('file_locks')
- ->setValue('key', $builder->createNamedParameter($path))
- ->setValue('lock', $builder->createNamedParameter($lock))
- ->setValue('ttl', $builder->createNamedParameter($expire))
- ->execute();
- } catch(UniqueConstraintViolationException $e) {
- return 0;
- }
+ return $this->connection->insertIgnoreConflict('file_locks', [
+ 'key' => $path,
+ 'lock' => $lock,
+ 'ttl' => $expire
+ ]);
}
/**
diff --git a/lib/public/IDBConnection.php b/lib/public/IDBConnection.php
index b3abe464845..4c66896a2fe 100644
--- a/lib/public/IDBConnection.php
+++ b/lib/public/IDBConnection.php
@@ -120,6 +120,20 @@ interface IDBConnection {
*/
public function insertIfNotExist($table, $input, array $compare = null);
+
+ /**
+ *
+ * Insert a row if the row does not exist. Eventual conflicts during insert will be ignored.
+ *
+ * Implementation is not fully finished and should not be used!
+ *
+ * @param string $table The table name (will replace *PREFIX* with the actual prefix)
+ * @param array $values data that should be inserted into the table (column name => value)
+ * @return int number of inserted rows
+ * @since 16.0.0
+ */
+ public function insertIgnoreConflict(string $table,array $values) : int;
+
/**
* Insert or update a row value
*
diff --git a/settings/Controller/CheckSetupController.php b/settings/Controller/CheckSetupController.php
index 9b4dc1c0956..5f355d0ec2f 100644
--- a/settings/Controller/CheckSetupController.php
+++ b/settings/Controller/CheckSetupController.php
@@ -69,8 +69,6 @@ class CheckSetupController extends Controller {
private $config;
/** @var IClientService */
private $clientService;
- /** @var \OC_Util */
- private $util;
/** @var IURLGenerator */
private $urlGenerator;
/** @var IL10N */
@@ -97,7 +95,6 @@ class CheckSetupController extends Controller {
IConfig $config,
IClientService $clientService,
IURLGenerator $urlGenerator,
- \OC_Util $util,
IL10N $l10n,
Checker $checker,
ILogger $logger,
@@ -110,7 +107,6 @@ class CheckSetupController extends Controller {
parent::__construct($AppName, $request);
$this->config = $config;
$this->clientService = $clientService;
- $this->util = $util;
$this->urlGenerator = $urlGenerator;
$this->l10n = $l10n;
$this->checker = $checker;
diff --git a/settings/js/admin.js b/settings/js/admin.js
index ae6b2262c44..8c27e125f57 100644
--- a/settings/js/admin.js
+++ b/settings/js/admin.js
@@ -251,8 +251,8 @@ $(document).ready(function(){
OC.SetupChecks.checkWellKnownUrl('/.well-known/webfinger', oc_defaults.docPlaceholderUrl, $('#postsetupchecks').data('check-wellknown') === true && !!oc_appconfig.core.public_webfinger, [200, 501]),
OC.SetupChecks.checkWellKnownUrl('/.well-known/caldav', oc_defaults.docPlaceholderUrl, $('#postsetupchecks').data('check-wellknown') === true),
OC.SetupChecks.checkWellKnownUrl('/.well-known/carddav', oc_defaults.docPlaceholderUrl, $('#postsetupchecks').data('check-wellknown') === true),
- OC.SetupChecks.checkProviderUrl('/ocm-provider/', oc_defaults.docPlaceholderUrl, $('#postsetupchecks').data('check-wellknown') === true),
- OC.SetupChecks.checkProviderUrl('/ocs-provider/', oc_defaults.docPlaceholderUrl, $('#postsetupchecks').data('check-wellknown') === true),
+ OC.SetupChecks.checkProviderUrl(OC.getRootPath() + '/ocm-provider/', oc_defaults.docPlaceholderUrl, $('#postsetupchecks').data('check-wellknown') === true),
+ OC.SetupChecks.checkProviderUrl(OC.getRootPath() + '/ocs-provider/', oc_defaults.docPlaceholderUrl, $('#postsetupchecks').data('check-wellknown') === true),
OC.SetupChecks.checkSetup(),
OC.SetupChecks.checkGeneric(),
OC.SetupChecks.checkWOFF2Loading(OC.filePath('core', '', 'fonts/Nunito-Regular.woff2'), oc_defaults.docPlaceholderUrl),
diff --git a/tests/Settings/Controller/CheckSetupControllerTest.php b/tests/Settings/Controller/CheckSetupControllerTest.php
index 521cadfcd3b..173c0a1f85f 100644
--- a/tests/Settings/Controller/CheckSetupControllerTest.php
+++ b/tests/Settings/Controller/CheckSetupControllerTest.php
@@ -37,7 +37,6 @@ use OCP\IL10N;
use OCP\ILogger;
use OCP\IRequest;
use OCP\IURLGenerator;
-use OC_Util;
use OCP\Lock\ILockingProvider;
use PHPUnit\Framework\MockObject\MockObject;
use Psr\Http\Message\ResponseInterface;
@@ -62,8 +61,6 @@ class CheckSetupControllerTest extends TestCase {
private $clientService;
/** @var IURLGenerator | \PHPUnit_Framework_MockObject_MockObject */
private $urlGenerator;
- /** @var OC_Util */
- private $util;
/** @var IL10N | \PHPUnit_Framework_MockObject_MockObject */
private $l10n;
/** @var ILogger */
@@ -99,8 +96,6 @@ class CheckSetupControllerTest extends TestCase {
->disableOriginalConstructor()->getMock();
$this->clientService = $this->getMockBuilder(IClientService::class)
->disableOriginalConstructor()->getMock();
- $this->util = $this->getMockBuilder('\OC_Util')
- ->disableOriginalConstructor()->getMock();
$this->urlGenerator = $this->getMockBuilder(IURLGenerator::class)
->disableOriginalConstructor()->getMock();
$this->l10n = $this->getMockBuilder(IL10N::class)
@@ -130,7 +125,6 @@ class CheckSetupControllerTest extends TestCase {
$this->config,
$this->clientService,
$this->urlGenerator,
- $this->util,
$this->l10n,
$this->checker,
$this->logger,
@@ -590,7 +584,6 @@ class CheckSetupControllerTest extends TestCase {
$this->config,
$this->clientService,
$this->urlGenerator,
- $this->util,
$this->l10n,
$this->checker,
$this->logger,
@@ -624,7 +617,6 @@ class CheckSetupControllerTest extends TestCase {
$this->config,
$this->clientService,
$this->urlGenerator,
- $this->util,
$this->l10n,
$this->checker,
$this->logger,
@@ -1393,7 +1385,6 @@ Array
$this->config,
$this->clientService,
$this->urlGenerator,
- $this->util,
$this->l10n,
$this->checker,
$this->logger,
@@ -1442,7 +1433,6 @@ Array
$this->config,
$this->clientService,
$this->urlGenerator,
- $this->util,
$this->l10n,
$this->checker,
$this->logger,