Source for file createdatabase.php

Documentation is available at createdatabase.php

  1. <?php
  2. /**
  3. * Upgrade the database to the latest version used by Bumblebee
  4. *
  5. @author    Stuart Prescott
  6. @copyright  Copyright Stuart Prescott
  7. @license    http://opensource.org/licenses/gpl-license.php GNU Public License
  8. @version    $Id$
  9. @package    Bumblebee
  10. @subpackage Installer
  11. */
  12.  
  13.  
  14. function getSetupDefaults({
  15.   $defaults array();
  16.   $defaults['sqlTablePrefix''';
  17.   $defaults['sqlDefaultHost''localhost';
  18.   $defaults['sqlHost']        $defaults['sqlDefaultHost'];
  19.   $defaults['sqlDefaultDB']   'bumblebeedb';
  20.   $defaults['sqlDB']          $defaults['sqlDefaultDB'];
  21.   $defaults['sqlDefaultUser''bumblebee';
  22.   $defaults['sqlUser']        $defaults['sqlDefaultUser'];
  23.   $defaults['sqlDefaultPass''bumblebeepass';
  24.   $defaults['sqlPass']        $defaults['sqlDefaultPass'];
  25.   $defaults['sqlUseDropTable''0';
  26.  
  27.   $defaults['bbDefaultAdmin']     'BumblebeeAdmin';
  28.   $defaults['bbDefaultAdminName''Queen Bee';
  29.   $defaults['bbDefaultAdminPass''defaultpassword123';
  30.   $defaults['bbAdmin']            $defaults['bbDefaultAdmin'];
  31.   $defaults['bbAdminName']        $defaults['bbDefaultAdminName'];
  32.   $defaults['bbAdminPass']        $defaults['bbDefaultAdminPass'];
  33.  
  34.   return $defaults;
  35. }
  36.  
  37. /**
  38. * Work out an SQL load file from the defaults and the user input
  39. */
  40. function constructSQL($source$replacements$includeAdmin{
  41.   $sqlSourceFile $source;
  42.  
  43.   $sqlTablePrefix       $replacements['sqlTablePrefix'];
  44.   $sqlDefaultHost       $replacements['sqlDefaultHost'];
  45.   $sqlHost              $replacements['sqlHost'];
  46.   $sqlDefaultDB         $replacements['sqlDefaultDB'];
  47.   $sqlDB                $replacements['sqlDB'];
  48.   $sqlDefaultUser       $replacements['sqlDefaultUser'];
  49.   $sqlUser              $replacements['sqlUser'];
  50.   $sqlDefaultPass       $replacements['sqlDefaultPass'];
  51.   $sqlPass              $replacements['sqlPass'];
  52.   $sqlUseDropTable      $replacements['sqlUseDropTable'];
  53.   $bbDefaultAdmin       $replacements['bbDefaultAdmin'];
  54.   $bbDefaultAdminName   $replacements['bbDefaultAdminName'];
  55.   $bbDefaultAdminPass   $replacements['bbDefaultAdminPass'];
  56.   $bbAdmin              $replacements['bbAdmin'];
  57.   $bbAdminName          $replacements['bbAdminName'];
  58.   $bbAdminPass          $replacements['bbAdminPass'];
  59.  
  60.   $sql file($sqlSourceFile);
  61.  
  62.   $sql preg_replace("/(DELETE .+ WHERE User=')$sqlDefaultUser';/",
  63.                       "$1$sqlUser';"$sql);
  64.   $sql preg_replace("/(INSERT INTO user .+)'$sqlDefaultHost','$sqlDefaultUser',\s*PASS.+\)(.+);/",
  65.                       "$1'$sqlHost','$sqlUser',PASSWORD('$sqlPass')\$2;"$sql);
  66.   // GRANT OR REVOKE PRIVS
  67.   $sql preg_replace("/(.+ ON$sqlDefaultDB\.\* (TO|FROM$sqlDefaultUser@$sqlDefaultHost;/",
  68.                       "\$1 $sqlDB.* \$2 $sqlUser@$sqlHost;"$sql);
  69.   // REVOKE ALL PRIVILEGES ON *.* FROM bumblebee;
  70.   // REVOKE GRANT OPTION ON *.* FROM bumblebee;
  71.   $sql preg_replace("/(REVOKE .+ FROM$sqlDefaultUser;/",
  72.                       "\$1 $sqlUser;"$sql);
  73.   // CREATE OR DROP DATABASE
  74.   $sql preg_replace("/^(.+) DATABASE(.*) $sqlDefaultDB/",
  75.                       "\$1 DATABASE\$2 $sqlDB"$sql);
  76.   $sql preg_replace("/USE $sqlDefaultDB;/",
  77.                       "USE $sqlDB;"$sql);
  78.  
  79.   if($sqlUseDropTable == '1'{
  80.         $sql preg_replace("/DROP TABLE IF EXISTS (.+)?;/",
  81.                       "DROP TABLE IF EXISTS $sqlTablePrefix\$1;"$sql);
  82.   else {
  83.         $sql preg_replace("/DROP TABLE IF EXISTS (.+)?;/i"''$sql);
  84.         $sql preg_replace("/DROP DATABASE IF EXISTS (.+)?;/i"''$sql);
  85.   }
  86.  
  87.   $sql preg_replace("/CREATE TABLE (.+)? /",
  88.                       "CREATE TABLE $sqlTablePrefix\$1 "$sql);
  89.   // make the admin user
  90.   $sql preg_replace("/INSERT INTO (users)/",
  91.                       "INSERT INTO $sqlTablePrefix\$1"$sql);
  92.  
  93.   $sql preg_replace("/\('$bbDefaultAdmin','$bbDefaultAdminName',MD5\('$bbDefaultAdminPass'\),1\)/",
  94.                       "('$bbAdmin','$bbAdminName','".md5($bbAdminPass)."',1);"$sql);
  95.   $sql preg_replace('/^(.*?)--.*$/',
  96.                       '$1'$sql);
  97.   $sql preg_grep('/^\s*$/'$sqlPREG_GREP_INVERT);
  98.  
  99.   $stream join($sql,'');
  100.   if ($includeAdmin{
  101.     $stream substr($streamstrpos($stream"USE $sqlDB"));
  102.     $stream "-- SQL user and database creation code removed as per user request.\n".$stream;
  103.   }
  104.  
  105.   $settingComment "-- Bumblebee SQL load file for ".$_SERVER['SERVER_NAME']."\n"
  106.                    ."-- date: ".date('r'time())."\n"
  107.                    ."-- sourced from $sqlSourceFile\n"
  108.                    ."-- database$sqlDefaultDB => $sqlDB\n"
  109.                    ."-- table prefix$sqlTablePrefix\n"
  110.                    ."--\n"
  111.                    ."-- Load this file using phpMyAdmin or on the MySQL command line tools:\n"
  112.                    ."--     mysql -p --user someuser < tables.sql\n"
  113.                    ."--\n";
  114.  
  115.   return $settingComment.$stream;
  116. }
  117.  
  118. ?>

Documentation generated on Tue, 06 Mar 2007 10:01:10 +0000 by phpDocumentor 1.3.0