[pLog-svn] r5157 - in plog/trunk: . class/config class/dao class/dao/userdata class/database class/database/pdb class/database/pdb/datadict class/database/pdb/drivers class/gallery/dao config install release templates/wizard
oscar at devel.lifetype.net
oscar at devel.lifetype.net
Thu Mar 22 10:00:04 EDT 2007
Author: oscar
Date: 2007-03-22 10:00:03 -0400 (Thu, 22 Mar 2007)
New Revision: 5157
Added:
plog/trunk/class/database/pdb/datadict/pdbpgsqldatadict.class.php
plog/trunk/class/database/pdb/drivers/pdbpgsqldriver.class.php
plog/trunk/class/database/pdb/drivers/pdbpgsqlrecordset.class.php
Removed:
plog/trunk/updatedbschema.php
Modified:
plog/trunk/class/config/config.class.php
plog/trunk/class/dao/article.class.php
plog/trunk/class/dao/bloginfo.class.php
plog/trunk/class/dao/locationawaredbobject.class.php
plog/trunk/class/dao/model.class.php
plog/trunk/class/dao/userdata/baseuserdataprovider.class.php
plog/trunk/class/dao/userdata/lifetypeuserdataprovider.class.php
plog/trunk/class/dao/userinfo.class.php
plog/trunk/class/database/db.class.php
plog/trunk/class/database/pdb/datadict/pdbbasedatadict.class.php
plog/trunk/class/database/pdb/drivers/pdbdriverbase.class.php
plog/trunk/class/database/pdb/drivers/pdbmysqldriver.class.php
plog/trunk/class/database/pdb/pdb.class.php
plog/trunk/class/gallery/dao/galleryalbum.class.php
plog/trunk/config/config.properties.php
plog/trunk/install/dbschemas.properties.php
plog/trunk/release/config.properties.php.dist
plog/trunk/templates/wizard/intro.template
Log:
Just merged the postgresql driver and the changes needed to at least get LT 1.3 installed with pgsql. However I will not spend any time with this, as I currently don't see any value... I am merely merging the code so that one enterprising soul can improve upon it in the future and get LT finally running smoothly on postgres.
Modified: plog/trunk/class/config/config.class.php
===================================================================
--- plog/trunk/class/config/config.class.php 2007-03-22 13:18:28 UTC (rev 5156)
+++ plog/trunk/class/config/config.class.php 2007-03-22 14:00:03 UTC (rev 5157)
@@ -90,7 +90,7 @@
if( !isset($configInstance[$storage])) {
// now we have to instantiate the right storage class
if( $storage == "" || !array_key_exists( $storage, $storageTypes )) {
- // there is no class to implement this storage method, so we quite
+ // there is no class to implement this storage method, so we quit
// because this is quite a severe error
throw(new Exception( "Config class Exception: no storage class found for storage parameter = ".$storage ));
die();
Modified: plog/trunk/class/dao/article.class.php
===================================================================
--- plog/trunk/class/dao/article.class.php 2007-03-22 13:18:28 UTC (rev 5156)
+++ plog/trunk/class/dao/article.class.php 2007-03-22 14:00:03 UTC (rev 5157)
@@ -103,8 +103,8 @@
$this->_pk = "id";
$this->_fields = Array(
- "date" => "getDateWithoutOffset",
- "modification_date" => "getModificationDateWithoutOffset",
+ "date" => "getTimestampWithoutOffset",
+ "modification_date" => "getModificationTimestampWithoutOffset",
"user_id" => "getUserId",
"blog_id" => "getBlogId",
"status" => "getStatus",
@@ -320,6 +320,16 @@
$date = Timestamp::getDateWithOffset( $this->getDate(), -$offset );
return( $date );
}
+
+ function getTimestampWithoutOffset()
+ {
+ // get the offset
+ $offset = $this->getTimeOffset();
+ // and calculate the date without offset
+ lt_include( PLOG_CLASS_PATH."class/data/timestamp.class.php" );
+ $t = new Timestamp( Timestamp::getDateWithOffset( $this->getDate(), -$offset ));
+ return( $t );
+ }
/**
* Returns an array of UserComment objects, with all the comments that have been received for
@@ -740,6 +750,16 @@
$date = Timestamp::getDateWithOffset( $this->getModificationDate(), -$offset );
return( $date );
}
+
+ function getModificationTimestampWithoutOffset()
+ {
+ // get the offset
+ $offset = $this->getTimeOffset();
+ // and calculate the date without offset
+ lt_include( PLOG_CLASS_PATH."class/data/timestamp.class.php" );
+ $date = new Timestamp( Timestamp::getDateWithOffset( $this->getModificationDate(), -$offset ));
+ return( $date );
+ }
/**
* Returns the date when the post was last modified as a Timestamp object
Modified: plog/trunk/class/dao/bloginfo.class.php
===================================================================
--- plog/trunk/class/dao/bloginfo.class.php 2007-03-22 13:18:28 UTC (rev 5156)
+++ plog/trunk/class/dao/bloginfo.class.php 2007-03-22 14:00:03 UTC (rev 5157)
@@ -95,8 +95,8 @@
"status" => "getStatus",
"show_in_summary" => "getShowInSummary",
"blog_category_id" => "getBlogCategoryId",
- "create_date" => "getCreateDate",
- "last_update_date" => "getUpdateDate",
+ "create_date" => "getCreateDateObject",
+ "last_update_date" => "getUpdateDateObject",
"num_posts" => "getTotalPosts",
"num_comments" => "getTotalComments",
"num_trackbacks" => "getTotalTrackbacks",
Modified: plog/trunk/class/dao/locationawaredbobject.class.php
===================================================================
--- plog/trunk/class/dao/locationawaredbobject.class.php 2007-03-22 13:18:28 UTC (rev 5156)
+++ plog/trunk/class/dao/locationawaredbobject.class.php 2007-03-22 14:00:03 UTC (rev 5157)
@@ -11,6 +11,12 @@
var $_locationId;
var $_location;
+ function LocationAwareDbObject()
+ {
+ $this->_location = null;
+ $this->_locationId = 0;
+ }
+
/**
* @return Location
*/
Modified: plog/trunk/class/dao/model.class.php
===================================================================
--- plog/trunk/class/dao/model.class.php 2007-03-22 13:18:28 UTC (rev 5156)
+++ plog/trunk/class/dao/model.class.php 2007-03-22 14:00:03 UTC (rev 5157)
@@ -342,7 +342,7 @@
$fieldsString = '';
$fieldsValuesString = '';
- $sql = "INSERT INTO `".$this->table."` (";
+ $sql = "INSERT INTO ".$this->table." (";
foreach ($fields as $field => $getter)
{
@@ -356,7 +356,7 @@
elseif( is_bool( $value )) $value = (int)$value; // convert the bool to '1' or '0'
elseif( is_object( $value )) {
if( strtolower(get_class( $value )) == "timestamp" )
- $value = $value->getTimestamp();
+ $value = $value->getIsoDate();
else
$value = serialize( $value );
}
@@ -365,7 +365,7 @@
}
}
- $sql .= substr($fieldsString, 0, -2) . ") VALUES (".substr($fieldsValuesString, 0, -2).")";
+ $sql .= substr($fieldsString, 0, -2) . ") VALUES (".substr($fieldsValuesString, 0, -2).")";
$result = $this->Execute( $sql );
if( !$result )
@@ -393,18 +393,18 @@
lt_include( PLOG_CLASS_PATH."class/database/db.class.php" );
$fields = $dbObject->getFieldGetters();
- $sql = "UPDATE `".$this->table."` SET ";
+ $sql = "UPDATE ".$this->table." SET ";
foreach ($fields as $field => $getter)
{
$value = $dbObject->$getter();
if( is_array( $value )) $value = serialize( $value );
elseif( strtolower(get_class( $value )) == "timestamp" )
- $value = $value->getTimestamp();
+ $value = $value->getIsoDate();
elseif( is_object( $value )) $value = serialize( $value );
$value = Db::qstr($value);
- $sql .= "`" . $field . "`='" . $value . "', ";
+ $sql .= $field . "='" . $value . "', ";
}
$sql = substr($sql, 0, -2) . " WHERE id = '".Db::qstr($dbObject->getId())."'";
Modified: plog/trunk/class/dao/userdata/baseuserdataprovider.class.php
===================================================================
--- plog/trunk/class/dao/userdata/baseuserdataprovider.class.php 2007-03-22 13:18:28 UTC (rev 5156)
+++ plog/trunk/class/dao/userdata/baseuserdataprovider.class.php 2007-03-22 14:00:03 UTC (rev 5157)
@@ -145,7 +145,7 @@
isset( $query_result["properties"] ) ? $properties = unserialize( $query_result["properties"] ) : $properties = Array();
- $userInfo = new UserInfo( $query_result["user"],
+ $userInfo = new UserInfo( $query_result["username"],
$query_result["password"],
$query_result["email"],
$query_result["about"],
Modified: plog/trunk/class/dao/userdata/lifetypeuserdataprovider.class.php
===================================================================
--- plog/trunk/class/dao/userdata/lifetypeuserdataprovider.class.php 2007-03-22 13:18:28 UTC (rev 5156)
+++ plog/trunk/class/dao/userdata/lifetypeuserdataprovider.class.php 2007-03-22 14:00:03 UTC (rev 5157)
@@ -68,7 +68,7 @@
*/
function getUserInfoFromUsername( $username )
{
- $user = $this->get( "user", $username, CACHE_USERIDBYNAME, Array( CACHE_USERINFO => "getId" ));
+ $user = $this->get( "username", $username, CACHE_USERIDBYNAME, Array( CACHE_USERINFO => "getId" ));
if( $user ) {
if( $user->getUsername() != $username ) {
$this->log->error( "MySQL returned object (".$user->getId().",".$user->getUsername().") for username = ".$username );
@@ -149,7 +149,7 @@
function buildSearchCondition( $searchTerms )
{
$searchTerms = trim( $searchTerms );
- $searchCond = "(user LIKE '%".Db::qstr($searchTerms)."%'
+ $searchCond = "(username LIKE '%".Db::qstr($searchTerms)."%'
OR full_name LIKE '%".Db::qstr($searchTerms)."%' OR
email LIKE '%".Db::qstr($searchTerms)."%')";
@@ -320,7 +320,7 @@
// prepare the query string
$searchTerms = SearchEngine::adaptSearchString( $searchTerms );
- return( "(user LIKE '%".$searchTerms."%' OR full_name LIKE '%".$searchTerms."%')");
+ return( "(username LIKE '%".$searchTerms."%' OR full_name LIKE '%".$searchTerms."%')");
}
}
?>
Modified: plog/trunk/class/dao/userinfo.class.php
===================================================================
--- plog/trunk/class/dao/userinfo.class.php 2007-03-22 13:18:28 UTC (rev 5156)
+++ plog/trunk/class/dao/userinfo.class.php 2007-03-22 14:00:03 UTC (rev 5157)
@@ -63,7 +63,7 @@
$this->_pk = "id";
$this->_fields = Array(
- "user" => "getUsername",
+ "username" => "getUsername",
"password" => "getMD5Password",
"email" => "getEmail",
"full_name" => "getFullName",
Modified: plog/trunk/class/database/db.class.php
===================================================================
--- plog/trunk/class/database/db.class.php 2007-03-22 13:18:28 UTC (rev 5156)
+++ plog/trunk/class/database/db.class.php 2007-03-22 14:00:03 UTC (rev 5157)
@@ -1,5 +1,7 @@
<?php
+ define( "DEFAULT_DATABASE_DRIVER", "mysql" );
+
/**
* \defgroup Database
*
@@ -60,8 +62,8 @@
// we need to connect to the db
$fileConfig = new ConfigFileStorage();
- //$db = NewADOConnection('mysql');
- $db = PDb::getDriver('mysql');
+ $driver = $fileConfig->getValue( "db_driver", DEFAULT_DATABASE_DRIVER );
+ $db = PDb::getDriver( $driver );
$username = $fileConfig->getValue( "db_username" );
$password = $fileConfig->getValue( "db_password" );
Modified: plog/trunk/class/database/pdb/datadict/pdbbasedatadict.class.php
===================================================================
--- plog/trunk/class/database/pdb/datadict/pdbbasedatadict.class.php 2007-03-22 13:18:28 UTC (rev 5156)
+++ plog/trunk/class/database/pdb/datadict/pdbbasedatadict.class.php 2007-03-22 14:00:03 UTC (rev 5157)
@@ -520,8 +520,8 @@
$tsql = $this->_Triggers($tabname,$taboptions);
foreach($tsql as $s) $sql[] = $s;
- foreach($idxs as $i) $sql[] = $i;
-
+ //foreach($idxs as $i) $sql[] = $i;
+
return $sql;
}
@@ -615,7 +615,7 @@
case '0':
case 'NAME': $fname = $v; break;
case '1':
- case 'TYPE': $ty = $v; $ftype = $this->ActualType(strtoupper($v)); break;
+ case 'TYPE': /*print("attr = $attr - v = $v<br/>")*/;$ty = $v; $ftype = $this->ActualType(strtoupper($v)); break;
case 'SIZE':
$dotat = strpos($v,'.'); if ($dotat === false) $dotat = strpos($v,',');
@@ -690,14 +690,16 @@
$fdefault = "'".$fdefault."'";
}
}
+
$suffix = $this->_CreateSuffix($fname,$ftype,$fnotnull,$fdefault,$fautoinc,$fconstraint,$funsigned);
if ($widespacing) $fname = str_pad($fname,24);
+
$lines[$fid] = $fname.' '.$ftype.$suffix;
-
+
if ($fautoinc) $this->autoIncrement = true;
} // foreach $flds
-
+
return array($lines,$pkey);
}
@@ -809,7 +811,7 @@
function _TableSQL($tabname,$lines,$pkey,$tableoptions)
{
$sql = array();
-
+
if (isset($tableoptions['REPLACE']) || isset ($tableoptions['DROP'])) {
$sql[] = sprintf($this->dropTable,$tabname);
if ($this->autoIncrement) {
@@ -833,7 +835,7 @@
$s .= "\n".$tableoptions[$this->upperName.'_CONSTRAINTS'];
$s .= "\n) ";
- if (isset($tableoptions[$this->upperName])) $s .= $tableoptions[$this->upperName];
+ if (isset($tableoptions[$this->upperName][strtolower($this->upperName)])) $s .= $tableoptions[$this->upperName][strtolower($this->upperName)];
$sql[] = $s;
return $sql;
Copied: plog/trunk/class/database/pdb/datadict/pdbpgsqldatadict.class.php (from rev 5156, plog/branches/lifetype-1.3-postgres/class/database/pdb/datadict/pdbpgsqldatadict.class.php)
===================================================================
--- plog/trunk/class/database/pdb/datadict/pdbpgsqldatadict.class.php (rev 0)
+++ plog/trunk/class/database/pdb/datadict/pdbpgsqldatadict.class.php 2007-03-22 14:00:03 UTC (rev 5157)
@@ -0,0 +1,381 @@
+<?php
+
+/**
+ V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved.
+ Released under both BSD license and Lesser GPL library license.
+ Whenever there is any discrepancy between the two licenses,
+ the BSD license will take precedence.
+
+ Set tabs to 4 for best viewing.
+
+*/
+
+lt_include( PLOG_CLASS_PATH."class/database/pdb/datadict/pdbbasedatadict.class.php" );
+
+class PDbPgSQLDataDict extends PDbBaseDataDict
+{
+
+ var $databaseType = 'postgres';
+ var $seqField = false;
+ var $seqPrefix = 'SEQ_';
+ var $addCol = ' ADD COLUMN';
+ var $quote = '"';
+ var $renameTable = 'ALTER TABLE %s RENAME TO %s'; // at least since 7.1
+ var $dropTable = 'DROP TABLE %s CASCADE';
+
+ function MetaType($t,$len=-1,$fieldobj=false)
+ {
+ if (is_object($t)) {
+ $fieldobj = $t;
+ $t = $fieldobj->type;
+ $len = $fieldobj->max_length;
+ }
+ $is_serial = is_object($fieldobj) && $fieldobj->primary_key && $fieldobj->unique &&
+ $fieldobj->has_default && substr($fieldobj->default_value,0,8) == 'nextval(';
+
+ switch (strtoupper($t)) {
+ case 'INTERVAL':
+ case 'CHAR':
+ case 'CHARACTER':
+ case 'VARCHAR':
+ case 'NAME':
+ case 'BPCHAR':
+ if ($len <= $this->blobSize) return 'C';
+
+ case 'TEXT':
+ return 'X';
+
+ case 'IMAGE': // user defined type
+ case 'BLOB': // user defined type
+ case 'BIT': // This is a bit string, not a single bit, so don't return 'L'
+ case 'VARBIT':
+ case 'BYTEA':
+ return 'B';
+
+ case 'BOOL':
+ case 'BOOLEAN':
+ return 'L';
+
+ case 'DATE':
+ return 'D';
+
+ case 'TIME':
+ case 'DATETIME':
+ case 'TIMESTAMP':
+ case 'TIMESTAMPTZ':
+ return 'T';
+
+ case 'INTEGER': return !$is_serial ? 'I' : 'R';
+ case 'SMALLINT':
+ case 'INT2': return !$is_serial ? 'I2' : 'R';
+ case 'INT4': return !$is_serial ? 'I4' : 'R';
+ case 'BIGINT':
+ case 'INT8': return !$is_serial ? 'I8' : 'R';
+
+ case 'OID':
+ case 'SERIAL':
+ return 'R';
+
+ case 'FLOAT4':
+ case 'FLOAT8':
+ case 'DOUBLE PRECISION':
+ case 'REAL':
+ return 'F';
+
+ default:
+ return 'N';
+ }
+ }
+
+ function ActualType($meta)
+ {
+ switch($meta) {
+ case 'C': return 'VARCHAR';
+ case 'XL':
+ case 'X': return 'TEXT';
+
+ case 'C2': return 'VARCHAR';
+ case 'X2': return 'TEXT';
+
+ case 'B': return 'BYTEA';
+
+ case 'D': return 'DATE';
+ case 'T': return 'TIMESTAMP';
+
+ case 'L': return 'BOOLEAN';
+ case 'I': return 'INTEGER';
+ case 'I1': return 'SMALLINT';
+ case 'I2': return 'INT2';
+ case 'I4': return 'INT4';
+ case 'I8': return 'INT8';
+
+ case 'F': return 'FLOAT8';
+ case 'N': return 'NUMERIC';
+ default:
+ return $meta;
+ }
+ }
+
+ /**
+ * Adding a new Column
+ *
+ * reimplementation of the default function as postgres does NOT allow to set the default in the same statement
+ *
+ * @param string $tabname table-name
+ * @param string $flds column-names and types for the changed columns
+ * @return array with SQL strings
+ */
+ function AddColumnSQL($tabname, $flds)
+ {
+ $tabname = $this->TableName ($tabname);
+ $sql = array();
+ list($lines,$pkey) = $this->_GenFields($flds);
+ $alter = 'ALTER TABLE ' . $tabname . $this->addCol . ' ';
+ foreach($lines as $v) {
+ if (($not_null = preg_match('/NOT NULL/i',$v))) {
+ $v = preg_replace('/NOT NULL/i','',$v);
+ }
+ if (preg_match('/^([^ ]+) .*DEFAULT ([^ ]+)/',$v,$matches)) {
+ list(,$colname,$default) = $matches;
+ $sql[] = $alter . str_replace('DEFAULT '.$default,'',$v);
+ $sql[] = 'UPDATE '.$tabname.' SET '.$colname.'='.$default;
+ $sql[] = 'ALTER TABLE '.$tabname.' ALTER COLUMN '.$colname.' SET DEFAULT ' . $default;
+ } else {
+ $sql[] = $alter . $v;
+ }
+ if ($not_null) {
+ list($colname) = explode(' ',$v);
+ $sql[] = 'ALTER TABLE '.$tabname.' ALTER COLUMN '.$colname.' SET NOT NULL';
+ }
+ }
+ return $sql;
+ }
+
+ /**
+ * Change the definition of one column
+ *
+ * Postgres can't do that on it's own, you need to supply the complete defintion of the new table,
+ * to allow, recreating the table and copying the content over to the new table
+ * @param string $tabname table-name
+ * @param string $flds column-name and type for the changed column
+ * @param string $tableflds complete defintion of the new table, eg. for postgres, default ''
+ * @param array/ $tableoptions options for the new table see CreateTableSQL, default ''
+ * @return array with SQL strings
+ */
+ function AlterColumnSQL($tabname, $flds, $tableflds='',$tableoptions='')
+ {
+ if (!$tableflds) {
+ die("AlterColumnSQL needs a complete table-definiton for PostgreSQL");
+ }
+ return $this->_recreate_copy_table($tabname,False,$tableflds,$tableoptions);
+ }
+
+ /**
+ * Drop one column
+ *
+ * Postgres < 7.3 can't do that on it's own, you need to supply the complete defintion of the new table,
+ * to allow, recreating the table and copying the content over to the new table
+ * @param string $tabname table-name
+ * @param string $flds column-name and type for the changed column
+ * @param string $tableflds complete defintion of the new table, eg. for postgres, default ''
+ * @param array/ $tableoptions options for the new table see CreateTableSQL, default ''
+ * @return array with SQL strings
+ */
+ function DropColumnSQL($tabname, $flds, $tableflds='',$tableoptions='')
+ {
+ $has_drop_column = 7.3 <= (float) @$this->serverInfo['version'];
+ if (!$has_drop_column && !$tableflds) {
+ die("DropColumnSQL needs complete table-definiton for PostgreSQL < 7.3");
+ return array();
+ }
+ if ($has_drop_column) {
+ return parent::DropColumnSQL($tabname, $flds);
+ }
+ return $this->_recreate_copy_table($tabname,$flds,$tableflds,$tableoptions);
+ }
+
+ /**
+ * Save the content into a temp. table, drop and recreate the original table and copy the content back in
+ *
+ * We also take care to set the values of the sequenz and recreate the indexes.
+ * All this is done in a transaction, to not loose the content of the table, if something went wrong!
+ * @internal
+ * @param string $tabname table-name
+ * @param string $dropflds column-names to drop
+ * @param string $tableflds complete defintion of the new table, eg. for postgres
+ * @param array/string $tableoptions options for the new table see CreateTableSQL, default ''
+ * @return array with SQL strings
+ */
+ function _recreate_copy_table($tabname,$dropflds,$tableflds,$tableoptions='')
+ {
+ if ($dropflds && !is_array($dropflds)) $dropflds = explode(',',$dropflds);
+ $copyflds = array();
+ foreach($this->MetaColumns($tabname) as $fld) {
+ if (!$dropflds || !in_array($fld->name,$dropflds)) {
+ // we need to explicit convert varchar to a number to be able to do an AlterColumn of a char column to a nummeric one
+ if (preg_match('/'.$fld->name.' (I|I2|I4|I8|N|F)/i',$tableflds,$matches) &&
+ in_array($fld->type,array('varchar','char','text','bytea'))) {
+ $copyflds[] = "to_number($fld->name,'S9999999999999D99')";
+ } else {
+ $copyflds[] = $fld->name;
+ }
+ // identify the sequence name and the fld its on
+ if ($fld->primary_key && $fld->has_default &&
+ preg_match("/nextval\('([^']+)'::text\)/",$fld->default_value,$matches)) {
+ $seq_name = $matches[1];
+ $seq_fld = $fld->name;
+ }
+ }
+ }
+ $copyflds = implode(', ',$copyflds);
+
+ $tempname = $tabname.'_tmp';
+ $aSql[] = 'BEGIN'; // we use a transaction, to make sure not to loose the content of the table
+ $aSql[] = "SELECT * INTO TEMPORARY TABLE $tempname FROM $tabname";
+ $aSql = array_merge($aSql,$this->DropTableSQL($tabname));
+ $aSql = array_merge($aSql,$this->CreateTableSQL($tabname,$tableflds,$tableoptions));
+ $aSql[] = "INSERT INTO $tabname SELECT $copyflds FROM $tempname";
+ if ($seq_name && $seq_fld) { // if we have a sequence we need to set it again
+ $seq_name = $tabname.'_'.$seq_fld.'_seq'; // has to be the name of the new implicit sequence
+ $aSql[] = "SELECT setval('$seq_name',MAX($seq_fld)) FROM $tabname";
+ }
+ $aSql[] = "DROP TABLE $tempname";
+ // recreate the indexes, if they not contain one of the droped columns
+ foreach($this->MetaIndexes($tabname) as $idx_name => $idx_data)
+ {
+ if (substr($idx_name,-5) != '_pkey' && (!$dropflds || !count(array_intersect($dropflds,$idx_data['columns'])))) {
+ $aSql = array_merge($aSql,$this->CreateIndexSQL($idx_name,$tabname,$idx_data['columns'],
+ $idx_data['unique'] ? array('UNIQUE') : False));
+ }
+ }
+ $aSql[] = 'COMMIT';
+ return $aSql;
+ }
+
+ function DropTableSQL($tabname)
+ {
+ $sql = parent::DropTableSQL($tabname);
+
+ $drop_seq = $this->_DropAutoIncrement($tabname);
+ if ($drop_seq) $sql[] = $drop_seq;
+
+ return $sql;
+ }
+
+ // return string must begin with space
+ function _CreateSuffix($fname, &$ftype, $fnotnull,$fdefault,$fautoinc,$fconstraint)
+ {
+ if ($fautoinc) {
+ $ftype = 'SERIAL';
+ return '';
+ }
+ $suffix = '';
+ if (strlen($fdefault)) $suffix .= " DEFAULT $fdefault";
+ if ($fnotnull) $suffix .= ' NOT NULL';
+ if ($fconstraint) $suffix .= ' '.$fconstraint;
+ return $suffix;
+ }
+
+ // search for a sequece for the given table (asumes the seqence-name contains the table-name!)
+ // if yes return sql to drop it
+ // this is still necessary if postgres < 7.3 or the SERIAL was created on an earlier version!!!
+ function _DropAutoIncrement($tabname)
+ {
+ $tabname = $this->connection->quote('%'.$tabname.'%');
+
+ $seq = $this->connection->GetOne("SELECT relname FROM pg_class WHERE NOT relname ~ 'pg_.*' AND relname LIKE $tabname AND relkind='S'");
+
+ // check if a tables depends on the sequenz and it therefor cant and dont need to be droped separatly
+ if (!$seq || $this->connection->GetOne("SELECT relname FROM pg_class JOIN pg_depend ON pg_class.relfilenode=pg_depend.objid WHERE relname='$seq' AND relkind='S' AND deptype='i'")) {
+ return False;
+ }
+ return "DROP SEQUENCE ".$seq;
+ }
+
+ /*
+ CREATE [ [ LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name (
+ { column_name data_type [ DEFAULT default_expr ] [ column_constraint [, ... ] ]
+ | table_constraint } [, ... ]
+ )
+ [ INHERITS ( parent_table [, ... ] ) ]
+ [ WITH OIDS | WITHOUT OIDS ]
+ where column_constraint is:
+ [ CONSTRAINT constraint_name ]
+ { NOT NULL | NULL | UNIQUE | PRIMARY KEY |
+ CHECK (expression) |
+ REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL ]
+ [ ON DELETE action ] [ ON UPDATE action ] }
+ [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
+ and table_constraint is:
+ [ CONSTRAINT constraint_name ]
+ { UNIQUE ( column_name [, ... ] ) |
+ PRIMARY KEY ( column_name [, ... ] ) |
+ CHECK ( expression ) |
+ FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ]
+ [ MATCH FULL | MATCH PARTIAL ] [ ON DELETE action ] [ ON UPDATE action ] }
+ [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
+ */
+
+
+ /*
+ CREATE [ UNIQUE ] INDEX index_name ON table
+[ USING acc_method ] ( column [ ops_name ] [, ...] )
+[ WHERE predicate ]
+CREATE [ UNIQUE ] INDEX index_name ON table
+[ USING acc_method ] ( func_name( column [, ... ]) [ ops_name ] )
+[ WHERE predicate ]
+ */
+ function _IndexSQL($idxname, $tabname, $flds, $idxoptions)
+ {
+ $sql = array();
+
+ if ( isset($idxoptions['REPLACE']) || isset($idxoptions['DROP']) ) {
+ $sql[] = sprintf ($this->dropIndex, $idxname, $tabname);
+ if ( isset($idxoptions['DROP']) )
+ return $sql;
+ }
+
+ if ( empty ($flds) ) {
+ return $sql;
+ }
+
+ $unique = isset($idxoptions['UNIQUE']) ? ' UNIQUE' : '';
+
+ $s = 'CREATE' . $unique . ' INDEX ' . $idxname . ' ON ' . $tabname . ' ';
+
+ if (isset($idxoptions['HASH']))
+ $s .= 'USING HASH ';
+
+ if ( isset($idxoptions[$this->upperName]) )
+ $s .= $idxoptions[$this->upperName];
+
+ if ( is_array($flds) )
+ $flds = implode(', ',$flds);
+ $s .= '(' . $flds . ')';
+ $sql[] = $s;
+
+ return $sql;
+ }
+
+ function _GetSize($ftype, $ty, $fsize, $fprec)
+ {
+ if (strlen($fsize) && $ty != 'X' && $ty != 'B' && $ty != 'I' && $ty != 'I1' && strpos($ftype,'(') === false) {
+ $ftype .= "(".$fsize;
+ if (strlen($fprec)) $ftype .= ",".$fprec;
+ $ftype .= ')';
+ }
+ return $ftype;
+ }
+
+ function NameQuote($name = NULL)
+ {
+ $name = parent::NameQuote( $name );
+
+ if( $name == "user" ) {
+ $name = "\"user\"";
+ }
+
+ return( $name );
+ }
+}
+?>
\ No newline at end of file
Modified: plog/trunk/class/database/pdb/drivers/pdbdriverbase.class.php
===================================================================
--- plog/trunk/class/database/pdb/drivers/pdbdriverbase.class.php 2007-03-22 13:18:28 UTC (rev 5156)
+++ plog/trunk/class/database/pdb/drivers/pdbdriverbase.class.php 2007-03-22 14:00:03 UTC (rev 5157)
@@ -424,5 +424,29 @@
{
return( false );
}
+
+ /**
+ * Returns the server's character set
+ */
+ function getServerCharacterSet()
+ {
+ return( "" );
+ }
+
+ /**
+ * Returns the given database's character set
+ */
+ function getDatabaseCharacterSet( $dbName )
+ {
+ return( false );
+ }
+
+ /**
+ * Returns an array with the available character sets
+ */
+ function getAvailableCharacterSets()
+ {
+ return( Array());
+ }
}
?>
Modified: plog/trunk/class/database/pdb/drivers/pdbmysqldriver.class.php
===================================================================
--- plog/trunk/class/database/pdb/drivers/pdbmysqldriver.class.php 2007-03-22 13:18:28 UTC (rev 5156)
+++ plog/trunk/class/database/pdb/drivers/pdbmysqldriver.class.php 2007-03-22 14:00:03 UTC (rev 5157)
@@ -183,5 +183,75 @@
{
return( $this->_charset );
}
+
+
+ /**
+ * Returns the character sets available in the server
+ */
+ function getAvailableCharacterSets()
+ {
+ // check mysql version first. Version lower than 4.1 doesn't support utf8
+ $serverVersion = mysql_get_server_info( $this->_res );
+ $version = explode( '.', $serverVersion );
+ if ( $version[0] < 4 ) return false;
+ if ( ( $version[0] == 4 ) && ( $version[1] == 0 ) ) return false;
+
+ // check if utf8 support was compiled in
+ $result = mysql_query( "SHOW CHARACTER SET", $this->_res );
+ if( $result )
+ {
+ if( mysql_num_rows($result) > 0 ) {
+ // iterate through resultset
+ $availableCharacterSets = array();
+ while( $row = mysql_fetch_array( $result, MYSQL_ASSOC ) )
+ {
+ array_push( $availableCharacterSets, $row['Charset'] );
+ }
+ return $availableCharacterSets;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Returns the database character set
+ */
+ function getDatabaseCharacterSet( $dbName )
+ {
+ // We use a SHOW CREATE DATABASE command to show the original
+ // SQL character set when DB was created.
+ $result = mysql_query( "SHOW CREATE DATABASE `".$dbName."`", $this->_res );
+ if( $result )
+ {
+ if( mysql_num_rows( $result ) < 0 ) {
+ // The specified db name is wrong!
+ return false;
+ }
+ $dbInfo = mysql_fetch_row( $result );
+ $pattern = '/40100 DEFAULT CHARACTER SET (\w+) /';
+ if( ( preg_match( $pattern, $dbInfo[1], $match ) > 0 ) ) {
+ return $match[1];
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Returns the server's character set
+ */
+ function getServerCharacterSet()
+ {
+ // We use a SHOW CREATE DATABASE command to show the original
+ // SQL character set when DB was created.
+ $result = mysql_query( "SHOW VARIABLES LIKE 'character_set_server'", $this->_res );
+ if( $result )
+ {
+ if( mysql_num_rows( $result ) > 0 ) {
+ $row = mysql_fetch_array( $result, MYSQL_ASSOC );
+ return $row['Value'];
+ }
+ }
+ return false;
+ }
}
?>
\ No newline at end of file
Copied: plog/trunk/class/database/pdb/drivers/pdbpgsqldriver.class.php (from rev 5156, plog/branches/lifetype-1.3-postgres/class/database/pdb/drivers/pdbpgsqldriver.class.php)
===================================================================
--- plog/trunk/class/database/pdb/drivers/pdbpgsqldriver.class.php (rev 0)
+++ plog/trunk/class/database/pdb/drivers/pdbpgsqldriver.class.php 2007-03-22 14:00:03 UTC (rev 5157)
@@ -0,0 +1,257 @@
+<?php
+
+ lt_include( PLOG_CLASS_PATH."class/database/pdb/drivers/pdbdriverbase.class.php" );
+ lt_include( PLOG_CLASS_PATH."class/database/pdb/drivers/pdbpgsqlrecordset.class.php" );
+ lt_include( PLOG_CLASS_PATH."class/logger/loggermanager.class.php" );
+
+ /**
+ * \ingroup PDb
+ *
+ * PostgreSQL driver for PDb
+ */
+ class PDbPgSQLDriver extends PDbDriverBase
+ {
+
+ var $_res;
+ var $_dbname;
+ var $_charset;
+ var $_lastInsertTable;
+
+ /**
+ * Constructor of the driver. Doesn't do much.
+ */
+ function PDbPgSQLDriver()
+ {
+ $this->PDbDriverBase();
+
+ // the driver name
+ $this->_type = 'pgsql';
+
+ // character set, 'default' until one is explicitely set
+ $this->_charset = 'default';
+
+ $this->_lastInsertTable = "";
+
+ $this->log =& LoggerManager::getLogger();
+ }
+
+ /**
+ * @see PDbDriverBase::Execute()
+ */
+ function Execute( $query, $page = -1, $itemsPerPage = 15 )
+ {
+ global $__pdb_num_queries;
+
+ if( $page > -1 ) {
+ $start = (($page - 1) * $itemsPerPage);
+ $limits = " LIMIT $start OFFSET $itemsPerPage";
+ $query .= " $limits";
+ }
+
+ // is the query an INSERT?
+ if( substr( $query, 0,6 ) == "INSERT" ) {
+ // then save the table name so that we can automatically use it
+ // when calling PDbPgSQL::Insert_ID()
+ if( preg_match( "/^INSERT *INTO *([a-zA-Z0-9_\-]+).*$/", $query, $matches )) {
+ $this->_lastInsertTable = $matches[1];
+
+ $this->log->debug("last insert table: ".$this->_lastInsertTable."<br/>");
+ }
+ }
+
+ // execute the query and see whether it was incorrect
+ $this->_debugQuery( $query );
+
+ // increment the number of queries executed so far, regardless of what they were
+ $__pdb_num_queries++;
+
+ $result = pg_query( $this->_res, $query );
+ if( !$result ) {
+ if( $this->_debug ) {
+ print("<hr/>ERROR MESSAGE: ".$this->ErrorMsg()."<br/>");
+ }
+ return false;
+ }
+
+ // if not, create a RecordSet based on it
+ $rs = new PdbPgSQLRecordSet( $result );
+ return( $rs );
+ }
+
+ /**
+ * @see PDbDriverBase::Connect()
+ *
+ * PDBDriverBase::Connect() does not need a $dbname parameter but PgSQL does,
+ * so we're going to use the 'postgres' database that should technically be
+ * available in all system (as far as I can tell)
+ */
+ function Connect( $host, $username, $password, $dbname = null, $dbcharset = null )
+ {
+ if( $dbname == null )
+ $dbname = "postgres";
+
+ PDbDriverBase::Connect( $host, $username, $password, $dbname );
+
+ // try to connect and quit if unsuccessful
+ $connectStr = "host=$host user=$username password=$password";
+ // if we have a database name, we can provide it in the connection string
+ if( $dbname )
+ $connectStr .= " dbname=$dbname";
+
+ $this->log->debug("Connection string = $connectStr<br/>");
+
+ $this->_res = pg_connect( $connectStr);
+ if( !$this->_res )
+ return false;
+
+ $this->log->debug("Connection successful!<br/>");
+
+ return( true );
+ }
+
+ /**
+ * @see PDbDriverBase::PConnect()
+ *
+ * PDBDriverBase::Connect() does not need a $dbname parameter but PgSQL does,
+ * so we're going to use the 'postgres' database that should technically be
+ * available in all system (as far as I can tell)
+ */
+ function PConnect( $host, $username, $password, $dbname = null, $dbcharset = null )
+ {
+ if( $dbname == null )
+ $dbname = "postgres";
+
+ PDbDriverBase::Connect( $host, $username, $password, $dbname );
+
+ // try to connect and quit if unsuccessful
+ $connectStr = "host=$host user=$username password=$password";
+ // if we have a database name, we can provide it in the connection string
+ if( $dbname )
+ $connectStr .= " dbname=$dbname";
+
+ $this->log->debug("Connection string = $connectStr<br/>");
+
+ $this->_res = pg_connect( $connectStr);
+ if( !$this->_res )
+ return false;
+
+ $this->log->debug("Connection successful!<br/>");
+
+ return( true );
+ }
+
+ /**
+ * @see PDbDriverBase::Close()
+ */
+ function Close()
+ {
+ return( pg_close( $this->_res ));
+ }
+
+ /**
+ * @see PDbDriverBase::ErrorMsg()
+ */
+ function ErrorMsg()
+ {
+ return( pg_last_error( $this->_res ));
+ }
+
+ /**
+ * @see PDbDriverBase::Insert_ID()
+ *
+ * PostrgreSQL is a bit more convoluted than MySQL in order to get the id of the element that was
+ * last inserted in a table
+ */
+ function Insert_ID( $field = "id", $table = "" )
+ {
+ if( $table == "" )
+ $table = $this->_lastInsertTable;
+
+ // name of the sequence as generated by pgsql
+ $seqName = "{$table}_{$field}_seq";
+
+ // query to fetch the sequence number
+ $query = "SELECT last_value AS insert_id FROM $seqName";
+
+ $res = $this->Execute( $query );
+ $row = $res->FetchRow();
+
+ isset( $row["insert_id"] ) ? $insertId = $row["insert_id"] : $insertId = -1;
+
+ $this->log->debug("Returning insert id: ".$insertId."<br/>");
+
+ return( $insertId );
+ }
+
+ /**
+ * @see PDbDriverBase::Affected_Rows()
+ */
+ function Affected_Rows()
+ {
+ return( pg_cmdtuples( $this->_res ));
+ }
+
+ /**
+ * @see PDbDriverBase::getDriverDataDictionary()
+ */
+ function getDriverDataDictionary()
+ {
+ return( PDbDriverBase::getDriverDataDictionary( 'pgsql' ));
+ }
+
+ /**
+ * Returns true if the current database supports FULLTEXT searches. This is
+ * currently not supported by the PostgreSQL driver and always returns false.
+ */
+ function isFullTextSupported()
+ {
+ return( false );
+ }
+
+ /**
+ * Return the name of the character set currently being used
+ *
+ * @see PDbDriverBase::getDbCharacterSet()
+ */
+ function getDbCharacterSet()
+ {
+ return( $this->_charset );
+ }
+
+ /**
+ * Returns the server's character set
+ */
+ function getServerCharacterSet()
+ {
+ /**
+ * :TODO:
+ * Find out how to do this in PostgreSQL
+ */
+ return( "" );
+ }
+
+ /**
+ * Returns the given database's character set
+ */
+ function getDatabaseCharacterSet( $dbName )
+ {
+ /**
+ * :TODO:
+ * Find out how to do this in PostgreSQL
+ */
+ return( false );
+ }
+
+ /**
+ * Returns an array with the available character sets
+ */
+ function getAvailableCharacterSets()
+ {
+ /**
+ * :TODO:
+ * Find out how to do this in PostgreSQL
+ */
+ return( Array( "default" ));
+ }
+ }
+?>
\ No newline at end of file
Copied: plog/trunk/class/database/pdb/drivers/pdbpgsqlrecordset.class.php (from rev 5156, plog/branches/lifetype-1.3-postgres/class/database/pdb/drivers/pdbpgsqlrecordset.class.php)
===================================================================
--- plog/trunk/class/database/pdb/drivers/pdbpgsqlrecordset.class.php (rev 0)
+++ plog/trunk/class/database/pdb/drivers/pdbpgsqlrecordset.class.php 2007-03-22 14:00:03 UTC (rev 5157)
@@ -0,0 +1,47 @@
+<?php
+
+ lt_include( PLOG_CLASS_PATH."class/database/pdb/drivers/pdbrecordset.class.php" );
+
+ /**
+ * \ingroup PDb
+ *
+ * PostgreSQL record sets.
+ *
+ * @see PDbRecordSet
+ */
+ class PdbPgSQLRecordSet extends PdbRecordSet
+ {
+
+ /**
+ * @see PDbRecordSet
+ */
+ function PdbPgSQLRecordSet( $dbRes = null )
+ {
+ $this->PdbRecordSet( $dbRes );
+ }
+
+ /**
+ * @see PDbRecordSet::FetchRow()
+ */
+ function FetchRow()
+ {
+ return( pg_fetch_assoc( $this->_dbRes ));
+ }
+
+ /**
+ * @see PDbRecordSet::RecordCount()
+ */
+ function RecordCount()
+ {
+ return( pg_num_rows( $this->_dbRes ));
+ }
+
+ /**
+ * @see PDbRecordSet::Close()
+ */
+ function Close()
+ {
+ return( pg_free_result( $this->_dbRes ));
+ }
+ }
+?>
\ No newline at end of file
Modified: plog/trunk/class/database/pdb/pdb.class.php
===================================================================
--- plog/trunk/class/database/pdb/pdb.class.php 2007-03-22 13:18:28 UTC (rev 5156)
+++ plog/trunk/class/database/pdb/pdb.class.php 2007-03-22 14:00:03 UTC (rev 5157)
@@ -67,7 +67,7 @@
*/
function getValidDrivers()
{
- $_drivers = Array( "mysql" => "PDbMySQLDriver" );
+ $_drivers = Array( "mysql" => "PDbMySQLDriver", "pgsql" => "PDbPgSQLDriver" );
return $_drivers;
}
Modified: plog/trunk/class/gallery/dao/galleryalbum.class.php
===================================================================
--- plog/trunk/class/gallery/dao/galleryalbum.class.php 2007-03-22 13:18:28 UTC (rev 5156)
+++ plog/trunk/class/gallery/dao/galleryalbum.class.php 2007-03-22 14:00:03 UTC (rev 5157)
@@ -75,7 +75,7 @@
"name" => "getName",
"flags" => "getFlags",
"parent_id" => "getParentId",
- "date" => "getDate",
+ "date" => "getTimestamp",
"properties" => "getProperties",
"show_album" => "getShowAlbum",
"mangled_name" => "getMangledName",
Modified: plog/trunk/config/config.properties.php
===================================================================
--- plog/trunk/config/config.properties.php 2007-03-22 13:18:28 UTC (rev 5156)
+++ plog/trunk/config/config.properties.php 2007-03-22 14:00:03 UTC (rev 5157)
@@ -26,10 +26,10 @@
# (note, if upgrading between minor releases:
# 1.0 to 1.0.1, etc. you shouldn't run the wizard)
-$config['db_host'] = '';
-$config['db_username'] = '';
+$config['db_host'] = 'localhost';
+$config['db_username'] = 'root';
$config['db_password'] = '';
-$config['db_database'] = '';
+$config['db_database'] = 'lifetype_13';
$config["db_persistent"] = true;
$config['db_character_set'] = 'latin1';
@@ -40,5 +40,5 @@
# coexist in the same unique database. If you change this after the initial configuration done
# with the installation wizard, please make sure that you also rename the tables.
#
-$config['db_prefix'] = '';
+$config['db_prefix'] = 'lt_';
?>
\ No newline at end of file
Modified: plog/trunk/install/dbschemas.properties.php
===================================================================
--- plog/trunk/install/dbschemas.properties.php 2007-03-22 13:18:28 UTC (rev 5156)
+++ plog/trunk/install/dbschemas.properties.php 2007-03-22 14:00:03 UTC (rev 5157)
@@ -24,7 +24,7 @@
INDEX global_category_status (global_category_id, status),
INDEX date(date)
";
-$Tables["articles"]["options"] = "TYPE=MyISAM";
+$Tables["articles"]["options"]["mysql"] = "TYPE=MyISAM";
$Tables["articles_categories"]["schema"] = "
id I(10) UNSIGNED NOTNULL AUTOINCREMENT PRIMARY,
@@ -43,9 +43,8 @@
INDEX blog_id (blog_id),
INDEX mangled_name (mangled_name)
";
-$Tables["articles_categories"]["options"] = "TYPE=MyISAM";
+$Tables["articles_categories"]["options"]["mysql"] = "TYPE=MyISAM";
-
$Tables["articles_comments"]["schema"] = "
id I(10) UNSIGNED NOTNULL AUTOINCREMENT PRIMARY,
article_id I(10) UNSIGNED NOTNULL DEFAULT 0,
@@ -74,7 +73,7 @@
FULLTEXT normalized_text (normalized_text),
FULLTEXT normalized_topic (normalized_topic)
";
-$Tables["articles_comments"]["options"] = "TYPE=MyISAM";
+$Tables["articles_comments"]["options"]["mysql"] = "TYPE=MyISAM";
$Tables["articles_notifications"]["schema"] = "
id I(10) NOTNULL AUTOINCREMENT PRIMARY,
@@ -85,7 +84,7 @@
INDEX user_id (user_id),
INDEX blog_id (blog_id)
";
-$Tables["articles_notifications"]["options"] = "TYPE=MyISAM";
+$Tables["articles_notifications"]["options"]["mysql"] = "TYPE=MyISAM";
$Tables["blogs"]["schema"] = "
id I(10) UNSIGNED NOTNULL AUTOINCREMENT INDEX PRIMARY,
@@ -110,7 +109,7 @@
INDEX custom_domain(custom_domain),
INDEX create_date(create_date)
";
-$Tables["blogs"]["options"] = "TYPE=MyISAM";
+$Tables["blogs"]["options"]["mysql"] = "TYPE=MyISAM";
$Tables["mylinks"]["schema"] = "
id I(10) UNSIGNED NOTNULL AUTOINCREMENT PRIMARY,
@@ -125,7 +124,7 @@
INDEX blog_id (blog_id),
INDEX category_id (category_id)
";
-$Tables["mylinks"]["options"] = "TYPE=MyISAM";
+$Tables["mylinks"]["options"]["mysql"] = "TYPE=MyISAM";
$Tables["mylinks_categories"]["schema"] = "
id I(10) NOTNULL AUTOINCREMENT PRIMARY,
@@ -136,7 +135,7 @@
num_links I(10) NOTNULL DEFAULT '0',
INDEX blog_id (blog_id)
";
-$Tables["mylinks_categories"]["options"] = "TYPE=MyISAM";
+$Tables["mylinks_categories"]["options"]["mysql"] = "TYPE=MyISAM";
$Tables["permissions"]["schema"] = "
id I(10) UNSIGNED NOTNULL AUTOINCREMENT PRIMARY,
@@ -145,7 +144,7 @@
admin_only I(1) NOTNULL DEFAULT '1',
core_perm I(1) NOTNULL DEFAULT '1'
";
-$Tables["permissions"]["options"] = "TYPE=MyISAM";
+$Tables["permissions"]["options"]["mysql"] = "TYPE=MyISAM";
$Tables["referers"]["schema"] = "
id I(10) NOTNULL AUTOINCREMENT PRIMARY,
@@ -157,12 +156,12 @@
INDEX article_id (article_id),
INDEX blog_id_article_id (blog_id, article_id)
";
-$Tables["referers"]["options"] = "TYPE=MyISAM";
+$Tables["referers"]["options"]["mysql"] = "TYPE=MyISAM";
$Tables["users"]["schema"] = "
id I(10) UNSIGNED NOTNULL AUTOINCREMENT PRIMARY,
- user varchar(15) NOTNULL DEFAULT '',
- password varchar(32) NOTNULL DEFAULT '',
+ username varchar(15) NOTNULL DEFAULT '',
+ password varchar(33) NOTNULL DEFAULT '',
email C(255) NOTNULL DEFAULT '',
full_name C(255) NOTNULL DEFAULT '',
about X,
@@ -173,7 +172,7 @@
last_login T(14),
UNIQUE user (user)
";
-$Tables["users"]["options"] = "TYPE=MyISAM";
+$Tables["users"]["options"]["mysql"] = "TYPE=MyISAM";
$Tables["users_permissions"]["schema"] = "
id I(10) UNSIGNED NOTNULL AUTOINCREMENT PRIMARY,
@@ -183,7 +182,7 @@
INDEX blog_id (blog_id),
INDEX user_id_permission_id (user_id,permission_id)
";
-$Tables["users_permissions"]["options"] = "TYPE=MyISAM";
+$Tables["users_permissions"]["options"]["mysql"] = "TYPE=MyISAM";
//
// temporary table only used during the upgrade process, will be dropped at the end of it
@@ -196,14 +195,14 @@
INDEX blog_id (blog_id),
INDEX user_id_permission_id (user_id,permission_id)
";
-$Tables["users_permissions"]["options"] = "TYPE=MyISAM";
+$Tables["users_permissions"]["options"]["mysql"] = "TYPE=MyISAM";
$Tables["config"]["schema"] = "
config_key C(255) NOTNULL DEFAULT '' PRIMARY,
config_value TEXT NOTNULL,
value_type I(3) DEFAULT '0'
";
-$Tables["config"]["options"] = "TYPE=MyISAM";
+$Tables["config"]["options"]["mysql"] = "TYPE=MyISAM";
$Tables["filtered_content"]["schema"] = "
id I(10) NOTNULL AUTOINCREMENT PRIMARY,
@@ -213,7 +212,7 @@
date T(14) NOTNULL,
INDEX blog_id (blog_id)
";
-$Tables["filtered_content"]["options"] = "TYPE=MyISAM";
+$Tables["filtered_content"]["options"]["mysql"] = "TYPE=MyISAM";
$Tables["host_blocking_rules"]["schema"] = "
id I(10) NOTNULL AUTOINCREMENT PRIMARY,
@@ -227,7 +226,7 @@
INDEX block_type (block_type),
INDEX blog_id_block_type(blog_id, block_type)
";
-$Tables["host_blocking_rules"]["options"] = "TYPE=MyISAM";
+$Tables["host_blocking_rules"]["options"]["mysql"] = "TYPE=MyISAM";
$Tables["gallery_resources"]["schema"] = "
id I(10) NOTNULL AUTOINCREMENT PRIMARY,
@@ -251,7 +250,7 @@
INDEX resource_type (resource_type),
FULLTEXT normalized_description (normalized_description)
";
-$Tables["gallery_resources"]["options"] = "TYPE=MyISAM";
+$Tables["gallery_resources"]["options"]["mysql"] = "TYPE=MyISAM";
$Tables["gallery_albums"]["schema"] = "
id I(10) NOTNULL AUTOINCREMENT PRIMARY,
@@ -275,7 +274,7 @@
FULLTEXT normalized_description (normalized_description),
FULLTEXT normalized_fields (normalized_name, normalized_description)
";
-$Tables["gallery_albums"]["options"] = "TYPE=MyISAM";
+$Tables["gallery_albums"]["options"]["mysql"] = "TYPE=MyISAM";
$Tables["bayesian_filter_info"]["schema"] = "
id I(10) UNSIGNED NOTNULL AUTOINCREMENT PRIMARY,
@@ -284,7 +283,7 @@
total_nonspam I(10) UNSIGNED DEFAULT NULL,
INDEX blog_id (blog_id)
";
-$Tables["bayesian_filter_info"]["options"] = "TYPE=MyISAM";
+$Tables["bayesian_filter_info"]["options"]["mysql"] = "TYPE=MyISAM";
$Tables["bayesian_tokens"]["schema"] = "
id I(10) UNSIGNED NOTNULL AUTOINCREMENT PRIMARY,
@@ -296,13 +295,13 @@
INDEX blog_id (blog_id),
INDEX token (token)
";
-$Tables["bayesian_tokens"]["options"] = "TYPE=MyISAM";
+$Tables["bayesian_tokens"]["options"]["mysql"] = "TYPE=MyISAM";
$Tables["article_categories_link"]["schema"] = "
article_id I(10) NOTNULL PRIMARY,
category_id I(10) NOTNULL PRIMARY
";
-$Tables["article_categories_link"]["options"] = "TYPE=MyISAM";
+$Tables["article_categories_link"]["options"]["mysql"] = "TYPE=MyISAM";
$Tables["custom_fields_definition"]["schema"] = "
id I(10) NOTNULL AUTOINCREMENT PRIMARY,
@@ -316,7 +315,7 @@
hidden I1(1) DEFAULT 1,
INDEX blog_id (blog_id)
";
-$Tables["custom_fields_definition"]["options"] = "TYPE=MyISAM";
+$Tables["custom_fields_definition"]["options"]["mysql"] = "TYPE=MyISAM";
$Tables["custom_fields_values"]["schema"] = "
id I(10) NOTNULL AUTOINCREMENT PRIMARY,
@@ -330,7 +329,7 @@
INDEX field_id (field_id),
INDEX blog_id_article_id (blog_id, article_id)
";
-$Tables["custom_fields_values"]["options"] = "TYPE=MyISAM";
+$Tables["custom_fields_values"]["options"]["mysql"] = "TYPE=MyISAM";
$Tables["articles_text"]["schema"] = "
id I(10) NOTNULL AUTOINCREMENT PRIMARY,
@@ -345,7 +344,7 @@
FULLTEXT normalized_topic (normalized_topic),
FULLTEXT normalized_fields (normalized_text, normalized_topic)
";
-$Tables["articles_text"]["options"] = "TYPE=MyISAM";
+$Tables["articles_text"]["options"]["mysql"] = "TYPE=MyISAM";
$Tables["phpbb2_users"]["schema"] = "
id I(10) UNSIGNED NOTNULL AUTOINCREMENT PRIMARY,
@@ -357,7 +356,7 @@
status I(10) NOTNULL DEFAULT 0,
UNIQUE phpbb_id(phpbb_id)
";
-$Tables["phpbb2_users"]["options"] = "TYPE=MyISAM";
+$Tables["phpbb2_users"]["options"]["mysql"] = "TYPE=MyISAM";
$Tables["blog_categories"]["schema"] = "
id I(10) UNSIGNED NOTNULL AUTOINCREMENT PRIMARY,
@@ -369,7 +368,7 @@
num_active_blogs I(10) NOTNULL DEFAULT '0',
INDEX mangled_name(mangled_name)
";
-$Tables["blog_categories"]["options"] = "TYPE=MyISAM";
+$Tables["blog_categories"]["options"]["mysql"] = "TYPE=MyISAM";
$Tables["global_articles_categories"]["schema"] = "
id I(10) UNSIGNED NOTNULL AUTOINCREMENT PRIMARY,
@@ -381,7 +380,7 @@
num_active_articles I(10) NOTNULL DEFAULT '0',
INDEX mangled_name(mangled_name)
";
-$Tables["global_articles_categories"]["options"] = "TYPE=MyISAM";
+$Tables["global_articles_categories"]["options"]["mysql"] = "TYPE=MyISAM";
$Tables["locations"]["schema"] = "
id I(10) UNSIGNED NOTNULL AUTOINCREMENT PRIMARY,
@@ -392,5 +391,5 @@
INDEX lat_long_blog_id(latitude,longitude,blog_id),
INDEX blog_id(blog_id)
";
-$Tables["locations"]["options"] = "TYPE=MyISAM";
+$Tables["locations"]["options"]["mysql"] = "TYPE=MyISAM";
?>
Modified: plog/trunk/release/config.properties.php.dist
===================================================================
--- plog/trunk/release/config.properties.php.dist 2007-03-22 13:18:28 UTC (rev 5156)
+++ plog/trunk/release/config.properties.php.dist 2007-03-22 14:00:03 UTC (rev 5157)
@@ -30,6 +30,7 @@
$config["db_username"] = "";
$config["db_password"] = "";
$config["db_database"] = "";
+$config["db_driver"] = "";
$config["db_persistent"] = true;
$config["db_character_set"] = "default";
Modified: plog/trunk/templates/wizard/intro.template
===================================================================
--- plog/trunk/templates/wizard/intro.template 2007-03-22 13:18:28 UTC (rev 5156)
+++ plog/trunk/templates/wizard/intro.template 2007-03-22 14:00:03 UTC (rev 5157)
@@ -22,6 +22,19 @@
to make any other changes.</p>
</div>
{/if}
+
+ <!-- div class="field">
+ <label for="dbServer">Database driver</label>
+ <span class="required">*</span>
+ <div class="formHelp">Select your database server.</div>
+ <select name="dbDriver">
+ <option value="mysql" {if $dbDrver=="mysql"}selected="selected"{/if}>MySQL</option>
+ <option value="pgsql" {if $dbDrver=="pgsql"}selected="selected"{/if}>PostgreSQL</option>
+ </select>
+ {include file="wizard/validate.template" field=dbServer message="The database driver is missing or incorrect"}
+ </div -->
+ <input type="hidden" name="dbDriver" value="mysql" />
+
<div class="field">
<label for="dbServer">Database server</label>
<span class="required">*</span>
Deleted: plog/trunk/updatedbschema.php
===================================================================
--- plog/trunk/updatedbschema.php 2007-03-22 13:18:28 UTC (rev 5156)
+++ plog/trunk/updatedbschema.php 2007-03-22 14:00:03 UTC (rev 5157)
@@ -1,63 +0,0 @@
-<?php
-
-/**
- * Quick and dirty script to update a database schema to the most recent version of the schema
- * as defined by file install/dbschemas.properties.php
- */
-
-if (!defined( "PLOG_CLASS_PATH" )) {
- define( "PLOG_CLASS_PATH", dirname(__FILE__)."/");
-}
-
-lt_include( PLOG_CLASS_PATH."class/database/db.class.php" );
-lt_include( PLOG_CLASS_PATH."class/config/configfilestorage.class.php" );
-lt_include( PLOG_CLASS_PATH."install/dbschemas.properties.php" );
-
-$config = new ConfigFileStorage();
-// open a connection to the database
-$db = PDb::getDriver('mysql');
-
-if( !$db->Connect($config->getValue( "db_host" ), $config->getValue( "db_username" ), $config->getValue( "db_password" ), $config->getValue( "db_database" ), $config->getValue( "db_character_set" ))) {
- die( "could not connect to database!" );
-}
-
-$prefix = $config->getValue( "db_prefix" );
-
-$dict = NewPDbDataDictionary( $db );
-$errors = false;
-$message = "";
-foreach( $Tables as $name => $table ) {
- $errorMessage = "";
- $table_errors = false;
- $upperName = $dict->upperName;
- $tableSchema = $table["schema"];
- if ( isset( $table["options"] ) )
- {
- $tableOptions = $table["options"];
- $options = array ( $upperName => $tableOptions );
- } else {
- $options = array ();
- }
-
- // generate the code with the changes for the table
- $sqlarray = $dict->ChangeTableSQL( $prefix.$name, $tableSchema, $options );
-
- foreach( $sqlarray as $sql ) {
- // and run the query
- if( !$db->Execute( $sql )) {
- $table_errors = true;
- $errors = true;
- $errorMessage .= $db->ErrorMsg()."<br/>";
- }
- }
-
- if( !$table_errors )
- $message .= "Changes to table <strong>$name</strong> executed successfully.<br/>";
- else {
- $message .= "Error modifying table $name: ".$errorMessage;
- }
-}
-
-print($message);
-
-?>
\ No newline at end of file
More information about the pLog-svn
mailing list