From d6380df70b099bc09b24b49165d4237d2b09ca6b Mon Sep 17 00:00:00 2001 From: Luis Fernando Saisa Lopez Date: Tue, 9 Jul 2013 17:13:27 -0400 Subject: [PATCH] BUG 12253 "Cuando se borra un caso por PM, este caso no..." SOLVED - Cuando se borra un caso por PM, este caso no se borra en los PM Reportes. - Problema resuelto, cuando se ejecuta un proceso que tenga Report Tables, al borrar el caso tambien se eliminara los registros de los Report Tables. * Available from version ProcessMaker-2.5.2-testing.1 --- workflow/engine/classes/class.case.php | 59 +++++++++++++++++++ workflow/engine/classes/class.pmTable.php | 53 ----------------- .../engine/controllers/adhocUserProxy.php | 6 +- .../engine/methods/cases/cases_Delete.php | 2 +- 4 files changed, 61 insertions(+), 59 deletions(-) diff --git a/workflow/engine/classes/class.case.php b/workflow/engine/classes/class.case.php index 26dd943a7..63c2dbad7 100755 --- a/workflow/engine/classes/class.case.php +++ b/workflow/engine/classes/class.case.php @@ -6554,4 +6554,63 @@ class Cases } return false; } + + public function reportTableDeleteRecord($applicationUid) + { + $criteria1 = new Criteria("workflow"); + + //SELECT + $criteria1->addSelectColumn(ApplicationPeer::PRO_UID); + + //FROM + + //WHERE + $criteria1->add(ApplicationPeer::APP_UID, $applicationUid); + + //QUERY + $rsCriteria1 = ApplicationPeer::doSelectRS($criteria1); + $rsCriteria1->setFetchmode(ResultSet::FETCHMODE_ASSOC); + + $rsCriteria1->next(); + $row1 = $rsCriteria1->getRow(); + + $processUid = $row1["PRO_UID"]; + + $criteria2 = new Criteria("workflow"); + + //SELECT + $criteria2->addSelectColumn(AdditionalTablesPeer::ADD_TAB_NAME); + + //FROM + + //WHERE + + $criteria2->add(AdditionalTablesPeer::PRO_UID, $processUid); + + //QUERY + $rsCriteria2 = AdditionalTablesPeer::doSelectRS($criteria2); + $rsCriteria2->setFetchmode(ResultSet::FETCHMODE_ASSOC); + + G::LoadClass("pmTable"); + $pmTable = new PmTable(); + + while ($rsCriteria2->next()) { + try { + $row2 = $rsCriteria2->getRow(); + $tableName = $row2["ADD_TAB_NAME"]; + $pmTableName = $pmTable->toCamelCase($tableName); + + //DELETE + require_once (PATH_WORKSPACE . "classes" . PATH_SEP . "$pmTableName.php"); + + $criteria3 = new Criteria("workflow"); + + eval("\$criteria3->add(" . $pmTableName . "Peer::APP_UID, \$applicationUid);"); + eval($pmTableName . "Peer::doDelete(\$criteria3);"); + + } catch (Exception $e) { + throw $e; + } + } + } } diff --git a/workflow/engine/classes/class.pmTable.php b/workflow/engine/classes/class.pmTable.php index eb893d19f..5a9f950ad 100755 --- a/workflow/engine/classes/class.pmTable.php +++ b/workflow/engine/classes/class.pmTable.php @@ -864,58 +864,5 @@ class PmTable $m->execute( $args ); $m->runBuild(); } - - public function reportTableDeleteRecord($applicationUid) - { - $criteria1 = new Criteria("workflow"); - - //SELECT - $criteria1->addSelectColumn(ApplicationPeer::PRO_UID); - - //FROM - - //WHERE - $criteria1->add(ApplicationPeer::APP_UID, $applicationUid); - - //QUERY - $rsCriteria1 = ApplicationPeer::doSelectRS($criteria1); - $rsCriteria1->setFetchmode(ResultSet::FETCHMODE_ASSOC); - - while ($rsCriteria1->next()) { - $row1 = $rsCriteria1->getRow(); - $processUid = $row1["PRO_UID"]; - - $criteria2 = new Criteria("workflow"); - - //SELECT - $criteria2->addSelectColumn(AdditionalTablesPeer::ADD_TAB_NAME); - - //FROM - - //WHERE - $criteria2->add(AdditionalTablesPeer::PRO_UID, $processUid); - - //QUERY - $rsCriteria2 = AdditionalTablesPeer::doSelectRS($criteria2); - $rsCriteria2->setFetchmode(ResultSet::FETCHMODE_ASSOC); - - while ($rsCriteria2->next()) { - $row2 = $rsCriteria2->getRow(); - $tableName = $row2["ADD_TAB_NAME"]; - - $tableName = str_replace("_", " ", $tableName); - $tableName = str_replace(" ", "", ucwords(strtolower($tableName))); - - //DELETE - require_once (PATH_WORKSPACE . "classes" . PATH_SEP . "$tableName.php"); - - $criteria3 = new Criteria("workflow"); - - eval("\$criteria3->add(" . $tableName . "Peer::APP_UID, \$applicationUid);"); - eval($tableName . "Peer::doDelete(\$criteria3);"); - } - - } - } } diff --git a/workflow/engine/controllers/adhocUserProxy.php b/workflow/engine/controllers/adhocUserProxy.php index 3ca3c4ba7..3d6562e9c 100755 --- a/workflow/engine/controllers/adhocUserProxy.php +++ b/workflow/engine/controllers/adhocUserProxy.php @@ -61,12 +61,8 @@ class adhocUserProxy extends HttpProxyController $caseData = $app->load( $applicationUID ); $data['APP_NUMBER'] = $caseData['APP_NUMBER']; - G::LoadClass("pmTable"); - - $pmTable = new PmTable(); - $pmTable->reportTableDeleteRecord($applicationUID); - $oCase = new Cases(); + $oCase->reportTableDeleteRecord($applicationUID); $oCase->removeCase( $applicationUID ); $this->success = true; diff --git a/workflow/engine/methods/cases/cases_Delete.php b/workflow/engine/methods/cases/cases_Delete.php index d708cec45..f6397ef72 100755 --- a/workflow/engine/methods/cases/cases_Delete.php +++ b/workflow/engine/methods/cases/cases_Delete.php @@ -48,7 +48,7 @@ try { $pmTable = new PmTable(); foreach ($ids as $id) { - $pmTable->reportTableDeleteRecord($id); + $oCase->reportTableDeleteRecord($id); $oCase->removeCase( $id ); }