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:
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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'];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user