BUG 15225 La bandeja "Sin asignar", tarda demasiado en cargar cuando la regla de asignaciós "Self Service Value Based Assignment" SOLVED

- 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
This commit is contained in:
Julio Cesar Laura
2014-06-26 15:25:06 -04:00
parent c06be2fca4
commit 8c9b312b9f
2 changed files with 25 additions and 15 deletions

View File

@@ -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;
}
}

View File

@@ -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'];
}
}