[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Phpgroupware-cvs] phpgwapi/inc/class.setup_process.inc.php, 1.10
From: |
nomail |
Subject: |
[Phpgroupware-cvs] phpgwapi/inc/class.setup_process.inc.php, 1.10 |
Date: |
Thu, 30 Dec 2004 07:47:31 +0100 |
Update of /phpgwapi/inc
Added Files:
Branch:
class.setup_process.inc.php
date: 2004/12/30 06:47:31; author: skwashd; state: Exp; lines: +22 -21
Log Message:
new HEAD
=====================================================================
<?php
/**
* Setup process
* @author Miles Lott <address@hidden>
* @copyright Portions Copyright (C) 2004 Free Software Foundation, Inc.
http://www.fsf.org/
* @license http://www.fsf.org/licenses/gpl.html GNU General Public
License
* @package phpgwapi
* @subpackage application
* @version $Id: class.setup_process.inc.php,v 1.10 2004/12/30 06:47:31
skwashd Exp $
*/
/**
* Setup process
*
* @package phpgwapi
* @subpackage application
* app status values:
* U : Upgrade required/available
* R : upgrade in pRogress
* C : upgrade Completed successfully
* D : Dependency failure
* F : upgrade Failed
* V : Version mismatch at end of upgrade (Not used, proposed only)
* M : Missing files at start of upgrade (Not used, proposed only)
*/
class setup_process
{
var $oProc;
var $tables;
var $updateincluded = array();
var $translation;
function setup_process()
{
$this->translation =
CreateObject('phpgwapi.setup_translation');
}
/*!
@function init_process
@abstract create schema_proc object
@param none
*/
function init_process()
{
$ConfigDomain =
get_var('ConfigDomain',array('COOKIE','POST'));
$phpgw_domain = $GLOBALS['phpgw_domain'];
$GLOBALS['phpgw_setup']->oProc =
CreateObject('phpgwapi.schema_proc',$phpgw_domain[$ConfigDomain]['db_type']);
$GLOBALS['phpgw_setup']->oProc->m_odb =
$GLOBALS['phpgw_setup']->db;
$GLOBALS['phpgw_setup']->oProc->m_odb->Host =
$phpgw_domain[$ConfigDomain]['db_host'];
$GLOBALS['phpgw_setup']->oProc->m_odb->Database =
$phpgw_domain[$ConfigDomain]['db_name'];
$GLOBALS['phpgw_setup']->oProc->m_odb->User =
$phpgw_domain[$ConfigDomain]['db_user'];
$GLOBALS['phpgw_setup']->oProc->m_odb->Password =
$phpgw_domain[$ConfigDomain]['db_pass'];
$GLOBALS['phpgw_setup']->oProc->m_odb->Halt_On_Error =
'report';
$GLOBALS['phpgw_setup']->oProc->m_odb->connect();
}
/*!
@function pass
@abstract the mother of all multipass upgrade parental loop
functions
@param $setup_info array of application info from
setup.inc.php files
@param $type optional, defaults to new(install),
could also be 'upgrade'
@param $DEBUG optional, print debugging info
@param $force_en optional, install english language files
*/
function
pass($setup_info,$method='new',$DEBUG=False,$force_en=False)
{
if(!$method)
{
return False;
}
// Place api first
$pass['phpgwapi'] =
$setup_info['phpgwapi'];
$pass['admin'] = $setup_info['admin'];
$pass['preferences'] = $setup_info['preferences'];
@reset($setup_info);
$setup_info =
$GLOBALS['phpgw_setup']->detection->get_versions($setup_info);
@reset($setup_info);
$i = 1;
$passed = array();
$passing = array();
$pass_string = implode (':', $pass);
$passing_string = implode (':', $passing);
while($pass_string != $passing_string)
{
$passing = array();
if($DEBUG) { echo '<br>process->pass(): #' . $i
. ' for ' . $method . ' processing' . "\n"; }
/* Check current versions and dependencies */
$setup_info =
$GLOBALS['phpgw_setup']->detection->get_db_versions($setup_info);
$setup_info =
$GLOBALS['phpgw_setup']->detection->compare_versions($setup_info);
//_debug_array($setup_info);exit;
$setup_info =
$GLOBALS['phpgw_setup']->detection->check_depends($setup_info);
//if($i==2) { _debug_array($passed);exit; }
/* stuff the rest of the apps, but only those
with available upgrades */
while(list($key,$value) = @each($setup_info))
{
if(($value['name'] != 'phpgwapi') &&
($value['status'] == 'U'))
{
if(($passed[$value['name']]['status'] != 'F') &&
($passed[$value['name']]['status'] != 'C'))
{
$pass[$value['name']] =
$setup_info[$value['name']];
}
}
/*
Now if we are on the 2nd or more
passes, add api in
if (!$pass['phpgwapi'])
{
$pass['phpgwapi'] =
$setup_info['phpgwapi'];
}
*/
}
switch ($method)
{
case 'new':
/* Create tables and insert new
records for each app in this list */
$passing =
$this->current($pass,$DEBUG);
$passing =
$this->default_records($passing,$DEBUG);
$passing =
$this->add_langs($passing,$DEBUG,$force_en);
break;
case 'upgrade':
/* Run upgrade scripts on each
app in the list */
$passing =
$this->upgrade($pass,$DEBUG);
$passing =
$this->upgrade_langs($passing,$DEBUG);
//_debug_array($pass);exit;
break;
default:
/* What the heck are you doing?
*/
return False;
break;
}
$pass = array();
@reset($passing);
while(list($key,$value) = @each($passing))
{
if($value['status'] == 'C')
{
$passed[$value['name']] =
$passing[$value['name']];
if($DEBUG) { echo
'<br>process->pass(): '.$passed[$value['name']]['name'] . ' install
completed'."\n"; }
}
elseif($value['status'] == 'F')
{
$setup_info[$value['name']] =
$passing[$value['name']];
if($DEBUG) { echo
'<br>process->pass(): '.$setup_info[$value['name']]['name'] . ' install
failed'."\n"; }
}
elseif($value['status'] == 'D')
{
$pass[$value['name']] =
$setup_info[$value['name']];
if($DEBUG) { echo
'<br>process->pass(): '.$pass[$value['name']]['name'] . ' fails dependency
check on this pass'."\n"; }
}
else
{
$tmp =
$passing[$value['name']]['name'];
if($DEBUG) { echo
'<br>process->pass(): '.$tmp . ' skipped on this pass'."\n"; }
}
}
$i++;
if($i == 20) /* Then oops it broke */
{
echo '<br>Setup failure: excess looping
in process->pass():'."\n";
echo '<br>Pass:<br>'."\n";
_debug_array($pass);
echo '<br>Passed:<br>'."\n";
_debug_array($passed);
exit;
}
$pass_string = implode (':', $pass);
$passing_string = implode (':', $passing);
}
/* now return the list */
@reset($passed);
while(list($key,$value) = @each($passed))
{
$setup_info[$value['name']] =
$passed[$value['name']];
}
return ($setup_info);
}
/*!
@function droptables
@abstract drop tables per application, check that they are in
the db first
@param $setup_info array of application info from
setup.inc.php files, etc.
*/
function droptables($setup_info,$DEBUG=False)
{
if(address@hidden'phpgw_setup']->oProc)
{
$this->init_process();
}
$GLOBALS['phpgw_setup']->oProc->m_bDeltaOnly = False;
/* The following is built so below we won't try to drop
a table that isn't there. */
$tablenames =
$GLOBALS['phpgw_setup']->db->table_names();
while(list($key,$val) = @each($tablenames))
{
$tables[] = $val['table_name'];
}
@reset($setup_info);
while(list($key,$null) = @each($setup_info))
{
if($setup_info[$key]['tables'])
{
while(list($a,$table) =
@each($setup_info[$key]['tables']))
{
//echo $table;
if(in_array($table,$tables))
{
if($DEBUG){ echo
'<br>process->droptables(): Dropping :'. $setup_info[$key]['name'] . ' table: '
. $table; }
$GLOBALS['phpgw_setup']->oProc->DropTable($table);
// Update the array
values for return below
$setup_info[$key]['status'] = 'U';
}
}
}
}
/* Done, return current status */
return ($setup_info);
}
/*!
@function current
@abstract process current table setup in each application/setup
dir
@param $appinfo array of application info from setup.inc.php
files, etc.
@discussion This duplicates the old newtables behavior, using
schema_proc
*/
function current($setup_info,$DEBUG=False)
{
if(address@hidden'phpgw_setup']->oProc)
{
$this->init_process();
}
$GLOBALS['phpgw_setup']->oProc->m_bDeltaOnly = False;
@reset($setup_info);
while(list($key,$null) = @each($setup_info))
{
$enabled = False;
$appname = $setup_info[$key]['name'];
$apptitle = $setup_info[$key]['title'];
if($DEBUG) { echo '<br>process->current():
Incoming status: ' . $appname . ',status: '. $setup_info[$key]['status']; }
$appdir = PHPGW_SERVER_ROOT . SEP . $appname .
SEP . 'setup' . SEP;
if($setup_info[$key]['tables'] &&
file_exists($appdir.'tables_current.inc.php'))
{
if($DEBUG) { echo
'<br>process->current(): Including: ' . $appdir.'tables_current.inc.php'; }
include
($appdir.'tables_current.inc.php');
$ret =
$this->post_process($phpgw_baseline,$DEBUG);
if($ret)
{
if($GLOBALS['phpgw_setup']->app_registered($appname))
{
$GLOBALS['phpgw_setup']->update_app($appname);
$GLOBALS['phpgw_setup']->update_hooks($appname);
}
else
{
$GLOBALS['phpgw_setup']->register_app($appname);
$GLOBALS['phpgw_setup']->register_hooks($appname);
}
// Update the array values for
return below
$setup_info[$key]['status'] =
'C';
}
else
{
/* script processing failed */
if($DEBUG) { echo
'<br>process->current(): Failed for ' . $appname . ',status: '.
$setup_info[$key]['status']; }
$setup_info[$key]['status'] =
'F';
}
}
else
{
if($DEBUG) { echo
'<br>process->current(): No current tables for ' . $apptitle . "\n"; }
/*
Add the app, but disable it if it has
tables defined.
A manual sql script install is needed,
but we do add the hooks
*/
$enabled = 99;
if($setup_info[$key]['tables'][0] != '')
{
$enabled = False;
}
if($GLOBALS['phpgw_setup']->app_registered($appname))
{
$GLOBALS['phpgw_setup']->update_app($appname);
$GLOBALS['phpgw_setup']->update_hooks($appname);
}
else
{
$GLOBALS['phpgw_setup']->register_app($appname,$enabled);
$GLOBALS['phpgw_setup']->register_hooks($appname);
}
$setup_info[$key]['status'] = 'C';
}
if($DEBUG) { echo '<br>process->current():
Outgoing status: ' . $appname . ',status: '. $setup_info[$key]['status']; }
}
/* Done, return current status */
return ($setup_info);
}
/*!
@function default_records
@abstract process default_records.inc.php in each
application/setup dir
@param $setup_info array of application info from
setup.inc.php files, etc.
*/
function default_records($setup_info,$DEBUG=False)
{
if(address@hidden'phpgw_setup']->oProc)
{
$this->init_process();
}
$GLOBALS['phpgw_setup']->oProc->m_bDeltaOnly = False;
// $oProc = $GLOBALS['phpgw_setup']->oProc;
@reset($setup_info);
while(list($key,$null) = @each($setup_info))
{
$appname = $setup_info[$key]['name'];
$appdir = PHPGW_SERVER_ROOT . SEP . $appname .
SEP . 'setup' . SEP;
if($setup_info[$key]['tables'] &&
file_exists($appdir.'default_records.inc.php'))
{
if($DEBUG)
{
echo
'<br>process->default_records(): Including default records for ' . $appname .
"\n";
}
$GLOBALS['phpgw_setup']->oProc->m_odb->transaction_begin();
$oProc =
&$GLOBALS['phpgw_setup']->oProc; // to be compatible with old apps
include
($appdir.'default_records.inc.php');
$GLOBALS['phpgw_setup']->oProc->m_odb->transaction_commit();
}
/* $setup_info[$key]['status'] = 'C'; */
}
/* Done, return current status */
return ($setup_info);
}
/*!
@function add_langs
@abstract process application lang files and uninstall
@param $setup_info array of application info from
setup.inc.php files, etc.
*/
function add_langs($setup_info,$DEBUG=False,$force_en=False)
{
@reset($setup_info);
while(list($key,$null) = @each($setup_info))
{
$appname = $setup_info[$key]['name'];
$this->translation->add_langs($appname,$DEBUG,$force_en);
if($DEBUG)
{
echo '<br>process->add_langs():
Translations added for ' . $appname . "\n";
}
}
/* Done, return current status */
return ($setup_info);
}
/*!
@function drop_langs
@abstract process application lang files and install
@param $setup_info array of application info from
setup.inc.php files, etc.
*/
function drop_langs($setup_info,$DEBUG=False)
{
@reset($setup_info);
while(list($key,$null) = @each($setup_info))
{
$appname = $setup_info[$key]['name'];
$this->translation->drop_langs($appname,$DEBUG);
if($DEBUG)
{
echo '<br>process->drop_langs():
Translations removed for ' . $appname . "\n";
}
}
/* Done, return current status */
return ($setup_info);
}
/*!
@function upgrade_langs
@abstract process application lang files and reinstall
@param $setup_info array of application info from
setup.inc.php files, etc.
*/
function upgrade_langs($setup_info,$DEBUG=False)
{
@reset($setup_info);
while(list($key,$null) = @each($setup_info))
{
/* Don't upgrade lang files in the middle of an
upgrade */
if($setup_info[$key]['status'] == 'R')
{
continue;
}
$appname = $setup_info[$key]['name'];
$this->translation->drop_langs($appname,$DEBUG);
$this->translation->add_langs($appname,$DEBUG);
if($DEBUG)
{
echo '<br>process->upgrade_langs():
Translations reinstalled for ' . $appname . "\n";
}
}
/* Done, return current status */
return ($setup_info);
}
/*!
@function test_data
@abstract process test_data.inc.php in each application/setup
dir for developer tests
This data should work with the baseline tables
@param $setup_info array of application info from
setup.inc.php files, etc.
*/
function test_data($setup_info,$DEBUG=False)
{
if(address@hidden'phpgw_setup']->oProc)
{
$this->init_process();
}
$GLOBALS['phpgw_setup']->oProc->m_bDeltaOnly = False;
// $oProc = $GLOBALS['phpgw_setup']->oProc;
@reset($setup_info);
while(list($key,$null) = @each($setup_info))
{
$appname = $setup_info[$key]['name'];
$appdir = PHPGW_SERVER_ROOT . SEP . $appname .
SEP . 'setup' . SEP;
if(file_exists($appdir.'test_data.inc.php'))
{
if($DEBUG)
{
echo '<br>process->test_data():
Including baseline test data for ' . $appname . "\n";
}
$GLOBALS['phpgw_setup']->oProc->m_odb->transaction_begin();
include ($appdir.'test_data.inc.php');
$GLOBALS['phpgw_setup']->oProc->m_odb->transaction_commit();
}
}
/* Done, return current status */
return ($setup_info);
}
/*!
@function baseline
@abstract process baseline table setup in each
application/setup dir
@param $appinfo array of application info from setup.inc.php
files, etc.
*/
function baseline($setup_info,$DEBUG=False)
{
if(address@hidden'phpgw_setup']->oProc)
{
$this->init_process();
}
@reset($setup_info);
while(list($key,$null) = @each($setup_info))
{
$appname = $setup_info[$key]['name'];
$appdir = PHPGW_SERVER_ROOT . SEP . $appname .
SEP . 'setup' . SEP;
if(file_exists($appdir.'tables_baseline.inc.php'))
{
if($DEBUG)
{
echo '<br>process->baseline():
Including baseline tables for ' . $appname . "\n";
}
include
($appdir.'tables_baseline.inc.php');
$GLOBALS['phpgw_setup']->oProc->GenerateScripts($phpgw_baseline, $DEBUG);
$this->post_process($phpgw_baseline,$DEBUG);
/* Update the array values for return
below */
/* $setup_info[$key]['status'] = 'R'; */
}
else
{
if($DEBUG)
{
echo '<br>process->baseline():
No baseline tables for ' . $appname . "\n";
}
//$setup_info[$key]['status'] = 'C';
}
}
/* Done, return current status */
return ($setup_info);
}
/*!
@function upgrade
@abstract process available upgrades in each application/setup
dir
@param $appinfo array of application info from setup.inc.php
files, etc.
*/
function upgrade($setup_info,$DEBUG=False)
{
if(address@hidden'phpgw_setup']->oProc)
{
$this->init_process();
}
$GLOBALS['phpgw_setup']->oProc->m_odb->HaltOnError =
'no';
$GLOBALS['phpgw_setup']->oProc->m_bDeltaOnly = True;
@reset($setup_info);
while(list($key,$null) = @each($setup_info))
{
/* Don't try to upgrade an app that is not
installed */
if(!$GLOBALS['phpgw_setup']->app_registered($setup_info[$key]['name']))
{
if($DEBUG)
{
echo '<br>process->upgrade():
Application not installed: ' . $appname . "\n";
}
unset($setup_info[$key]);
continue;
}
/* if upgrade required, or if we are running
again after an upgrade or dependency failure */
if($DEBUG) { echo '<br>process->upgrade():
Incoming : appname: '.$setup_info[$key]['name'] . ' status: ' .
$setup_info[$key]['status']; }
if($setup_info[$key]['status'] == 'U' ||
$setup_info[$key]['status'] == 'D' ||
$setup_info[$key]['status'] == 'V' ||
$setup_info[$key]['status'] == '') //
TODO this is not getting set for api upgrade, sometimes ???
{
$appname = $setup_info[$key]['name'];
$apptitle =
$setup_info[$key]['title'];
$currentver =
$setup_info[$key]['currentver'];
$targetver =
$setup_info[$key]['version']; // The version we need to match when done
$appdir = PHPGW_SERVER_ROOT . SEP .
$appname . SEP . 'setup' . SEP;
$test = array();
$GLOBALS['phpgw_setup']->oProc->m_aTables = $phpgw_baseline = array();
/*
$phpgw_baseline = array();
$tmpapp = array();
$tmpapp[] = $setup_info[$key];
$this->baseline($tmpapp,$DEBUG);
$GLOBALS['phpgw_setup']->oProc->m_aTables = $phpgw_baseline;
// So far, including the baseline file
is not helping.
// Only AlterColumn/RenameColumn seem
to be failing silently.
// This is because we are not keeping
up with table changes, so a table in baseline
// either does not exist anymore, or
the baseline is being lost.
*/
if($setup_info[$key]['tables'] &&
file_exists($appdir.'tables_baseline.inc.php'))
{
if($DEBUG)
{
echo
'<br>process->baseline(): Including baseline tables for ' . $appname . "\n";
}
include
($appdir.'tables_baseline.inc.php');
$GLOBALS['phpgw_setup']->oProc->m_aTables = $phpgw_baseline;
/*
$GLOBALS['phpgw_setup']->oProc->GenerateScripts($phpgw_baseline, $DEBUG); */
}
else
{
if($DEBUG)
{
echo
'<br>process->baseline(): No baseline tables for ' . $appname . "\n";
}
/* This should be a break with
a status setting, or not at all
break;
*/
}
if(file_exists($appdir .
'tables_update.inc.php') && address@hidden>updateincluded[$appname])
{
include ($appdir .
'tables_update.inc.php');
$this->updateincluded[$appname]
= True;
/* $test array comes from
update file. It is a list of available upgrade functions */
@reset($test);
while(list($x,$value) =
@each($test))
{
$currentver =
$setup_info[$key]['currentver'];
/* build upgrade
function name */
$function = $appname .
'_upgrade' . ereg_replace("\.", '_', $value);
if($DEBUG)
{
echo
'<br>process->upgrade(): appname: ' . $appname;
echo
'<br>process->upgrade(): currentver: ' . $currentver;
echo
'<br>process->upgrade(): targetver: ' . $targetver;
echo
'<br>process->upgrade(): status: ' . $setup_info[$key]['status'];
echo
'<br>process->upgrade(): checking: ' . $value;
echo
'<br>process->upgrade(): function: ' . $function;
}
if($value == $targetver)
{
$GLOBALS['phpgw_setup']->oProc->m_bDeltaOnly = False;
/* Done
upgrading */
if($DEBUG)
{
echo
'<br>process->upgrade(): Upgrade of ' . $appname . ' to ' . $targetver . ' is
completed.' . "\n";
}
$appstatus =
'C';
$setup_info[$key]['status'] = $appstatus;
$setup_info[$key]['currentver'] = $targetver;
if($GLOBALS['phpgw_setup']->app_registered($appname))
{
$GLOBALS['phpgw_setup']->update_app($appname);
$GLOBALS['phpgw_setup']->update_hooks($appname);
}
else
{
$GLOBALS['phpgw_setup']->register_app($appname);
$GLOBALS['phpgw_setup']->register_hooks($appname);
}
//break;
}
elseif(($value ==
$currentver) || !$currentver)
{
/* start
upgrading db in addition to baseline */
$GLOBALS['phpgw_setup']->oProc->m_bDeltaOnly = False;
if($DEBUG) {
echo '<br>process->upgrade(): running ' . $function; }
/* run upgrade
function */
$success =
$function();
if($success !=
False)
{
$setup_info[$key]['currentver'] = $success;
if($DEBUG)
{
echo '<br>process->upgrade(): Upgrade of ' . $appname
. ' from ' . $value
. ' to ' . $setup_info[$key]['currentver']
. ' is completed.' . "\n";
}
$appstatus = 'R';
$setup_info[$key]['status'] = $appstatus;
if($GLOBALS['phpgw_setup']->app_registered($appname))
{
if($DEBUG)
{
echo '<br>process->upgrade(): Updating registration of ' . $appname .
', new version: ' . $setup_info[$key]['currentver'];
}
$GLOBALS['phpgw_setup']->update_app($appname);
$GLOBALS['phpgw_setup']->update_hooks($appname);
}
else
{
if($DEBUG)
{
echo '<br>process->upgrade(): Registering ' . $appname . ', version: '
. $setup_info[$key]['currentver'];
}
$GLOBALS['phpgw_setup']->register_app($appname);
$GLOBALS['phpgw_setup']->register_hooks($appname);
}
}
else
{
if($DEBUG)
{
echo '<br>process->upgrade(): Upgrade of ' . $appname
. ' from ' . $currentver
. ' to ' . $value
. ' failed!!!' . "\n";
}
$appstatus = 'F';
break;
}
}
elseif
($GLOBALS['phpgw_setup']->alessthanb($value,$currentver))
{
if($DEBUG) {
echo '<br>process->upgrade(): running baseline delta only: ' . $function .
'...'; }
$GLOBALS['phpgw_setup']->oProc->m_bDeltaOnly = True;
$success =
$function();
}
else
{
break;
}
}
}
else
{
if($setup_info[$appname]['tables'])
{
$appstatus = 'F';
if($DEBUG)
{
echo
'<br>process->upgrade(): No table upgrade available for ' . $appname . "\n";
}
}
else
{
$setup_info[$key]['currentver'] == $targetver;
$appstatus = 'C';
if($GLOBALS['phpgw_setup']->app_registered($appname))
{
$GLOBALS['phpgw_setup']->update_app($appname);
$GLOBALS['phpgw_setup']->update_hooks($appname);
}
else
{
$GLOBALS['phpgw_setup']->register_app($appname);
$GLOBALS['phpgw_setup']->register_hooks($appname);
}
if($DEBUG)
{
echo
'<br>process->upgrade(): No table upgrade required for ' . $appname . "\n";
}
}
}
}
else
{
$appstatus = 'C';
if($DEBUG)
{
echo '<br>process->upgrade():
No upgrade required for ' . $appname . "\n";
}
}
/* Done with this app, update status */
$setup_info[$key]['status'] = $appstatus;
if($DEBUG)
{
echo '<br>process->upgrade(): Outgoing
: appname: '.$setup_info[$key]['name'] . ' status: ' .
$setup_info[$key]['status'];
}
}
/* Done, return current status */
return ($setup_info);
}
/*!
@function post_process
@abstract commit above processing to the db
*/
function post_process($tables,$DEBUG=False)
{
if(!$tables)
{
return False;
}
$ret =
$GLOBALS['phpgw_setup']->oProc->GenerateScripts($tables,$DEBUG);
if($ret)
{
$oret =
$GLOBALS['phpgw_setup']->oProc->ExecuteScripts($tables,$DEBUG);
if($oret)
{
return True;
}
else
{
return False;
}
}
else
{
return False;
}
}
/*!
@function sql_to_array
@abstract send this a table name, returns printable column spec
and keys for the table from schema_proc
@param $tablename table whose array you want to see
*/
function sql_to_array($tablename='')
{
if(!$tablename)
{
return False;
}
if(!$GLOBALS['phpgw_setup']->oProc)
{
$this->init_process();
}
$GLOBALS['phpgw_setup']->oProc->m_oTranslator->_GetColumns($GLOBALS['phpgw_setup']->oProc,
$tablename, $sColumns, $sColumnName);
while(list($key,$tbldata) =
each($GLOBALS['phpgw_setup']->oProc->m_oTranslator->sCol))
{
$arr .= $tbldata;
}
$pk = $GLOBALS['phpgw_setup']->oProc->m_oTranslator->pk;
$fk = $GLOBALS['phpgw_setup']->oProc->m_oTranslator->fk;
$ix = $GLOBALS['phpgw_setup']->oProc->m_oTranslator->ix;
$uc = $GLOBALS['phpgw_setup']->oProc->m_oTranslator->uc;
return array($arr,$pk,$fk,$ix,$uc);
}
}
?>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Phpgroupware-cvs] phpgwapi/inc/class.setup_process.inc.php, 1.10,
nomail <=