diff --git a/workflow/engine/classes/class.pmTable.php b/workflow/engine/classes/class.pmTable.php index c9ae056f9..704535cf0 100755 --- a/workflow/engine/classes/class.pmTable.php +++ b/workflow/engine/classes/class.pmTable.php @@ -173,14 +173,14 @@ class PmTable } } - function buildModelFor($dbsUid) + function buildModelFor($dbsUid, $tablesList) { $this->setDataSource($dbsUid); $loadSchema = false; $this->prepare($loadSchema); $this->phingbuildModel(); $this->phingbuildSql(); - $this->upgradeDatabaseFor($this->dataSource); + $this->upgradeDatabaseFor($this->dataSource, $tablesList); } /** @@ -467,7 +467,7 @@ class PmTable } - public function upgradeDatabaseFor($dataSource) + public function upgradeDatabaseFor($dataSource, $tablesList) { $con = Propel::getConnection($dataSource); $stmt = $con->createStatement(); @@ -509,7 +509,14 @@ class PmTable $line = substr($line, 0, strrpos($line, ";")); // execute - $stmt->executeQuery($line); + if (stripos($line, 'CREATE TABLE') !== false || stripos($line, 'DROP TABLE') !== false) { + if (preg_match('/TABLE\s[\'\"\`]+(\w+)[\'\"\`]+/i', $line, $match)) { + if (in_array($match[1], $tablesList)) { + //error_log($line); + $stmt->executeQuery($line); + } + } + } } @@ -605,7 +612,7 @@ class PmTable 'propel.php.dir' => $this->baseDir ); - self::callPhing(array($taskName), PATH_THIRDPARTY . 'propel-generator/build.xml', $options, true); + self::callPhing(array($taskName), PATH_THIRDPARTY . 'propel-generator/build.xml', $options, false); } /** diff --git a/workflow/engine/controllers/pmTablesProxy.php b/workflow/engine/controllers/pmTablesProxy.php index 37f582189..5de387aab 100755 --- a/workflow/engine/controllers/pmTablesProxy.php +++ b/workflow/engine/controllers/pmTablesProxy.php @@ -665,6 +665,7 @@ class pmTablesProxy extends HttpProxyController $oAdditionalTables = new AdditionalTables(); $tableNameMap = array(); $processQueue = array(); + $processQueueTables = array(); $PUBLIC_ROOT_PATH = PATH_DATA.'sites'.PATH_SEP.SYS_SYS.PATH_SEP.'public'.PATH_SEP; $filename = $_FILES['form']['name']['FILENAME']; @@ -755,6 +756,7 @@ class pmTablesProxy extends HttpProxyController if (!isset($processQueue[$contentSchema['DBS_UID']])) { $processQueue[$contentSchema['DBS_UID']] = array(); } + $processQueueTables[] = $contentSchema['ADD_TAB_NAME']; $result = $this->save($tableData, $alterTable); @@ -799,7 +801,7 @@ class pmTablesProxy extends HttpProxyController foreach ($processQueue as $dbsUid => $tableData) { $pmTable = new pmTable(); - $pmTable->buildModelFor($dbsUid); + $pmTable->buildModelFor($dbsUid, $processQueueTables); $buildResult = ob_get_contents(); ob_end_clean();