diff --git a/gulliver/thirdparty/phing/system/io/FileSystem.php b/gulliver/thirdparty/phing/system/io/FileSystem.php index 71133779f..af6fb0abe 100755 --- a/gulliver/thirdparty/phing/system/io/FileSystem.php +++ b/gulliver/thirdparty/phing/system/io/FileSystem.php @@ -149,7 +149,7 @@ abstract class FileSystem { * by the given abstract pathname, or zero if it does not exist or some * other I/O error occurs. */ - function getBooleanAttributes($f) { + function getBooleanAttributes(&$f = null) { throw new Exception("SYSTEM ERROR method getBooleanAttributes() not implemented by fs driver"); } diff --git a/gulliver/thirdparty/phing/system/io/UnixFileSystem.php b/gulliver/thirdparty/phing/system/io/UnixFileSystem.php index 449b4e6eb..85f467d0e 100755 --- a/gulliver/thirdparty/phing/system/io/UnixFileSystem.php +++ b/gulliver/thirdparty/phing/system/io/UnixFileSystem.php @@ -191,7 +191,7 @@ class UnixFileSystem extends FileSystem { /* -- most of the following is mapped to the php natives wrapped by FileSystem */ /* -- Attribute accessors -- */ - function getBooleanAttributes(&$f) { + function getBooleanAttributes(&$f = null) { //$rv = getBooleanAttributes0($f); $name = $f->getName(); $hidden = (strlen($name) > 0) && ($name{0} == '.'); diff --git a/workflow/engine/classes/class.pmTable.php b/workflow/engine/classes/class.pmTable.php index 0d1748964..005a7a3ac 100755 --- a/workflow/engine/classes/class.pmTable.php +++ b/workflow/engine/classes/class.pmTable.php @@ -40,6 +40,7 @@ class PmTable private $schemaFile = ''; private $tableName; private $columns; + private $primaryKey= array(); private $baseDir = ''; private $targetDir = ''; private $configDir = ''; @@ -182,7 +183,7 @@ class PmTable * Build the pmTable with all dependencies */ public function build () - { + { $this->prepare(); $this->preparePropelIniFile(); $this->buildSchema(); @@ -400,7 +401,7 @@ class PmTable * Save the xml schema for propel */ public function saveSchema () - { + { $this->dom->save( $this->configDir . $this->schemaFilename ); } @@ -671,8 +672,29 @@ class PmTable $sql = "SELECT * FROM $tableBackup"; $rs = $stmt->executeQuery($sql, ResultSet::FETCHMODE_ASSOC); + // array the primary keys + foreach($this->columns as $value) { + if ($value->field_key == 1) { + $this->primaryKey[] = $value->field_name; + } + } + + $flagPrimaryKey = 1; while ($rs->next()) { $row = $rs->getRow(); + if ($flagPrimaryKey) { + // verify row has all primary keys + $keys = 0; + foreach ($row as $colName => $value) { + if (in_array($colName,$this->primaryKey)){ + $keys++; + } + } + if ($keys != count($this->primaryKey)) { + return $stmt->executeQuery(str_replace($table, $tableBackup, $queryStack["drop"])); + } + $flagPrimaryKey = 0; + } $oTable = new $tableFileName(); $oTable->fromArray($row, BasePeer::TYPE_FIELDNAME); diff --git a/workflow/engine/controllers/pmTablesProxy.php b/workflow/engine/controllers/pmTablesProxy.php index 6554fc2a0..d4505fcc6 100755 --- a/workflow/engine/controllers/pmTablesProxy.php +++ b/workflow/engine/controllers/pmTablesProxy.php @@ -208,13 +208,11 @@ class pmTablesProxy extends HttpProxyController $result = new StdClass(); try { - $result = new stdClass(); ob_start(); $data = (array) $httpData; $data['PRO_UID'] = trim( $data['PRO_UID'] ); $data['columns'] = G::json_decode( stripslashes( $httpData->columns ) ); //decofing data columns - $isReportTable = $data['PRO_UID'] != '' ? true : false; $oAdditionalTables = new AdditionalTables(); $oFields = new Fields(); @@ -252,7 +250,6 @@ class pmTablesProxy extends HttpProxyController ) ) )); } } - //backward compatility foreach ($columns as $i => $column) { if (in_array( strtoupper( $columns[$i]->field_name ), $reservedWordsSql ) || in_array( strtolower( $columns[$i]->field_name ), $reservedWordsPhp )) { @@ -318,7 +315,6 @@ class pmTablesProxy extends HttpProxyController $oCriteria->add( FieldsPeer::ADD_TAB_UID, $data['REP_TAB_UID'] ); FieldsPeer::doDelete( $oCriteria ); } - // Updating pmtable fields foreach ($columns as $i => $column) { $field = array ( @@ -747,7 +743,7 @@ class pmTablesProxy extends HttpProxyController */ public function exportCSV ($httpData) { - + $result = new StdClass(); try { $link = '';