diff --git a/phpgwapi/inc/class.schema_proc.inc.php b/phpgwapi/inc/class.schema_proc.inc.php
index 7163ac475b..cdf788b51e 100644
--- a/phpgwapi/inc/class.schema_proc.inc.php
+++ b/phpgwapi/inc/class.schema_proc.inc.php
@@ -74,7 +74,7 @@ class schema_proc
*
* @var string
*/
- var $system_charset;
+ var $system_charset = 'utf8';
/**
* reference to the capabilities array of the db-class
*
@@ -92,10 +92,10 @@ class schema_proc
* Constructor of schema-processor
*
* @param string $dbms type of the database: 'mysql','pgsql','mssql','maxdb'
- * @param object $db=null database class, if null we use $GLOBALS['egw']->db
+ * @param egw_db $db =null database class, if null we use $GLOBALS['egw']->db
* @return schema_proc
*/
- function __construct($dbms=False,$db=null)
+ function __construct($dbms=False, egw_db $db=null)
{
if(is_object($db))
{
@@ -191,9 +191,9 @@ class schema_proc
}
// for mysql 4.0+ we set the charset for the table
if ($this->system_charset && substr($this->sType,0,5) == 'mysql' &&
- (float) $this->m_odb->ServerInfo['version'] >= 4.0 && $this->m_odb->Link_ID->charset2mysql[$this->system_charset])
+ (float) $this->m_odb->ServerInfo['version'] >= 4.0)
{
- $set_table_charset = array($this->sType => 'CHARACTER SET '.$this->m_odb->Link_ID->charset2mysql[$this->system_charset]);
+ $set_table_charset = array($this->sType => 'CHARACTER SET utf8');
}
// creating the table
$aSql = $this->dict->CreateTableSQL($sTableName,$ado_cols = $this->_egw2adodb_columndef($aTableDef),$set_table_charset);
@@ -273,7 +273,7 @@ class schema_proc
// preserve last value of an old sequence
if ($this->sType == 'pgsql' && $preserveSequence && $this->pgsql_old_seq)
{
- if ($seq = $this->_PostgresHasOldSequence($sTableName))
+ if (($seq = $this->_PostgresHasOldSequence($sTableName)))
{
$this->pgsql_old_seq = $this->pgsql_old_seq + 1;
$this->m_odb->query("ALTER SEQUENCE $seq RESTART WITH " . $this->pgsql_old_seq,__LINE__,__FILE__);
@@ -300,13 +300,13 @@ class schema_proc
if ($this->debug) $bOutputHTML = True;
if ($bOutputHTML && !$this->debug) $this->debug = 2;
- foreach($aTables as $sTableName => $aTableDef)
+ foreach(array_keys($aTables) as $sTableName)
{
if($this->DropTable($sTableName))
{
if($bOutputHTML)
{
- echo '
Drop Table ' . $sTableSQL . '';
+ echo '
Drop Table ' . $sTableName . '';
}
}
else
@@ -338,11 +338,12 @@ class schema_proc
* @param string $sTableName table-name
* @param array $aTableDef eGW table-defintion
* @param string $sColumnName column-name
- * @param boolean $bCopyData ???
* @return int 2: no error, 1: errors, but continued, 0: errors aborted
*/
- function DropColumn($sTableName, $aTableDef, $sColumnName, $bCopyData = true)
+ function DropColumn($sTableName, $aTableDef, $sColumnName)
{
+ unset($aTableDef); // not used, but required by function signature
+
$table_def = $this->GetTableDefinition($sTableName);
unset($table_def['fd'][$sColumnName]);
@@ -400,6 +401,7 @@ class schema_proc
$seq = $this->adodb->GetOne("SELECT d.adsrc FROM pg_attribute a, pg_class c, pg_attrdef d WHERE c.relname='$sTableName' AND c.oid=d.adrelid AND d.adsrc LIKE '%seq_$sTableName''::text)' AND a.attrelid=c.oid AND d.adnum=a.attnum");
$seq2 = $this->adodb->GetOne("SELECT d.adsrc FROM pg_attribute a, pg_class c, pg_attrdef d WHERE c.relname='$sTableName' AND c.oid=d.adrelid AND d.adsrc LIKE '%$sTableName%_seq''::text)' AND a.attrelid=c.oid AND d.adnum=a.attnum");
+ $matches = null;
if ($seq && preg_match('/^nextval\(\'(.*)\'/',$seq,$matches))
{
if ($preserveValue) $this->pgsql_old_seq = $this->adodb->GetOne("SELECT last_value FROM " . $matches[1]);
@@ -417,9 +419,8 @@ class schema_proc
* Check if we have an old, not automaticaly droped sequence and drop it
*
* @param $sTableName
- * @param bool $preserveValue
*/
- function _PostgresTestDropOldSequence($sTableName,$preserveValue=False)
+ function _PostgresTestDropOldSequence($sTableName)
{
$this->pgsql_old_seq = 0;
if ($this->sType == 'pgsql' && ($seq = $this->_PostgresHasOldSequence($sTableName)))
@@ -438,10 +439,9 @@ class schema_proc
* @param string $sTableName table-name
* @param string $sColumnName column-name
* @param array $aColumnDef new column-definition
- * @param boolean $bCopyData ???
* @return int 2: no error, 1: errors, but continued, 0: errors aborted
*/
- function AlterColumn($sTableName, $sColumnName, $aColumnDef, $bCopyData=True)
+ function AlterColumn($sTableName, $sColumnName, $aColumnDef)
{
$table_def = $this->GetTableDefinition($sTableName);
@@ -475,10 +475,9 @@ class schema_proc
* @param string $sTableName table-name
* @param string $sOldColumnName old (existing) column-name
* @param string $sNewColumnName new column-name
- * @param boolean $bCopyData ???
* @return int 2: no error, 1: errors, but continued, 0: errors aborted
*/
- function RenameColumn($sTableName, $sOldColumnName, $sNewColumnName, $bCopyData=True)
+ function RenameColumn($sTableName, $sOldColumnName, $sNewColumnName)
{
$table_def = $this->GetTableDefinition($sTableName);
$old_def = array();
@@ -529,11 +528,11 @@ class schema_proc
/**
* Create an (unique) Index over one or more columns
*
- * @param string $sTablename table-name
+ * @param string $sTableName table-name
* @param array $aColumnNames columns for the index
- * @param boolean $bUnique=false true for a unique index, default false
- * @param array/string $options='' db-sepecific options, default '' = none
- * @param string $sIdxName='' name of the index, if not given (default) its created automaticaly
+ * @param boolean $bUnique =false true for a unique index, default false
+ * @param array/string $options ='' db-sepecific options, default '' = none
+ * @param string $sIdxName ='' name of the index, if not given (default) its created automaticaly
* @return int 2: no error, 1: errors, but continued, 0: errors aborted
*/
function CreateIndex($sTableName,$aColumnNames,$bUnique=false,$options='',$sIdxName='')
@@ -612,6 +611,7 @@ class schema_proc
// identify the sequence name, ADOdb uses a different name or it might be renamed
$columns = $this->dict->MetaColumns($sTableName);
$seq_name = 'seq_'.$sTableName;
+ $matches = null;
if (preg_match("/nextval\('([^']+)'::(text|regclass)\)/",$columns[strtoupper($sColumnName)]->default_value,$matches))
{
$seq_name = $matches[1];
@@ -637,7 +637,7 @@ class schema_proc
*/
function RefreshTable($sTableName, $aTableDef, $aDefaults=False)
{
- if($this->debug) { echo "
schema_proc::RefreshTable('$sTableName',"._debug_array($aTableDef,False).")
$sTableName="._debug_array($old_table_def,False)."\n"; } + if($this->debug) { echo "
schema_proc::RefreshTable('$sTableName',"._debug_array($aTableDef,False).")\n"; } $old_table_def = $this->GetTableDefinition($sTableName); @@ -727,7 +727,6 @@ class schema_proc $auto_column_included = $auto_column_included || $data['type'] == 'auto'; $select[] = $value; } - $select = implode(',',$select); $extra = ''; $distinct = 'DISTINCT'; @@ -757,7 +756,7 @@ class schema_proc $Ok = $Ok && $this->CreateTable($sTableName,$aTableDef) && $this->m_odb->query($sql_copy_data="$extra INSERT INTO $sTableName (". implode(',',array_keys($aTableDef['fd'])). - ") SELEcT $distinct $select FROM $tmp_name",__LINE__,__FILE__) && + ") SELEcT $distinct ".implode(',',$select)." FROM $tmp_name",__LINE__,__FILE__) && $this->DropTable($tmp_name); //error_log($sql_copy_data); @@ -780,7 +779,7 @@ class schema_proc * depricated Function does nothing any more * @depricated */ - function GenerateScripts($aTables, $bOutputHTML=False) + function GenerateScripts() { return True; } @@ -789,7 +788,7 @@ class schema_proc * Creates all tables for one application * * @param array $aTables array of eGW table-definitions - * @param boolean $bOutputHTML=false should we give diagnostics, default False + * @param boolean $bOutputHTML =false should we give diagnostics, default False * @return boolean True on success, False if an (fatal) error occured */ function ExecuteScripts($aTables, $bOutputHTML=False) @@ -827,7 +826,7 @@ class schema_proc /** * Return the value of a column * - * @param string/integer $Name name of field or positional index starting from 0 + * @param string|integer $value name of field or positional index starting from 0 * @param bool $strip_slashes string escape chars from field(optional), default false * @return string the field value */ @@ -891,12 +890,12 @@ class schema_proc /** * Execute the Sql statements in an array and give diagnostics, if any error occures * - * @param $aSql array of SQL strings to execute - * @param $debug_level int for which debug_level (and higher) should the diagnostics always been printed - * @param $debug string variable number of arguments for the debug_message functions in case of an error + * @param array $aSql array of SQL strings to execute + * @param int $debug_level for which debug_level (and higher) should the diagnostics always been printed + * @param string $debug variable number of arguments for the debug_message functions in case of an error * @return int 2: no error, 1: errors, but continued, 0: errors aborted */ - function ExecuteSqlArray($aSql,$debug_level,$debug) + function ExecuteSqlArray($aSql,$debug_level) { if ($this->m_odb->query_log) // we use egw_db::query to log the queries { @@ -975,9 +974,9 @@ class schema_proc { $remove[] = $part.'_'; } - $aColumnNames = str_replace($remove,'',$aColumnNames); + $cols = str_replace($remove,'',$aColumnNames); - $name = $sTableName.'_'.(is_array($aColumnNames) ? implode('_',$aColumnNames) : $aColumnNames); + $name = $sTableName.'_'.(is_array($cols) ? implode('_',$cols) : $cols); // remove length limits from column names $name = preg_replace('/ *\(\d+\)/','',$name); @@ -1184,6 +1183,7 @@ class schema_proc 'fd' => array('test' => array('type' => $egw_type)), 'pk' => array(), )); + $matches = null; return preg_match('/test ([A-Z0-9]+)/i',$ado_col,$matches) ? $this->dict->ActualType($matches[1]) : false; } @@ -1308,6 +1308,7 @@ class schema_proc { $definition['fd'][$name]['type'] = 'int'; // detect postgres type-spec and remove it + $matches = null; if ($this->sType == 'pgsql' && $column->has_default && preg_match('/\(([^)])\)::/',$column->default_value,$matches)) { $definition['fd'][$name]['default'] = $matches[1]; @@ -1443,6 +1444,7 @@ class schema_proc */ function _GetColumns($oProc,$sTableName,&$sColumns) { + unset($oProc); // unused, but required by function signature $this->sCol = $this->pk = $this->fk = $this->ix = $this->uc = array(); $tabledef = $this->GetTableDefinition($sTableName);