/**
  * Check database data
  *
  * @param string	$dbms			Selected database type
  * @param string	$dbhost			Database host address
  * @param int		$dbport			Database port number
  * @param string	$dbuser			Database username
  * @param string	$dbpass			Database password
  * @param string	$dbname			Database name
  * @param string	$table_prefix	Database table prefix
  *
  * @return bool	True if database data is correct, false otherwise
  */
 protected function check_database_data($dbms, $dbhost, $dbport, $dbuser, $dbpass, $dbname, $table_prefix)
 {
     $available_dbms = $this->database_helper->get_available_dbms();
     $data_valid = true;
     // Check if PHP has the database extensions for the specified DBMS
     if (!isset($available_dbms[$dbms])) {
         $this->io_handler->add_error_message('INST_ERR_NO_DB');
         $data_valid = false;
     }
     // Validate table prefix
     $prefix_valid = $this->database_helper->validate_table_prefix($dbms, $table_prefix);
     if (is_array($prefix_valid)) {
         foreach ($prefix_valid as $error) {
             $this->io_handler->add_error_message($error['title'], isset($error['description']) ? $error['description'] : false);
         }
         $data_valid = false;
     }
     // Try to connect to database if all provided data is valid
     if ($data_valid) {
         $connect_test = $this->database_helper->check_database_connection($dbms, $dbhost, $dbport, $dbuser, $dbpass, $dbname, $table_prefix);
         if (is_array($connect_test)) {
             foreach ($connect_test as $error) {
                 $this->io_handler->add_error_message($error['title'], isset($error['description']) ? $error['description'] : false);
             }
             $data_valid = false;
         }
     }
     return $data_valid;
 }