]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Merge branch '1.0.x' into schema-x
authorBrion Vibber <brion@pobox.com>
Mon, 18 Oct 2010 22:26:20 +0000 (15:26 -0700)
committerBrion Vibber <brion@pobox.com>
Mon, 18 Oct 2010 22:26:20 +0000 (15:26 -0700)
1  2 
lib/installer.php

index a5588fbed6404fac095b46a1f5a164f896a29830,a9d8090110a0039d9b8ba89fa1ed4c9337bf4287..441f7266063e932ef83f84369be20ebcebf5d506
@@@ -313,48 -341,80 +313,72 @@@ abstract class Installe
      }
  
      /**
 -     * Set up a database on MySQL.
 -     * Will output status updates during the operation.
 -     * 
 -     * @param string $host
 -     * @param string $database
 -     * @param string $username
 -     * @param string $password
 -     * @return mixed array of database connection params on success, false on failure
 -     * 
 -     * @fixme escape things in the connection string in case we have a funny pass etc
 +     * Open a connection to the database.
 +     *
 +     * @param <type> $dsn
 +     * @return <type> 
       */
 -    function Mysql_Db_installer($host, $database, $username, $password)
 +    function connectDatabase($dsn)
      {
 -        $this->updateStatus("Starting installation...");
 -        $this->updateStatus("Checking database...");
 -
 -        $conn = mysqli_init();
 -        if (!$conn->real_connect($host, $username, $password)) {
 -            $this->updateStatus("Can't connect to server '$host' as '$username'.", true);
 -            return false;
 -        }
 -        $this->updateStatus("Changing to database...");
 -        if (!$conn->select_db($database)) {
 -            $this->updateStatus("Can't change to database.", true);
 -            return false;
 -        }
 +        // @fixme move this someplace more sensible
 +        //set_include_path(INSTALLDIR . '/extlib' . PATH_SEPARATOR . get_include_path());
 +        require_once 'DB.php';
 +        return DB::connect($dsn);
 +    }
  
 -        $this->updateStatus("Running database script...");
 -        $res = $this->runDbScript('statusnet.sql', $conn);
 -        if ($res === false) {
 -            $this->updateStatus("Can't run database script.", true);
 -            return false;
 -        }
 -        foreach (array('sms_carrier' => 'SMS carrier',
 -                    'notice_source' => 'notice source',
 -                    'foreign_services' => 'foreign service')
 -              as $scr => $name) {
 -            $this->updateStatus(sprintf("Adding %s data to database...", $name));
 -            $res = $this->runDbScript($scr.'.sql', $conn);
 -            if ($res === false) {
 -                $this->updateStatus(sprintf("Can't run %d script.", $name), true);
 -                return false;
 +    /**
 +     * Create core tables on the given database connection.
 +     *
 +     * @param DB_common $conn
 +     */
 +    function createCoreTables(DB_common $conn)
 +    {
 +        $schema = Schema::get($conn);
 +        $tableDefs = $this->getCoreSchema();
 +        foreach ($tableDefs as $name => $def) {
 +            if (defined('DEBUG_INSTALLER')) {
 +                echo " $name ";
              }
 +            $schema->ensureTable($name, $def);
          }
 +    }
  
 -        $sqlUrl = "mysqli://$username:$password@$host/$database";
 -        $db = array('type' => 'mysql', 'database' => $sqlUrl);
 -        return $db;
 +    /**
 +     * Fetch the core table schema definitions.
 +     *
 +     * @return array of table names => table def arrays
 +     */
 +    function getCoreSchema()
 +    {
 +        $schema = array();
 +        include INSTALLDIR . '/db/core.php';
 +        return $schema;
      }
  
+     /**
+      * Return a parseable PHP literal for the given value.
+      * This will include quotes for strings, etc.
+      *
+      * @param mixed $val
+      * @return string
+      */
+     function phpVal($val)
+     {
+         return var_export($val, true);
+     }
+     /**
+      * Return an array of parseable PHP literal for the given values.
+      * These will include quotes for strings, etc.
+      *
+      * @param mixed $val
+      * @return array
+      */
+     function phpVals($map)
+     {
+         return array_map(array($this, 'phpVal'), $map);
+     }
      /**
       * Write a stock configuration file.
       *