/** * Creates a specialized form to configure the DBMS connection. * * @param array $markers * @param tx_install $instObj * @return void */ protected function createConnectionForm(array &$markers, tx_install $instObj) { // Normalize current driver if (!$this->driver) { $this->driver = $this->getDefaultDriver(); } // Get the template file $templateFile = @file_get_contents(t3lib_extMgm::extPath('dbal') . $this->templateFilePath . 'install.html'); // Get the template part from the file $template = t3lib_parsehtml::getSubpart($templateFile, '###TEMPLATE###'); // Get the subpart for the connection form $formSubPart = t3lib_parsehtml::getSubpart($template, '###CONNECTION_FORM###'); if ($this->getNumberOfAvailableDrivers() == 1 && $this->getDefaultDriver() === 'mysql') { // Only MySQL is actually available (PDO support may be compiled in // PHP itself and as such DBAL was activated, behaves as if DBAL were // not activated $driverSubPart = '<input type="hidden" name="TYPO3_INSTALL[localconf.php][typo_db_driver]" value="mysql" />'; } else { $driverTemplate = t3lib_parsehtml::getSubpart($formSubPart, '###DATABASE_DRIVER###'); $driverSubPart = $this->prepareDatabaseDrivers($driverTemplate); } $formSubPart = t3lib_parsehtml::substituteSubpart($formSubPart, '###DATABASE_DRIVER###', $driverSubPart); // Get the subpart related to selected database driver if ($this->driver === '' || $this->driver === 'mysql') { $driverOptionsSubPart = t3lib_parsehtml::getSubpart($template, '###DRIVER_MYSQL###'); } else { $driverOptionsSubPart = t3lib_parsehtml::getSubpart($template, '###DRIVER_' . t3lib_div::strtoupper($this->driver) . '###'); if ($driverOptionsSubPart === '') { $driverOptionsSubPart = t3lib_parsehtml::getSubpart($template, '###DRIVER_DEFAULT###'); } } // Define driver-specific markers $driverMarkers = array(); switch ($this->driver) { case 'mssql': $driverMarkers = array('labelUsername' => 'Username', 'username' => TYPO3_db_username, 'labelPassword' => 'Password', 'password' => TYPO3_db_password, 'labelHost' => 'Host', 'host' => TYPO3_db_host ? TYPO3_db_host : 'windows', 'labelDatabase' => 'Database', 'database' => TYPO3_db); $nextStep = $instObj->step + 2; break; case 'odbc_mssql': $driverMarkers = array('labelUsername' => 'Username', 'username' => TYPO3_db_username, 'labelPassword' => 'Password', 'password' => TYPO3_db_password, 'labelHost' => 'Host', 'host' => TYPO3_db_host ? TYPO3_db_host : 'windows', 'database' => 'dummy_string'); $nextStep = $instObj->step + 2; break; case 'oci8': $driverMarkers = array('labelUsername' => 'Username', 'username' => TYPO3_db_username, 'labelPassword' => 'Password', 'password' => TYPO3_db_password, 'labelHost' => 'Host', 'host' => TYPO3_db_host ? TYPO3_db_host : 'localhost', 'labelType' => 'Type', 'labelSID' => 'SID', 'labelServiceName' => 'Service Name', 'labelDatabase' => 'Name', 'database' => TYPO3_db); $nextStep = $instObj->step + 2; break; case 'postgres': $driverMarkers = array('labelUsername' => 'Username', 'username' => TYPO3_db_username, 'labelPassword' => 'Password', 'password' => TYPO3_db_password, 'labelHost' => 'Host', 'host' => TYPO3_db_host ? TYPO3_db_host : 'localhost', 'labelDatabase' => 'Database', 'database' => TYPO3_db); $nextStep = $instObj->step + 2; break; default: $driverMarkers = array('labelUsername' => 'Username', 'username' => TYPO3_db_username, 'labelPassword' => 'Password', 'password' => TYPO3_db_password, 'labelHost' => 'Host', 'host' => TYPO3_db_host ? TYPO3_db_host : 'localhost', 'labelDatabase' => 'Database', 'database' => TYPO3_db); $nextStep = $instObj->step + 1; break; } // Add header marker for main template $markers['header'] = 'Connect to your database host'; // Define the markers content for the subpart $subPartMarkers = array('step' => $nextStep, 'action' => htmlspecialchars($instObj->action), 'encryptionKey' => $instObj->createEncryptionKey(), 'branch' => TYPO3_branch, 'driver_options' => $driverOptionsSubPart, 'continue' => 'Continue', 'llDescription' => 'If you have not already created a username and password to access the database, please do so now. This can be done using tools provided by your host.'); $subPartMarkers = array_merge($subPartMarkers, $driverMarkers); // Add step marker for main template $markers['step'] = t3lib_parsehtml::substituteMarkerArray($formSubPart, $subPartMarkers, '###|###', 1, 1); }