1<?php 2/** 3 * webtrees: online genealogy 4 * Copyright (C) 2019 webtrees development team 5 * This program is free software: you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation, either version 3 of the License, or 8 * (at your option) any later version. 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * You should have received a copy of the GNU General Public License 14 * along with this program. If not, see <http://www.gnu.org/licenses/>. 15 */ 16declare(strict_types=1); 17 18namespace Fisharebest\Webtrees\Http\Middleware; 19 20use function file_exists; 21use Fisharebest\Webtrees\Database; 22use Fisharebest\Webtrees\Http\Controllers\SetupController; 23use Fisharebest\Webtrees\Webtrees; 24use Psr\Http\Message\ResponseInterface; 25use Psr\Http\Message\ServerRequestInterface; 26use Psr\Http\Server\MiddlewareInterface; 27use Psr\Http\Server\RequestHandlerInterface; 28use function parse_ini_file; 29 30/** 31 * Middleware to connect to the database. 32 */ 33class UseDatabase implements MiddlewareInterface 34{ 35 /** @var SetupController $controller */ 36 private $setup_controller; 37 38 /** 39 * @param SetupController $setup_controller 40 */ 41 public function __construct(SetupController $setup_controller) 42 { 43 $this->setup_controller = $setup_controller; 44 } 45 46 /** 47 * @param ServerRequestInterface $request 48 * @param RequestHandlerInterface $handler 49 * 50 * @return ResponseInterface 51 */ 52 public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface 53 { 54 // Read the connection settings and create the database 55 if (file_exists(Webtrees::CONFIG_FILE)) { 56 $database_config = parse_ini_file(Webtrees::CONFIG_FILE); 57 58 Database::connect($database_config); 59 60 return $handler->handle($request); 61 } 62 63 // No database connection? Run the setup wizard to create one. 64 return $this->setup_controller->setup($request); 65 } 66} 67