Ejemplo n.º 1
0
 public function create_database($username, $password)
 {
     $db = new MySQLi_connection(DB_HOSTNAME, "mysql", $username, $password);
     if ($db->connected == false) {
         $this->output->add_message("Error connecting to database.");
         return false;
     }
     $db->query("begin");
     /* Create database
      */
     $query = "create database if not exists %S character set utf8";
     if ($db->query($query, DB_DATABASE) == false) {
         $db->query("rollback");
         $this->output->add_message("Error creating database.");
         return false;
     }
     /* Create user
      */
     $query = "select count(*) as count from user where User=%s";
     if (($users = $db->execute($query, DB_USERNAME)) === false) {
         $db->query("rollback");
         $this->output->add_message("Error checking for user.");
         return false;
     }
     if ($users[0]["count"] == 0) {
         $query = "create user %s@%s identified by %s";
         if ($db->query($query, DB_USERNAME, DB_HOSTNAME, DB_PASSWORD) == false) {
             $db->query("rollback");
             $this->output->add_message("Error creating user.");
             return false;
         }
     } else {
         $login_test = new MySQLi_connection(DB_HOSTNAME, DB_DATABASE, DB_USERNAME, DB_PASSWORD);
         if ($login_test->connected == false) {
             $db->query("rollback");
             $this->output->add_message("Invalid credentials in settings/website.conf.");
             return false;
         }
     }
     /* Set access rights
      */
     $rights = array("select", "insert", "update", "delete", "create", "drop", "alter", "index", "lock tables", "create view", "show view");
     $query = "grant " . implode(", ", $rights) . " on %S.* to %s@%s";
     if ($db->query($query, DB_DATABASE, DB_USERNAME, DB_HOSTNAME) == false) {
         $db->query("rollback");
         $this->output->add_message("Error setting access rights.");
         return false;
     }
     /* Commit changes
      */
     $db->query("commit");
     $db->query("flush privileges");
     unset($db);
     return true;
 }