egroupware/phpgwapi/inc/class.schema_proc_array.inc.php
Ralf Becker 06ab7f4476 added new function RefreshTable to:
1. change or newly create the primary key or any other index
2. change the order of columns, drop and add multiple columns in one go
2004-02-19 08:48:15 +00:00

192 lines
4.4 KiB
PHP

<?php
/**************************************************************************\
* phpGroupWare - Setup *
* http://www.phpgroupware.org *
* -------------------------------------------- *
* This file written by Michael Dean<mdean@users.sourceforge.net> *
* and Miles Lott<milosch@phpgroupware.org> *
* -------------------------------------------- *
* This program is free software; you can redistribute it and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; either version 2 of the License, or (at your *
* option) any later version. *
\**************************************************************************/
/* $Id$ */
class schema_proc_array
{
var $m_sStatementTerminator;
function schema_proc_array()
{
$this->m_sStatementTerminator = ';';
}
/* Return a type suitable for DDL abstracted array */
function TranslateType($sType, $iPrecision = 0, $iScale = 0)
{
$sTranslated = $sType;
return $sTranslated;
}
function TranslateDefault($sDefault)
{
return $sDefault;
}
function GetPKSQL($sFields)
{
return '';
}
function GetUCSQL($sFields)
{
return '';
}
function _GetColumns($oProc, &$aTables, $sTableName, &$sColumns, $sDropColumn='')
{
$sColumns = '';
while(list($sName, $aJunk) = each($aTables[$sTableName]['fd']))
{
if($sColumns != '')
{
$sColumns .= ',';
}
$sColumns .= $sName;
}
return True;
}
function DropTable($oProc, &$aTables, $sTableName)
{
if(isset($aTables[$sTableName]))
{
unset($aTables[$sTableName]);
}
return True;
}
function DropColumn($oProc, &$aTables, $sTableName, $aNewTableDef, $sColumnName, $bCopyData=True)
{
if(isset($aTables[$sTableName]))
{
if(isset($aTables[$sTableName]['fd'][$sColumnName]))
{
unset($aTables[$sTableName]['fd'][$sColumnName]);
}
}
return True;
}
function RenameTable($oProc, &$aTables, $sOldTableName, $sNewTableName)
{
$aNewTables = array();
while(list($sTableName, $aTableDef) = each($aTables))
{
if($sTableName == $sOldTableName)
{
$aNewTables[$sNewTableName] = $aTableDef;
}
else
{
$aNewTables[$sTableName] = $aTableDef;
}
}
$aTables = $aNewTables;
return True;
}
function RenameColumn($oProc, &$aTables, $sTableName, $sOldColumnName, $sNewColumnName, $bCopyData=True)
{
if (isset($aTables[$sTableName]))
{
$aNewTableDef = array();
reset($aTables[$sTableName]['fd']);
while(list($sColumnName, $aColumnDef) = each($aTables[$sTableName]['fd']))
{
if($sColumnName == $sOldColumnName)
{
$aNewTableDef[$sNewColumnName] = $aColumnDef;
}
else
{
$aNewTableDef[$sColumnName] = $aColumnDef;
}
}
$aTables[$sTableName]['fd'] = $aNewTableDef;
reset($aTables[$sTableName]['pk']);
while(list($key, $sColumnName) = each($aTables[$sTableName]['pk']))
{
if($sColumnName == $sOldColumnName)
{
$aTables[$sTableName]['pk'][$key] = $sNewColumnName;
}
}
reset($aTables[$sTableName]['uc']);
while(list($key, $sColumnName) = each($aTables[$sTableName]['uc']))
{
if($sColumnName == $sOldColumnName)
{
$aTables[$sTableName]['uc'][$key] = $sNewColumnName;
}
}
}
return True;
}
function AlterColumn($oProc, &$aTables, $sTableName, $sColumnName, &$aColumnDef, $bCopyData=True)
{
if(isset($aTables[$sTableName]))
{
if(isset($aTables[$sTableName]['fd'][$sColumnName]))
{
$aTables[$sTableName]['fd'][$sColumnName] = $aColumnDef;
}
}
return True;
}
function AddColumn($oProc, &$aTables, $sTableName, $sColumnName, &$aColumnDef)
{
if(isset($aTables[$sTableName]))
{
if(!isset($aTables[$sTableName]['fd'][$sColumnName]))
{
$aTables[$sTableName]['fd'][$sColumnName] = $aColumnDef;
}
}
return True;
}
function CreateTable($oProc, &$aTables, $sTableName, $aTableDef)
{
if(!isset($aTables[$sTableName]))
{
$aTables[$sTableName] = $aTableDef;
}
return True;
}
function RefreshTable($oProc, &$aTables, $sTableName, $aTableDef)
{
$aTables[$sTableName] = $aTableDef;
return True;
}
}
?>