From f8bfb6fb85aa4aa0c84fe717a1182fc60cad98b5 Mon Sep 17 00:00:00 2001 From: Hector Cortez Date: Fri, 22 Jul 2011 19:40:49 -0400 Subject: [PATCH] BUG 0000 Fix Bug in import process in ReportTables. --- .../engine/classes/model/AdditionalTables.php | 17 +++++++++++++---- workflow/engine/controllers/pmTablesProxy.php | 2 +- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/workflow/engine/classes/model/AdditionalTables.php b/workflow/engine/classes/model/AdditionalTables.php index bea3f8a65..302987996 100644 --- a/workflow/engine/classes/model/AdditionalTables.php +++ b/workflow/engine/classes/model/AdditionalTables.php @@ -1317,7 +1317,9 @@ var additionalTablesDataDelete = function(sUID, sKeys) { $aData = $this->load($sUID, true); $sPath = PATH_DB . SYS_SYS . PATH_SEP . 'classes' . PATH_SEP; $sClassName = ($aData['ADD_TAB_CLASS_NAME'] != '' ? $aData['ADD_TAB_CLASS_NAME'] : $this->getPHPName($aData['ADD_TAB_NAME'])); - $oConnection = Propel::getConnection(FieldsPeer::DATABASE_NAME); + // $oConnection = Propel::getConnection(FieldsPeer::DATABASE_NAME); + $oConnection = Propel::getConnection($aData['DBS_UID']); + $stmt = $oConnection->createStatement(); require_once $sPath . $sClassName . '.php'; $sKeys = ''; foreach ($aData['FIELDS'] as $aField) { @@ -1328,11 +1330,16 @@ var additionalTablesDataDelete = function(sUID, sKeys) { } } $sKeys = substr($sKeys, 0, -1); - eval('$oClass = ' . $sClassName . 'Peer::retrieveByPK(' . $sKeys . ');'); - if (is_null($oClass)) { + $sqlExists = "SELECT COUNT(" . $aField['FLD_NAME'] . ") AS NRO_REGS FROM `" . $aData['ADD_TAB_NAME'] . "` "; + $rsExists = $stmt->executeQuery( $sqlExists, ResultSet::FETCHMODE_ASSOC); + $rsExists->next(); + $aRow2 = $rsExists->getRow(); + + if ( $aRow2['NRO_REGS'] !='0' ) { $oClass = new $sClassName; foreach ($aFields as $sKey => $sValue) { - eval('$oClass->set' . $this->getPHPName($sKey) . '($aFields["' . $sKey . '"]);'); + if(!preg_match("/\(?\)/", $sKey)) + eval('$oClass->set' . $this->getPHPName($sKey) . '($aFields["' . $sKey . '"]);'); } if ($oClass->validate()) { $oConnection->begin(); @@ -1484,6 +1491,8 @@ var additionalTablesDataDelete = function(sUID, sKeys) { G::LoadSystem($sDataBase); $oDataBase = new database(); $sDataBase = $sConnection; + if($sDataBase == 'rp') + $sDataBase = DB_REPORT_NAME; if($sDataBase == 'workflow') $sDataBase = DB_NAME; $tableExists = $oDataBase->tableExists($sTableName, $sDataBase); diff --git a/workflow/engine/controllers/pmTablesProxy.php b/workflow/engine/controllers/pmTablesProxy.php index 8b7f5a8cd..090b3eaa9 100644 --- a/workflow/engine/controllers/pmTablesProxy.php +++ b/workflow/engine/controllers/pmTablesProxy.php @@ -655,7 +655,7 @@ class pmTablesProxy extends HttpProxyController 'bPrimaryKey' => $contentSchema['FIELDS'][$iRow]['FLD_KEY'] ); } - $oAdditionalTables->createTable($contentSchema['ADD_TAB_NAME'], 'wf', $aFields); + $oAdditionalTables->createTable($contentSchema['ADD_TAB_NAME'], $contentSchema['DBS_UID'], $aFields); for($i=1; $i <= count($contentSchema['FIELDS']); $i++){ $contentSchema['FIELDS'][$i]['FLD_NULL'] = $contentSchema['FIELDS'][$i]['FLD_NULL'] == '1' ? 'on' : '';