From 8c9b312b9f8b471497959c57af34933df937355c Mon Sep 17 00:00:00 2001 From: Julio Cesar Laura Date: Thu, 26 Jun 2014 15:25:06 -0400 Subject: [PATCH] =?UTF-8?q?BUG=2015225=20La=20bandeja=20"Sin=20asignar",?= =?UTF-8?q?=20tarda=20demasiado=20en=20cargar=20cuando=20la=20regla=20de?= =?UTF-8?q?=20asignaci=C3=B3s=20"Self=20Service=20Value=20Based=20Assignme?= =?UTF-8?q?nt"=20SOLVED?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - La funcion "LoadCase" de la clase "Cases" se usaba N veces y provocaba la lentitud - Se optimizo el query para que no sea necesario usar la funcion "LoadCase" varias veces --- workflow/engine/classes/class.case.php | 29 ++++++++++++------- .../engine/classes/model/AppCacheView.php | 11 ++++--- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/workflow/engine/classes/class.case.php b/workflow/engine/classes/class.case.php index bdbeb7718..c3c2cb5ba 100755 --- a/workflow/engine/classes/class.case.php +++ b/workflow/engine/classes/class.case.php @@ -512,16 +512,11 @@ class Cases try { $oApp = new Application; $aFields = $oApp->Load($sAppUid); - //$aFields = $oApp->toArray(BasePeer::TYPE_FIELDNAME); - $appData = @unserialize($aFields['APP_DATA']); - // BUG 8134, FIX!// for single/double quote troubles // Unserialize with utf8 content get trouble - if ($appData === false) { - $appData = preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('$2').':\"$2\";'", $aFields['APP_DATA']); - $appData = @unserialize($appData); - } + $appData = self::unserializeData($aFields['APP_DATA']); $aFields['APP_DATA'] = G::array_merges(G::getSystemConstants(), $appData); + switch ($oApp->getAppStatus()) { case 'COMPLETED': $aFields['STATUS'] = G::LoadTranslation('ID_COMPLETED'); @@ -6456,13 +6451,13 @@ class Cases $row[] = $aUser['USR_UID']; } } - - global $RBAC; - //Adding the actual user if this has the PM_REASSIGNCASE permission assigned. + + global $RBAC; + //Adding the actual user if this has the PM_REASSIGNCASE permission assigned. if ($RBAC->userCanAccess('PM_REASSIGNCASE') == 1){ if(!in_array($RBAC->aUserInfo['USER_INFO']['USR_UID'], $row)){ $row[] = $RBAC->aUserInfo['USER_INFO']['USR_UID']; - } + } } require_once 'classes/model/Users.php'; @@ -6728,4 +6723,16 @@ class Cases } } } + + public function unserializeData($data) { + $unserializedData = @unserialize($data); + + // BUG 8134, FIX!// for single/double quote troubles // Unserialize with utf8 content get trouble + if ($unserializedData === false) { + $unserializedData = preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('$2').':\"$2\";'", $data); + $unserializedData = @unserialize($unserializedData); + } + + return $unserializedData; + } } \ No newline at end of file diff --git a/workflow/engine/classes/model/AppCacheView.php b/workflow/engine/classes/model/AppCacheView.php index c1a802df6..cc049f67a 100755 --- a/workflow/engine/classes/model/AppCacheView.php +++ b/workflow/engine/classes/model/AppCacheView.php @@ -361,6 +361,8 @@ class AppCacheView extends BaseAppCacheView $c2 = new Criteria(); $c2->clearSelectColumns(); $c2->addSelectColumn(AppDelegationPeer::APP_UID); + $c2->addSelectColumn(ApplicationPeer::APP_DATA); + $c2->addJoin(AppDelegationPeer::APP_UID, ApplicationPeer::APP_UID, Criteria::LEFT_JOIN); $c2->add(AppDelegationPeer::TAS_UID, $row['TAS_UID']); $c2->add(AppDelegationPeer::USR_UID, ''); $c2->add(AppDelegationPeer::DEL_THREAD_STATUS, 'OPEN'); @@ -368,10 +370,11 @@ class AppCacheView extends BaseAppCacheView $rs2->setFetchmode(ResultSet::FETCHMODE_ASSOC); $rs2->next(); while ($row2 = $rs2->getRow()) { - $caseData = $caseInstance->LoadCase($row2['APP_UID']); - if (isset($caseData['APP_DATA'][$tasGroupVariable])) { - if (trim($caseData['APP_DATA'][$tasGroupVariable]) != '') { - if (in_array(trim($caseData['APP_DATA'][$tasGroupVariable]), $aGroups)) { + $caseData = $caseInstance->unserializeData($row2['APP_DATA']); + + if (isset($caseData[$tasGroupVariable])) { + if (trim($caseData[$tasGroupVariable]) != '') { + if (in_array(trim($caseData[$tasGroupVariable]), $aGroups)) { $cases[] = $row2['APP_UID']; } }