diff --git a/application/modules/requests/controllers/IndexController.php b/application/modules/requests/controllers/IndexController.php index 9f6b67f997a051f55f5653be9e3921036bd8ddba..7fe94a0e7dd8cad922afd09c78d26b262e746013 100644 --- a/application/modules/requests/controllers/IndexController.php +++ b/application/modules/requests/controllers/IndexController.php @@ -46,6 +46,18 @@ class Requests_IndexController extends App_Controller_Action $savedRequests = array(); } + + if (!Unl_Util::isArray($session->sortBy)) { + $session->sortBy = array(); + } + if ($in['sortBy']) { + $oldSortByKey = array_search($in['sortBy'], $session->sortBy); + unset($session->sortBy[$oldSortByKey]); + array_unshift($session->sortBy, $in['sortBy']); + } + + + $sortKeys = array(); $userRequestsData = array(); foreach ($userRequests as $requestId => $userRequest) @@ -64,16 +76,19 @@ class Requests_IndexController extends App_Controller_Action if ($requestVotes[$requestId] instanceof Requests_ApproverVoteModel) { $request['vote'] = $requestVotes[$requestId]; } - if ($in['sortBy'] == 'courseCode') { - $sortKeys[] = $request['currentCourse']->getCourseCode(); - } else if ($in['sortBy'] == 'college') { - $sortKeys[] = $request['currentCourse']->getCollege(); - } else if ($in['sortBy'] == 'requestType') { - $sortKeys[] = $request['request']->getType(); + foreach ($session->sortBy as $key => $sortBy) { + if ($sortBy == 'courseCode') { + $sortKeys[$key][] = $request['currentCourse']->getCourseCode(); + } else if ($sortBy == 'college') { + $sortKeys[$key][] = $request['currentCourse']->getCollege(); + } else if ($sortBy == 'requestType') { + $sortKeys[$key][] = $request['request']->getType(); + } } $userRequestsData[] = $request; } - array_multisort($sortKeys, $userRequestsData); + $sortKeys[] =& $userRequestsData; + call_user_func_array('array_multisort', $sortKeys); $roleData = array(); foreach ($userRoles as $roleId => $userRole) { @@ -98,16 +113,21 @@ class Requests_IndexController extends App_Controller_Action if ($requestVotes[$requestId] instanceof Requests_ApproverVoteModel) { $request['vote'] = $requestVotes[$requestId]; } - if ($in['sortBy'] == 'courseCode') { - $sortKeys[] = $request['currentCourse']->getCourseCode(); - } else if ($in['sortBy'] == 'college') { - $sortKeys[] = $request['currentCourse']->getCollege(); - } else if ($in['sortBy'] == 'requestType') { - $sortKeys[] = $request['request']->getType(); - } + foreach ($session->sortBy as $key => $sortBy) { + if ($sortBy == 'courseCode') { + $sortKeys[$key][] = $request['currentCourse']->getCourseCode(); + } else if ($sortBy == 'college') { + $sortKeys[$key][] = $request['currentCourse']->getCollege(); + } else if ($sortBy == 'requestType') { + $sortKeys[$key][] = $request['request']->getType(); + } else if ($sortBy == 'pendingAction') { + $sortKeys[$key][] = $request['action']->getName(); + } + } $role['requests'][] = $request; } - array_multisort($sortKeys, $role['requests']); + $sortKeys[] =& $role['requests']; + call_user_func_array('array_multisort', $sortKeys); } if (Unl_Util::isArray($watchingRequests[$roleId])) { @@ -124,16 +144,19 @@ class Requests_IndexController extends App_Controller_Action } else { $request['viewTime'] = 0; } - if ($in['sortBy'] == 'courseCode') { - $sortKeys[] = $request['currentCourse']->getCourseCode(); - } else if ($in['sortBy'] == 'college') { - $sortKeys[] = $request['currentCourse']->getCollege(); - } else if ($in['sortBy'] == 'requestType') { - $sortKeys[] = $request['request']->getType(); - } + foreach ($session->sortBy as $key => $sortBy) { + if ($sortBy == 'courseCode') { + $sortKeys[$key][] = $request['currentCourse']->getCourseCode(); + } else if ($sortBy == 'college') { + $sortKeys[$key][] = $request['currentCourse']->getCollege(); + } else if ($sortBy == 'requestType') { + $sortKeys[$key][] = $request['request']->getType(); + } + } $role['watchingRequests'][] = $request; } - array_multisort($sortKeys, $role['watchingRequests']); + $sortKeys[] =& $role['watchingRequests']; + call_user_func_array('array_multisort', $sortKeys); } $roleData[] = $role; } diff --git a/application/modules/requests/views/scripts/index/index.phtml b/application/modules/requests/views/scripts/index/index.phtml index 1fe31dde7b2cbfa39b4e70696c5586f6c54632a3..e0cf87363b7db29657a03f57b3d8ae0af3e6c00a 100644 --- a/application/modules/requests/views/scripts/index/index.phtml +++ b/application/modules/requests/views/scripts/index/index.phtml @@ -252,7 +252,7 @@ foreach($this->roles as $roleData) { <th class="course"><a href="<?php echo $this->url(array('sortBy' => 'courseCode')); ?>">Course</a></th> <th class="college"><a href="<?php echo $this->url(array('sortBy' => 'college')); ?>">College</a></th> <th class="type"><a href="<?php echo $this->url(array('sortBy' => 'requestType')); ?>">Type</a></th> - <th class="pending_action">Pending Action</th> + <th class="pending_action"><a href="<?php echo $this->url(array('sortBy' => 'pendingAction')); ?>">Pending Action</a></th> <th class="status">Status</th> <th class="view_edit">View/Edit</th> </tr>