-- CRM-16617, added function to check valid db name
authorPradeep Nayak <pradpnayak@gmail.com>
Tue, 25 Aug 2015 21:28:32 +0000 (02:58 +0530)
committerPradeep Nayak <pradpnayak@gmail.com>
Mon, 8 Feb 2016 15:01:58 +0000 (20:31 +0530)
----------------------------------------
* CRM-16617:
  https://issues.civicrm.org/jira/browse/CRM-16617

install/index.php

index 313a91d25feea7d2dab8a1503b2a6ca2d9a8c5db..372b567125fe76ba835a7ab490ef1bba8ca6958f 100644 (file)
@@ -408,6 +408,14 @@ class InstallRequirements {
         );
       }
       $onlyRequire = ($dbName == 'Drupal') ? TRUE : FALSE;
+      $this->requireValidDBName(
+        $databaseConfig['database'],
+        array(     
+          ts("MySQL %1 Configuration", array(1 => $dbName)),
+          ts("Is the provided database name valid?"),
+          ts("The database name provided is not valid. Please use only 0-9, a-z, A-Z and _ as characters in the name."),
+        )
+      );
       $this->requireDatabaseOrCreatePermissions(
         $databaseConfig['server'],
         $databaseConfig['username'],
@@ -1273,6 +1281,25 @@ class InstallRequirements {
     return count($this->warnings);
   }
 
+  /**
+   * function to check valid db name
+   *
+   * @param $database
+   * @param $testDetails
+   */
+  public function requireValidDBName($database, $testDetails) {
+    $matches = array();
+    preg_match(
+      "/^[0-9]*[a-zA-Z_]+[a-zA-Z0-9_]*$/",
+      $database,
+      $matches
+    );
+    if (empty($matches)) {
+      $this->error($testDetails);
+      return;
+    }
+  }
+
 }
 
 /**