Skip to content

Commit 19a07e7

Browse files
authored
Test support for PHP 8 (#986)
1 parent e5afd7b commit 19a07e7

File tree

3 files changed

+64
-51
lines changed

3 files changed

+64
-51
lines changed

.circleci/config.yml

+28-2
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ jobs:
9999
<<: *steps
100100
"php-7.4-apache":
101101
docker:
102-
- image: php:7.3-apache
102+
- image: php:7.4-apache
103103
environment: *environment
104104
- *mysql
105105
- *mariadb
@@ -110,7 +110,29 @@ jobs:
110110
<<: *steps
111111
"php-7.4-nginx":
112112
docker:
113-
- image: php:7.3-fpm
113+
- image: php:7.4-fpm
114+
environment: *environment
115+
- *mysql
116+
- *mariadb
117+
- *pgsql
118+
- *mysql2
119+
- *mariadb2
120+
- *pgsql2
121+
<<: *steps
122+
"php-8.0-apache":
123+
docker:
124+
- image: php:8.0-apache
125+
environment: *environment
126+
- *mysql
127+
- *mariadb
128+
- *pgsql
129+
- *mysql2
130+
- *mariadb2
131+
- *pgsql2
132+
<<: *steps
133+
"php-8.0-nginx":
134+
docker:
135+
- image: php:8.0-fpm
114136
environment: *environment
115137
- *mysql
116138
- *mariadb
@@ -155,6 +177,8 @@ workflows:
155177
- "php-7.3-nginx"
156178
- "php-7.4-apache"
157179
- "php-7.4-nginx"
180+
- "php-8.0-apache"
181+
- "php-8.0-nginx"
158182
- coverage:
159183
filters:
160184
branches:
@@ -164,3 +188,5 @@ workflows:
164188
- "php-7.3-nginx"
165189
- "php-7.4-apache"
166190
- "php-7.4-nginx"
191+
- "php-8.0-apache"
192+
- "php-8.0-nginx"

composer.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
"docs": "https://tenancy.dev"
2424
},
2525
"require": {
26-
"php": "^7.3",
26+
"php": "^7.3|^8.0",
2727
"phpseclib/phpseclib": "~2.0",
2828
"doctrine/dbal": "~2.5|~3.0",
2929
"ramsey/uuid": "^4.0",

src/Generators/Webserver/Database/Drivers/MariaDB.php

+35-48
Original file line numberDiff line numberDiff line change
@@ -14,61 +14,55 @@
1414

1515
namespace Hyn\Tenancy\Generators\Webserver\Database\Drivers;
1616

17-
use Hyn\Tenancy\Contracts\Webserver\DatabaseGenerator;
17+
use Illuminate\Support\Arr;
1818
use Hyn\Tenancy\Contracts\Website;
1919
use Hyn\Tenancy\Database\Connection;
2020
use Hyn\Tenancy\Events\Websites\Created;
2121
use Hyn\Tenancy\Events\Websites\Deleted;
2222
use Hyn\Tenancy\Events\Websites\Updated;
2323
use Hyn\Tenancy\Exceptions\GeneratorFailedException;
24-
use Illuminate\Database\Connection as IlluminateConnection;
25-
use Illuminate\Support\Arr;
26-
use Illuminate\Support\Str;
24+
use Hyn\Tenancy\Contracts\Webserver\DatabaseGenerator;
2725

2826
class MariaDB implements DatabaseGenerator
2927
{
3028
/**
3129
* @param Created $event
3230
* @param array $config
3331
* @param Connection $connection
32+
*
3433
* @return bool
3534
*/
3635
public function created(Created $event, array $config, Connection $connection): bool
3736
{
3837
$createUser = config('tenancy.db.auto-create-tenant-database-user', true);
3938

40-
$user = function ($connection) use ($config, $createUser) {
41-
if ($createUser) {
42-
return $connection->statement("CREATE USER IF NOT EXISTS `{$config['username']}`@'{$config['host']}' IDENTIFIED BY '{$config['password']}'");
43-
}
39+
$user = "CREATE USER IF NOT EXISTS `{$config['username']}`@'{$config['host']}' IDENTIFIED BY '{$config['password']}'";
4440

45-
return true;
46-
};
47-
$create = function ($connection) use ($config) {
48-
return $connection->statement("CREATE DATABASE IF NOT EXISTS `{$config['database']}`
41+
$create = "CREATE DATABASE IF NOT EXISTS `{$config['database']}`
4942
DEFAULT CHARACTER SET {$config['charset']}
50-
DEFAULT COLLATE {$config['collation']}");
51-
};
52-
$grant = function ($connection) use ($config, $createUser) {
53-
if ($createUser) {
54-
$privileges = config('tenancy.db.tenant-database-user-privileges', null) ?? 'ALL';
55-
return $connection->statement("GRANT $privileges ON `{$config['database']}`.* TO `{$config['username']}`@'{$config['host']}'");
56-
}
57-
58-
return true;
59-
};
60-
61-
return $connection->system($event->website)->transaction(function (IlluminateConnection $connection) use ($user, $create, $grant) {
62-
return $user($connection) && $create($connection) && $grant($connection);
63-
});
43+
DEFAULT COLLATE {$config['collation']}";
44+
45+
$privileges = config('tenancy.db.tenant-database-user-privileges', null) ?? 'ALL';
46+
47+
$grant = "GRANT $privileges ON `{$config['database']}`.* TO `{$config['username']}`@'{$config['host']}'";
48+
49+
if ($createUser) {
50+
return $connection->system($event->website)->statement($user)
51+
&& $connection->system($event->website)->statement($create)
52+
&& $connection->system($event->website)->statement($grant);
53+
}
54+
55+
return $connection->system($event->website)->statement($create);
6456
}
6557

6658
/**
6759
* @param Updated $event
6860
* @param array $config
6961
* @param Connection $connection
70-
* @return bool
62+
*
7163
* @throws GeneratorFailedException
64+
*
65+
* @return bool
7266
*/
7367
public function updated(Updated $event, array $config, Connection $connection): bool
7468
{
@@ -87,39 +81,32 @@ public function updated(Updated $event, array $config, Connection $connection):
8781
* @param Deleted $event
8882
* @param array $config
8983
* @param Connection $connection
84+
*
9085
* @return bool
9186
*/
9287
public function deleted(Deleted $event, array $config, Connection $connection): bool
9388
{
94-
$user = function ($connection) use ($config) {
95-
if (config('tenancy.db.auto-delete-tenant-database-user', false)) {
96-
return $connection->statement("DROP USER IF EXISTS `{$config['username']}`@'{$config['host']}'");
97-
}
89+
$deleteUser = config('tenancy.db.auto-delete-tenant-database-user', false);
90+
91+
$user = "DROP USER IF EXISTS `{$config['username']}`@'{$config['host']}'";
9892

99-
return true;
100-
};
93+
$delete = "DROP DATABASE IF EXISTS `{$config['database']}`";
10194

102-
$delete = function ($connection) use ($config) {
103-
return $connection->statement("DROP DATABASE IF EXISTS `{$config['database']}`");
104-
};
95+
if ($deleteUser) {
96+
return $connection->system($event->website)->statement($user)
97+
&& $connection->system($event->website)->statement($delete);
98+
}
10599

106-
return $connection->system($event->website)->transaction(function (IlluminateConnection $connection) use ($user, $delete) {
107-
return $delete($connection) && $user($connection);
108-
});
100+
return $connection->system($event->website)->statement($delete);
109101
}
110102

111103
public function updatePassword(Website $website, array $config, Connection $connection): bool
112104
{
113-
$user = function (IlluminateConnection $connection) use ($config) {
114-
return $connection->statement("ALTER USER `{$config['username']}`@'{$config['host']}' IDENTIFIED BY '{$config['password']}'");
115-
};
105+
$user = "ALTER USER `{$config['username']}`@'{$config['host']}' IDENTIFIED BY '{$config['password']}'";
116106

117-
$flush = function (IlluminateConnection $connection) {
118-
return $connection->statement('FLUSH PRIVILEGES');
119-
};
107+
$flush = 'FLUSH PRIVILEGES';
120108

121-
return $connection->system($website)->transaction(function (IlluminateConnection $connection) use ($user, $flush) {
122-
return $user($connection) && $flush($connection);
123-
});
109+
return $connection->system($website)->statement($user)
110+
&& $connection->system($website)->statement($flush);
124111
}
125112
}

0 commit comments

Comments
 (0)