diff --git a/.travis.yml b/.travis.yml index d3913c7..21d35ff 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,7 +4,6 @@ php: - 5.6 - 7.0 - 7.1 - - 7.2 cache: directories: @@ -24,43 +23,64 @@ env: global: - PHP_COVERAGE=FALSE matrix: + # Nextcloud 9+ - CORE_TYPE=nextcloud CORE_BRANCH=master DB=sqlite - CORE_TYPE=nextcloud CORE_BRANCH=stable12 DB=sqlite - CORE_TYPE=nextcloud CORE_BRANCH=stable11 DB=sqlite + - CORE_TYPE=nextcloud CORE_BRANCH=stable10 DB=sqlite + - CORE_TYPE=nextcloud CORE_BRANCH=stable9 DB=sqlite - CORE_TYPE=nextcloud CORE_BRANCH=master DB=mysql - CORE_TYPE=nextcloud CORE_BRANCH=stable12 DB=mysql - CORE_TYPE=nextcloud CORE_BRANCH=stable11 DB=mysql + - CORE_TYPE=nextcloud CORE_BRANCH=stable10 DB=mysql + - CORE_TYPE=nextcloud CORE_BRANCH=stable9 DB=mysql - CORE_TYPE=nextcloud CORE_BRANCH=master DB=pgsql - CORE_TYPE=nextcloud CORE_BRANCH=stable12 DB=pgsql - CORE_TYPE=nextcloud CORE_BRANCH=stable11 DB=pgsql + - CORE_TYPE=nextcloud CORE_BRANCH=stable10 DB=pgsql + - CORE_TYPE=nextcloud CORE_BRANCH=stable9 DB=pgsql + # ownCloud 9.1+ - CORE_TYPE=owncloud CORE_BRANCH=master DB=sqlite - CORE_TYPE=owncloud CORE_BRANCH=stable10 DB=sqlite + - CORE_TYPE=owncloud CORE_BRANCH=stable9.1 DB=sqlite - CORE_TYPE=owncloud CORE_BRANCH=master DB=mysql - CORE_TYPE=owncloud CORE_BRANCH=stable10 DB=mysql + - CORE_TYPE=owncloud CORE_BRANCH=stable9.1 DB=mysql - CORE_TYPE=owncloud CORE_BRANCH=master DB=pgsql - CORE_TYPE=owncloud CORE_BRANCH=stable10 DB=pgsql + - CORE_TYPE=owncloud CORE_BRANCH=stable9.1 DB=pgsql matrix: fast_finish: true - exclude: - # Nextcloud 11/12 are not compatible with PHP 7.2 + include: + # Nextcloud prior v13 is not compatible with PHP 7.2 + # (see https://github.com/nextcloud/server/issues/6786#issuecomment-335154372) - php: 7.2 - env: CORE_TYPE=nextcloud CORE_BRANCH=stable11 DB=mysql + env: CORE_TYPE=nextcloud CORE_BRANCH=master DB=sqlite - php: 7.2 - env: CORE_TYPE=nextcloud CORE_BRANCH=stable12 DB=mysql + env: CORE_TYPE=nextcloud CORE_BRANCH=master DB=mysql - php: 7.2 - env: CORE_TYPE=nextcloud CORE_BRANCH=stable11 DB=sqlite + env: CORE_TYPE=nextcloud CORE_BRANCH=master DB=pgsql + + # ownCloud prior v10 is not compatible with PHP 7.2 + # (see https://github.com/owncloud/core/pull/29878) - php: 7.2 - env: CORE_TYPE=nextcloud CORE_BRANCH=stable12 DB=sqlite + env: CORE_TYPE=owncloud CORE_BRANCH=master DB=sqlite - php: 7.2 - env: CORE_TYPE=nextcloud CORE_BRANCH=stable11 DB=pgsql + env: CORE_TYPE=owncloud CORE_BRANCH=master DB=mysql - php: 7.2 - env: CORE_TYPE=nextcloud CORE_BRANCH=stable12 DB=pgsql + env: CORE_TYPE=owncloud CORE_BRANCH=master DB=pgsql + - php: 7.2 + env: CORE_TYPE=owncloud CORE_BRANCH=stable10 DB=sqlite + - php: 7.2 + env: CORE_TYPE=owncloud CORE_BRANCH=stable10 DB=mysql + - php: 7.2 + env: CORE_TYPE=owncloud CORE_BRANCH=stable10 DB=pgsql before_install: # XDebug is only needed if we report coverage -> speeds up other builds diff --git a/README.md b/README.md index 74ac744..7993ff9 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Flow: 1. ownCloud 9.1.0.7+ 2. Nextcloud 9+ -Supports SQLite and MariaDB, PostgreSQL support is [enabled but not tested](https://github.com/pellaeon/registration/issues/24#issuecomment-294504028). +Supports SQLite, MySQL/MariaDB and PostgreSQL. # Install 1. Place this app in `owncloud/apps/` or `nextcloud/apps` diff --git a/util/corebridge.php b/util/corebridge.php index 2eee5dd..5fc2124 100644 --- a/util/corebridge.php +++ b/util/corebridge.php @@ -5,6 +5,9 @@ namespace OCA\Registration\Util; class CoreBridge { /** + * This function maps an exception class to the available exception class of the core + * in order to provide cross-core and cross-version compatibility. + * * @param string $className * @return string * @throws \LogicException @@ -13,20 +16,20 @@ class CoreBridge { static $classes = [ 'OCSException' => [ - 'nextcloud' => 'OCP\AppFramework\OCS\OCSException', - 'owncloud' => 'OC\OCS\Exception', + 'OCP\AppFramework\OCS\OCSException', + 'OC\OCS\Exception', ], 'OCSBadRequestException' => [ - 'nextcloud' => 'OCP\AppFramework\OCS\OCSBadRequestException', - 'owncloud' => 'OC\OCS\Exception', + 'OCP\AppFramework\OCS\OCSBadRequestException', + 'OC\OCS\Exception', ], 'OCSNotFoundException' => [ - 'nextcloud' => 'OCP\AppFramework\OCS\OCSNotFoundException', - 'owncloud' => 'OC\OCS\Exception', + 'OCP\AppFramework\OCS\OCSNotFoundException', + 'OC\OCS\Exception', ], 'DoesNotExistException' => [ - 'nextcloud' => 'OCP\AppFramework\Db\DoesNotExistException', - 'owncloud' => 'OCP\AppFramework\Db\DoesNotExistException', + 'OCP\AppFramework\Db\DoesNotExistException', + 'OCP\AppFramework\Db\DoesNotExistException', ], ]; @@ -56,8 +59,9 @@ class CoreBridge $reflection = new \ReflectionClass($exceptionClassName); $params = $reflection->getConstructor()->getParameters(); - if ($params[0]->getClass() && $params[0]->getClass()->getName() === 'OC\OCS\Result') { - return new $exceptionClassName(new \OC\OCS\Result($message, $code)); + if ($params[0]->getClass() && ($params[0]->getClass()->getName() === 'OC\OCS\Result' || $params[0]->getClass()->getName() === 'OC_OCS_Result')) { + $subClass = $params[0]->getClass()->getName(); + return new $exceptionClassName(new $subClass($message, $code)); } if (count($params) >= 2) {