Spaces:
No application file
No application file
namespace Mautic\InstallBundle\Configurator\Step; | |
use Mautic\CoreBundle\Configurator\Configurator; | |
use Mautic\CoreBundle\Configurator\Step\StepInterface; | |
use Mautic\InstallBundle\Configurator\Form\DoctrineStepType; | |
/** | |
* @author Fabien Potencier <fabien@symfony.com> | |
*/ | |
class DoctrineStep implements StepInterface | |
{ | |
/** | |
* Database driver. | |
*/ | |
public $driver = 'pdo_mysql'; | |
/** | |
* Database host. | |
*/ | |
public $host = 'localhost'; | |
/** | |
* Database host. Read Only Replica. | |
*/ | |
public ?string $host_ro = null; | |
/** | |
* Database table prefix. | |
* Required in step. | |
* | |
* @var string | |
*/ | |
public $table_prefix; | |
/** | |
* Database connection port. | |
*/ | |
public $port = 3306; | |
/** | |
* Database name. | |
*/ | |
public $name; | |
/** | |
* Database user. | |
*/ | |
public $user; | |
/** | |
* Database user's password. | |
* | |
* @var string | |
*/ | |
public $password; | |
/** | |
* Backup tables if they exist; otherwise drop them. | |
* Required in step. | |
* | |
* @var bool | |
*/ | |
public $backup_tables = true; | |
/** | |
* Prefix for backup tables. | |
* Required in step. | |
* | |
* @var string | |
*/ | |
public $backup_prefix = 'bak_'; | |
public ?string $server_version; | |
public function __construct(Configurator $configurator) | |
{ | |
$parameters = $configurator->getParameters(); | |
foreach ($parameters as $key => $value) { | |
if (str_starts_with($key, 'db_')) { | |
$parameters[substr($key, 3)] = $value; | |
$key = substr($key, 3); | |
$this->$key = $value; | |
} | |
} | |
} | |
public function getFormType(): string | |
{ | |
return DoctrineStepType::class; | |
} | |
public function checkRequirements(): array | |
{ | |
$messages = []; | |
if (!class_exists('\PDO')) { | |
$messages[] = 'mautic.install.pdo.mandatory'; | |
} else { | |
if (!in_array('mysql', \PDO::getAvailableDrivers(), true)) { | |
$messages[] = 'mautic.install.pdo.drivers'; | |
} | |
} | |
return $messages; | |
} | |
public function checkOptionalSettings(): array | |
{ | |
return []; | |
} | |
/** | |
* @return mixed[] | |
*/ | |
public function update(StepInterface $data): array | |
{ | |
$parameters = []; | |
foreach ($data as $key => $value) { | |
$parameters['db_'.$key] = $value; | |
} | |
return $parameters; | |
} | |
public function getTemplate(): string | |
{ | |
return '@MauticInstall/Install/doctrine.html.twig'; | |
} | |
/** | |
* Return the key values of the available driver array. | |
* Required in step. | |
* | |
* @see \Mautic\InstallBundle\Configurator\Form\DoctrineStepType::buildForm() | |
*/ | |
public static function getDriverKeys(): array | |
{ | |
return array_keys(static::getDrivers()); | |
} | |
/** | |
* Fetches the available database drivers for the environment. | |
*/ | |
public static function getDrivers(): array | |
{ | |
$mauticSupported = [ | |
'pdo_mysql' => 'MySQL PDO (Recommended)', | |
]; | |
$supported = []; | |
// Add PDO drivers if supported | |
if (class_exists('\PDO')) { | |
$pdoDrivers = \PDO::getAvailableDrivers(); | |
foreach ($pdoDrivers as $driver) { | |
if (array_key_exists('pdo_'.$driver, $mauticSupported)) { | |
$supported['pdo_'.$driver] = $mauticSupported['pdo_'.$driver]; | |
} | |
} | |
} | |
return $supported; | |
} | |
} | |