From 756a126a1c48d941fcc99451ed1d4c8c88284a2e Mon Sep 17 00:00:00 2001 From: jennylee Date: Wed, 6 Nov 2013 13:34:25 -0400 Subject: [PATCH 1/5] BUG-13421 Ordenamiento en el listado de procesos 'Designer'. Se agregaron validaciones en los files: workflow/engine/classes/model/Process.php y workflow/engine/methods/processes/processesList.php para que se realize el ordenamiento ASC y DESC tomando en cuenta si se encuentra o no habilitado el uso de 'memcache' para listar de una forma mas veloz todos los procesos. --- workflow/engine/classes/model/Process.php | 61 ++++++++++++------- .../methods/processes/processesList.php | 7 ++- workflow/engine/templates/processes/main.js | 1 + 3 files changed, 44 insertions(+), 25 deletions(-) diff --git a/workflow/engine/classes/model/Process.php b/workflow/engine/classes/model/Process.php index b1372574c..54d834691 100755 --- a/workflow/engine/classes/model/Process.php +++ b/workflow/engine/classes/model/Process.php @@ -387,7 +387,7 @@ class Process extends BaseProcess } } - usort( $processes, 'ordProcessByProTitle' ); + usort( $processes, 'ordProcess' ); return $processes; } @@ -589,7 +589,7 @@ class Process extends BaseProcess public function getAllProcesses ($start, $limit, $category = null, $processName = null, $counters = true, $reviewSubProcess = false) { - require_once PATH_RBAC . "model/RbacUsers.php"; + require_once PATH_RBAC . "model/RbacUsers.php"; require_once "classes/model/ProcessCategory.php"; require_once "classes/model/Users.php"; @@ -629,14 +629,7 @@ class Process extends BaseProcess $this->tmpCriteria = clone $oCriteria; - if ($start != '') { - $oCriteria->setOffset( $start ); - } - if ($limit != '' && ! isset( $category ) && ! isset( $processName )) { - $oCriteria->setLimit( $limit ); - } - - //execute a query to obtain numbers, how many cases there are by process + //execute a query to obtain numbers, how many cases there are by process if ($counters) { $casesCnt = $this->getCasesCountInAllProcesses(); } @@ -741,8 +734,13 @@ class Process extends BaseProcess $aProcesses[] = $process; } - - usort( $aProcesses, 'ordProcessByProTitle' ); + + $memcache = & PMmemcached::getSingleton( SYS_SYS ); + if ($memcache->enabled == 0) { + usort( $aProcesses, 'ordProcess' ); + $aProcesses = array_splice($aProcesses, $start, $limit); + } + return $aProcesses; } @@ -848,16 +846,35 @@ class Process extends BaseProcess $r = $memcache->delete( $memkeyTotal ); } } -} - -function ordProcessByProTitle ($a, $b) -{ - if ($a['PRO_TITLE'] > $b['PRO_TITLE']) { - return 1; - } elseif ($a['PRO_TITLE'] < $b['PRO_TITLE']) { - return - 1; - } else { - return 0; + + public function orderMemcache($dataMemcache, $start, $limit) + { + usort( $dataMemcache, 'ordProcess' ); + $dataMemcache = array_splice($dataMemcache, $start, $limit); + return $dataMemcache; + } +} + +function ordProcess ($a, $b) +{ + if (isset($_POST['sort'])) { + if ($_POST['dir']=='ASC') { + if ($a[$_POST['sort']] > $b[$_POST['sort']]) { + return 1; + } elseif ($a[$_POST['sort']] < $b[$_POST['sort']]) { + return - 1; + } else { + return 0; + } + } else { + if ($a[$_POST['sort']] > $b[$_POST['sort']]) { + return - 1; + } elseif ($a[$_POST['sort']] < $b[$_POST['sort']]) { + return 1; + } else { + return 0; + } + } } } diff --git a/workflow/engine/methods/processes/processesList.php b/workflow/engine/methods/processes/processesList.php index ec0fa3716..6188f6a51 100755 --- a/workflow/engine/methods/processes/processesList.php +++ b/workflow/engine/methods/processes/processesList.php @@ -34,7 +34,6 @@ $oProcess = new Process(); $memkey = 'no memcache'; $memcacheUsed = 'not used'; $totalCount = 0; - if (isset( $_POST['category'] ) && $_POST['category'] !== '') { if (isset( $_POST['processName'] )) $proData = $oProcess->getAllProcesses( $start, $limit, $_POST['category'], $_POST['processName'] ); @@ -54,12 +53,14 @@ if (isset( $_POST['category'] ) && $_POST['category'] !== '') { $memkeyTotal = $memkey . '-total'; $memcacheUsed = 'yes'; if (($proData = $memcache->get( $memkey )) === false || ($totalCount = $memcache->get( $memkeyTotal )) === false) { - $proData = $oProcess->getAllProcesses( $start, $limit ); + $proData = $oProcess->getAllProcesses( $start, $limit ); $totalCount = $oProcess->getAllProcessesCount(); $memcache->set( $memkey, $proData, PMmemcached::ONE_HOUR ); $memcache->set( $memkeyTotal, $totalCount, PMmemcached::ONE_HOUR ); $memcacheUsed = 'no'; - } + } else { + $proData = $oProcess->orderMemcache($proData, $start, $limit); + } } } $r = new stdclass(); diff --git a/workflow/engine/templates/processes/main.js b/workflow/engine/templates/processes/main.js index de6584167..5b7eecca9 100755 --- a/workflow/engine/templates/processes/main.js +++ b/workflow/engine/templates/processes/main.js @@ -37,6 +37,7 @@ Ext.onReady(function(){ store = new Ext.data.GroupingStore( { //var store = new Ext.data.Store( { + remoteSort: true, proxy : new Ext.data.HttpProxy({ url: 'processesList' }), From ab5b270ff291a5ac293ed399795bacda0eee215b Mon Sep 17 00:00:00 2001 From: jennylee Date: Thu, 7 Nov 2013 10:09:37 -0400 Subject: [PATCH 2/5] BUG-13421 Ordenamiento en el listado de procesos 'Designer'. Se agregaron validaciones en los files: workflow/engine/classes/model/Process.php y workflow/engine/methods/processes/processesList.php para que se realize el ordenamiento ASC y DESC tomando en cuenta si se encuentra o no habilitado el uso de 'memcache' para listar de una forma mas veloz todos los procesos. --- workflow/engine/classes/model/Process.php | 60 +++++++++++-------- .../methods/processes/processesList.php | 11 ++-- 2 files changed, 40 insertions(+), 31 deletions(-) diff --git a/workflow/engine/classes/model/Process.php b/workflow/engine/classes/model/Process.php index 54d834691..f7fae9a36 100755 --- a/workflow/engine/classes/model/Process.php +++ b/workflow/engine/classes/model/Process.php @@ -587,7 +587,7 @@ class Process extends BaseProcess } } - public function getAllProcesses ($start, $limit, $category = null, $processName = null, $counters = true, $reviewSubProcess = false) + public function getAllProcesses ($start, $limit, $category = null, $processName = null, $counters = true, $reviewSubProcess = false, $dir = 'ASC') { require_once PATH_RBAC . "model/RbacUsers.php"; require_once "classes/model/ProcessCategory.php"; @@ -737,7 +737,11 @@ class Process extends BaseProcess $memcache = & PMmemcached::getSingleton( SYS_SYS ); if ($memcache->enabled == 0) { - usort( $aProcesses, 'ordProcess' ); + if ($dir=='ASC') { + usort( $aProcesses, 'ordProcessAsc' ); + } else { + usort( $aProcesses, 'ordProcessDesc' ); + } $aProcesses = array_splice($aProcesses, $start, $limit); } @@ -847,34 +851,38 @@ class Process extends BaseProcess } } - public function orderMemcache($dataMemcache, $start, $limit) + public function orderMemcache($dataMemcache, $start, $limit, $dir) { - usort( $dataMemcache, 'ordProcess' ); - $dataMemcache = array_splice($dataMemcache, $start, $limit); + if ($dir=='ASC') { + usort( $dataMemcache, 'ordProcessAsc' ); + } else { + usort( $dataMemcache, 'ordProcessDesc' ); + } + $dataMemcache = array_splice($dataMemcache, $start, $limit); return $dataMemcache; } } -function ordProcess ($a, $b) -{ - if (isset($_POST['sort'])) { - if ($_POST['dir']=='ASC') { - if ($a[$_POST['sort']] > $b[$_POST['sort']]) { - return 1; - } elseif ($a[$_POST['sort']] < $b[$_POST['sort']]) { - return - 1; - } else { - return 0; - } - } else { - if ($a[$_POST['sort']] > $b[$_POST['sort']]) { - return - 1; - } elseif ($a[$_POST['sort']] < $b[$_POST['sort']]) { - return 1; - } else { - return 0; - } - } - } +function ordProcessAsc ($a, $b) +{ + if ($a[$_POST['sort']] > $b[$_POST['sort']]) { + return 1; + } elseif ($a[$_POST['sort']] < $b[$_POST['sort']]) { + return - 1; + } else { + return 0; + } + +} + +function ordProcessDesc ($a, $b) +{ + if ($a[$_POST['sort']] > $b[$_POST['sort']]) { + return - 1; + } elseif ($a[$_POST['sort']] < $b[$_POST['sort']]) { + return 1; + } else { + return 0; + } } diff --git a/workflow/engine/methods/processes/processesList.php b/workflow/engine/methods/processes/processesList.php index 6188f6a51..1f8e65f10 100755 --- a/workflow/engine/methods/processes/processesList.php +++ b/workflow/engine/methods/processes/processesList.php @@ -26,6 +26,7 @@ require_once 'classes/model/Process.php'; $start = isset( $_POST['start'] ) ? $_POST['start'] : 0; $limit = isset( $_POST['limit'] ) ? $_POST['limit'] : ''; +$dir = isset( $_POST['dir'] ) ? $_POST['dir'] : 'ASC'; $oProcess = new Process(); @@ -36,15 +37,15 @@ $memcacheUsed = 'not used'; $totalCount = 0; if (isset( $_POST['category'] ) && $_POST['category'] !== '') { if (isset( $_POST['processName'] )) - $proData = $oProcess->getAllProcesses( $start, $limit, $_POST['category'], $_POST['processName'] ); + $proData = $oProcess->getAllProcesses( $start, $limit, $_POST['category'], $_POST['processName'], null, null, $dir); else - $proData = $oProcess->getAllProcesses( $start, $limit, $_POST['category'] ); + $proData = $oProcess->getAllProcesses( $start, $limit, $_POST['category'], null, null, null, $dir ); } else { if (isset( $_POST['processName'] )) { $memkey = 'processList-' . $start . '-' . $limit . '-' . $_POST['processName']; $memcacheUsed = 'yes'; if (($proData = $memcache->get( $memkey )) === false) { - $proData = $oProcess->getAllProcesses( $start, $limit, null, $_POST['processName'] ); + $proData = $oProcess->getAllProcesses( $start, $limit, null, $_POST['processName'], null, null, $dir ); $memcache->set( $memkey, $proData, PMmemcached::ONE_HOUR ); $memcacheUsed = 'no'; } @@ -53,13 +54,13 @@ if (isset( $_POST['category'] ) && $_POST['category'] !== '') { $memkeyTotal = $memkey . '-total'; $memcacheUsed = 'yes'; if (($proData = $memcache->get( $memkey )) === false || ($totalCount = $memcache->get( $memkeyTotal )) === false) { - $proData = $oProcess->getAllProcesses( $start, $limit ); + $proData = $oProcess->getAllProcesses( $start, $limit, null, null, null, null, $dir ); $totalCount = $oProcess->getAllProcessesCount(); $memcache->set( $memkey, $proData, PMmemcached::ONE_HOUR ); $memcache->set( $memkeyTotal, $totalCount, PMmemcached::ONE_HOUR ); $memcacheUsed = 'no'; } else { - $proData = $oProcess->orderMemcache($proData, $start, $limit); + $proData = $oProcess->orderMemcache($proData, $start, $limit, $dir); } } } From ac7d34c8ae71e5e605aa64d1a0575889634b44ba Mon Sep 17 00:00:00 2001 From: jennylee Date: Thu, 7 Nov 2013 11:51:47 -0400 Subject: [PATCH 3/5] BUG-13421 Ordenamiento en el listado de procesos 'Designer'. Agregada validacion para no romper el listado de procesos en HOME>New Case. --- workflow/engine/classes/model/Process.php | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/workflow/engine/classes/model/Process.php b/workflow/engine/classes/model/Process.php index f7fae9a36..b78f580fe 100755 --- a/workflow/engine/classes/model/Process.php +++ b/workflow/engine/classes/model/Process.php @@ -736,15 +736,20 @@ class Process extends BaseProcess } $memcache = & PMmemcached::getSingleton( SYS_SYS ); - if ($memcache->enabled == 0) { - if ($dir=='ASC') { - usort( $aProcesses, 'ordProcessAsc' ); - } else { - usort( $aProcesses, 'ordProcessDesc' ); - } - $aProcesses = array_splice($aProcesses, $start, $limit); + if (isset($memcache) && $memcache->enabled == 1 ) { + return $aProcesses; } - + + if ($limit == '') { + $limit = count($aProcesses); + } + if ($dir=='ASC') { + usort( $aProcesses, 'ordProcessAsc' ); + } else { + usort( $aProcesses, 'ordProcessDesc' ); + } + $aProcesses = array_splice($aProcesses, $start, $limit); + return $aProcesses; } From c319bfa116f48e5d17c90443458c555d028092d1 Mon Sep 17 00:00:00 2001 From: jennylee Date: Thu, 7 Nov 2013 12:51:41 -0400 Subject: [PATCH 4/5] BUG-13421 Ordenamiento en el listado de procesos 'Designer'. Agregada validacion para no romper el listado de procesos en HOME>New Case. --- workflow/engine/classes/model/Process.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/workflow/engine/classes/model/Process.php b/workflow/engine/classes/model/Process.php index b78f580fe..523df7e4d 100755 --- a/workflow/engine/classes/model/Process.php +++ b/workflow/engine/classes/model/Process.php @@ -387,7 +387,12 @@ class Process extends BaseProcess } } - usort( $processes, 'ordProcess' ); + if ($_POST['dir']=='ASC') { + usort( $processes, 'ordProcessAsc' ); + } else { + usort( $processes, 'ordProcessDesc' ); + } + return $processes; } From 4d357d136c2b2434e0d8e5bb7627c65a76767616 Mon Sep 17 00:00:00 2001 From: jennylee Date: Fri, 8 Nov 2013 09:06:18 -0400 Subject: [PATCH 5/5] BUG-13421 Ordenamiento en el listado de procesos 'Designer'. Correggiones para no usar variables de session. --- workflow/engine/classes/model/Process.php | 45 ++++++++++--------- .../methods/processes/processesList.php | 13 +++--- 2 files changed, 31 insertions(+), 27 deletions(-) diff --git a/workflow/engine/classes/model/Process.php b/workflow/engine/classes/model/Process.php index 523df7e4d..0e5159baa 100755 --- a/workflow/engine/classes/model/Process.php +++ b/workflow/engine/classes/model/Process.php @@ -48,6 +48,8 @@ class Process extends BaseProcess * @var string */ protected $pro_title = ''; + public $dir = 'ASC'; + public $sort = ''; /** * Get the [Pro_title] column value. @@ -387,10 +389,10 @@ class Process extends BaseProcess } } - if ($_POST['dir']=='ASC') { - usort( $processes, 'ordProcessAsc' ); + if ($this->dir=='ASC') { + usort( $processes, array($this, "ordProcessAsc") ); } else { - usort( $processes, 'ordProcessDesc' ); + usort( $processes, array($this, "ordProcessDesc") ); } return $processes; @@ -592,7 +594,7 @@ class Process extends BaseProcess } } - public function getAllProcesses ($start, $limit, $category = null, $processName = null, $counters = true, $reviewSubProcess = false, $dir = 'ASC') + public function getAllProcesses ($start, $limit, $category = null, $processName = null, $counters = true, $reviewSubProcess = false) { require_once PATH_RBAC . "model/RbacUsers.php"; require_once "classes/model/ProcessCategory.php"; @@ -748,10 +750,10 @@ class Process extends BaseProcess if ($limit == '') { $limit = count($aProcesses); } - if ($dir=='ASC') { - usort( $aProcesses, 'ordProcessAsc' ); + if ($this->dir=='ASC') { + usort( $aProcesses, array($this, "ordProcessAsc") ); } else { - usort( $aProcesses, 'ordProcessDesc' ); + usort( $aProcesses, array($this, "ordProcessDesc") ); } $aProcesses = array_splice($aProcesses, $start, $limit); @@ -861,38 +863,37 @@ class Process extends BaseProcess } } - public function orderMemcache($dataMemcache, $start, $limit, $dir) + public function orderMemcache($dataMemcache, $start, $limit) { - if ($dir=='ASC') { - usort( $dataMemcache, 'ordProcessAsc' ); + if ($this->dir=='ASC') { + usort( $dataMemcache, array($this, "ordProcessAsc") ); } else { - usort( $dataMemcache, 'ordProcessDesc' ); + usort( $dataMemcache, array($this, "ordProcessDesc") ); } $dataMemcache = array_splice($dataMemcache, $start, $limit); return $dataMemcache; } -} -function ordProcessAsc ($a, $b) -{ - if ($a[$_POST['sort']] > $b[$_POST['sort']]) { + public function ordProcessAsc ($a, $b) + { + if ($a[$this->sort] > $b[$this->sort]) { return 1; - } elseif ($a[$_POST['sort']] < $b[$_POST['sort']]) { + } elseif ($a[$this->sort] < $b[$this->sort]) { return - 1; } else { return 0; } - -} + } -function ordProcessDesc ($a, $b) -{ - if ($a[$_POST['sort']] > $b[$_POST['sort']]) { + public function ordProcessDesc ($a, $b) + { + if ($a[$this->sort] > $b[$this->sort]) { return - 1; - } elseif ($a[$_POST['sort']] < $b[$_POST['sort']]) { + } elseif ($a[$this->sort] < $b[$this->sort]) { return 1; } else { return 0; } + } } diff --git a/workflow/engine/methods/processes/processesList.php b/workflow/engine/methods/processes/processesList.php index 1f8e65f10..084e9bd12 100755 --- a/workflow/engine/methods/processes/processesList.php +++ b/workflow/engine/methods/processes/processesList.php @@ -27,8 +27,11 @@ require_once 'classes/model/Process.php'; $start = isset( $_POST['start'] ) ? $_POST['start'] : 0; $limit = isset( $_POST['limit'] ) ? $_POST['limit'] : ''; $dir = isset( $_POST['dir'] ) ? $_POST['dir'] : 'ASC'; +$sort = isset( $_POST['sort'] ) ? $_POST['sort'] : ''; $oProcess = new Process(); +$oProcess->dir = $dir; +$oProcess->sort = $sort; //$memcache = & PMmemcached::getSingleton( SYS_SYS ); @@ -37,15 +40,15 @@ $memcacheUsed = 'not used'; $totalCount = 0; if (isset( $_POST['category'] ) && $_POST['category'] !== '') { if (isset( $_POST['processName'] )) - $proData = $oProcess->getAllProcesses( $start, $limit, $_POST['category'], $_POST['processName'], null, null, $dir); + $proData = $oProcess->getAllProcesses( $start, $limit, $_POST['category'], $_POST['processName']); else - $proData = $oProcess->getAllProcesses( $start, $limit, $_POST['category'], null, null, null, $dir ); + $proData = $oProcess->getAllProcesses( $start, $limit, $_POST['category']); } else { if (isset( $_POST['processName'] )) { $memkey = 'processList-' . $start . '-' . $limit . '-' . $_POST['processName']; $memcacheUsed = 'yes'; if (($proData = $memcache->get( $memkey )) === false) { - $proData = $oProcess->getAllProcesses( $start, $limit, null, $_POST['processName'], null, null, $dir ); + $proData = $oProcess->getAllProcesses( $start, $limit, null, $_POST['processName']); $memcache->set( $memkey, $proData, PMmemcached::ONE_HOUR ); $memcacheUsed = 'no'; } @@ -54,13 +57,13 @@ if (isset( $_POST['category'] ) && $_POST['category'] !== '') { $memkeyTotal = $memkey . '-total'; $memcacheUsed = 'yes'; if (($proData = $memcache->get( $memkey )) === false || ($totalCount = $memcache->get( $memkeyTotal )) === false) { - $proData = $oProcess->getAllProcesses( $start, $limit, null, null, null, null, $dir ); + $proData = $oProcess->getAllProcesses( $start, $limit); $totalCount = $oProcess->getAllProcessesCount(); $memcache->set( $memkey, $proData, PMmemcached::ONE_HOUR ); $memcache->set( $memkeyTotal, $totalCount, PMmemcached::ONE_HOUR ); $memcacheUsed = 'no'; } else { - $proData = $oProcess->orderMemcache($proData, $start, $limit, $dir); + $proData = $oProcess->orderMemcache($proData, $start, $limit); } } }