Correccion al editar un pmtable se eliminan los registros

This commit is contained in:
Brayan Osmar Pereyra Suxo
2014-12-10 16:32:31 -04:00
parent 5881c41fde
commit a9f2a8ea91
4 changed files with 27 additions and 9 deletions

View File

@@ -149,7 +149,7 @@ abstract class FileSystem {
* by the given abstract pathname, or zero if it does not exist or some * by the given abstract pathname, or zero if it does not exist or some
* other I/O error occurs. * other I/O error occurs.
*/ */
function getBooleanAttributes($f) { function getBooleanAttributes(&$f = null) {
throw new Exception("SYSTEM ERROR method getBooleanAttributes() not implemented by fs driver"); throw new Exception("SYSTEM ERROR method getBooleanAttributes() not implemented by fs driver");
} }

View File

@@ -191,7 +191,7 @@ class UnixFileSystem extends FileSystem {
/* -- most of the following is mapped to the php natives wrapped by FileSystem */ /* -- most of the following is mapped to the php natives wrapped by FileSystem */
/* -- Attribute accessors -- */ /* -- Attribute accessors -- */
function getBooleanAttributes(&$f) { function getBooleanAttributes(&$f = null) {
//$rv = getBooleanAttributes0($f); //$rv = getBooleanAttributes0($f);
$name = $f->getName(); $name = $f->getName();
$hidden = (strlen($name) > 0) && ($name{0} == '.'); $hidden = (strlen($name) > 0) && ($name{0} == '.');

View File

@@ -40,6 +40,7 @@ class PmTable
private $schemaFile = ''; private $schemaFile = '';
private $tableName; private $tableName;
private $columns; private $columns;
private $primaryKey= array();
private $baseDir = ''; private $baseDir = '';
private $targetDir = ''; private $targetDir = '';
private $configDir = ''; private $configDir = '';
@@ -182,7 +183,7 @@ class PmTable
* Build the pmTable with all dependencies * Build the pmTable with all dependencies
*/ */
public function build () public function build ()
{ {
$this->prepare(); $this->prepare();
$this->preparePropelIniFile(); $this->preparePropelIniFile();
$this->buildSchema(); $this->buildSchema();
@@ -400,7 +401,7 @@ class PmTable
* Save the xml schema for propel * Save the xml schema for propel
*/ */
public function saveSchema () public function saveSchema ()
{ {
$this->dom->save( $this->configDir . $this->schemaFilename ); $this->dom->save( $this->configDir . $this->schemaFilename );
} }
@@ -671,8 +672,29 @@ class PmTable
$sql = "SELECT * FROM $tableBackup"; $sql = "SELECT * FROM $tableBackup";
$rs = $stmt->executeQuery($sql, ResultSet::FETCHMODE_ASSOC); $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()) { while ($rs->next()) {
$row = $rs->getRow(); $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 = new $tableFileName();
$oTable->fromArray($row, BasePeer::TYPE_FIELDNAME); $oTable->fromArray($row, BasePeer::TYPE_FIELDNAME);

View File

@@ -208,13 +208,11 @@ class pmTablesProxy extends HttpProxyController
$result = new StdClass(); $result = new StdClass();
try { try {
$result = new stdClass();
ob_start(); ob_start();
$data = (array) $httpData; $data = (array) $httpData;
$data['PRO_UID'] = trim( $data['PRO_UID'] ); $data['PRO_UID'] = trim( $data['PRO_UID'] );
$data['columns'] = G::json_decode( stripslashes( $httpData->columns ) ); //decofing data columns $data['columns'] = G::json_decode( stripslashes( $httpData->columns ) ); //decofing data columns
$isReportTable = $data['PRO_UID'] != '' ? true : false; $isReportTable = $data['PRO_UID'] != '' ? true : false;
$oAdditionalTables = new AdditionalTables(); $oAdditionalTables = new AdditionalTables();
$oFields = new Fields(); $oFields = new Fields();
@@ -252,7 +250,6 @@ class pmTablesProxy extends HttpProxyController
) ) )); ) ) ));
} }
} }
//backward compatility //backward compatility
foreach ($columns as $i => $column) { foreach ($columns as $i => $column) {
if (in_array( strtoupper( $columns[$i]->field_name ), $reservedWordsSql ) || in_array( strtolower( $columns[$i]->field_name ), $reservedWordsPhp )) { 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'] ); $oCriteria->add( FieldsPeer::ADD_TAB_UID, $data['REP_TAB_UID'] );
FieldsPeer::doDelete( $oCriteria ); FieldsPeer::doDelete( $oCriteria );
} }
// Updating pmtable fields // Updating pmtable fields
foreach ($columns as $i => $column) { foreach ($columns as $i => $column) {
$field = array ( $field = array (
@@ -747,7 +743,7 @@ class pmTablesProxy extends HttpProxyController
*/ */
public function exportCSV ($httpData) public function exportCSV ($httpData)
{ {
$result = new StdClass();
try { try {
$link = ''; $link = '';