From 5fe18df3ba79acf95646fc92297c97cb0c75eecd Mon Sep 17 00:00:00 2001
From: Tim Steiner <tsteiner2@unl.edu>
Date: Fri, 27 Jun 2008 15:30:52 +0000
Subject: [PATCH] Basic sorting of requests on My Requests page re-added.

---
 .../requests/controllers/IndexController.php  | 28 +++++++++++++++++++
 .../requests/views/scripts/index/index.phtml  | 24 ++++++++--------
 2 files changed, 40 insertions(+), 12 deletions(-)

diff --git a/application/modules/requests/controllers/IndexController.php b/application/modules/requests/controllers/IndexController.php
index 47a62c3c..9f6b67f9 100644
--- a/application/modules/requests/controllers/IndexController.php
+++ b/application/modules/requests/controllers/IndexController.php
@@ -17,6 +17,7 @@ class Requests_IndexController extends App_Controller_Action
 	public function indexAction()
 	{
 		$this->_authorize->requireLogin();
+		$in = $this->getRequest()->getParams();
 
 		$user = Auth_UserModel::findCurrentUser();
 		$userRoles = Requests_ApprovalRoleModel::findByUser($user);
@@ -45,6 +46,7 @@ class Requests_IndexController extends App_Controller_Action
             $savedRequests = array();
 		}
 
+		$sortKeys = array();
 		$userRequestsData = array();
 		foreach ($userRequests as $requestId => $userRequest)
 		{
@@ -62,8 +64,16 @@ 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();
+            }
             $userRequestsData[] = $request;
 		}
+		array_multisort($sortKeys, $userRequestsData);
 
 		$roleData = array();
 		foreach ($userRoles as $roleId => $userRole) {
@@ -72,6 +82,7 @@ class Requests_IndexController extends App_Controller_Action
 			$role['requests'] = array();
 
 		    if (Unl_Util::isArray($roleRequests[$roleId])) {
+		    	$sortKeys = array();
                 foreach($roleRequests[$roleId] as $requestId => $roleRequest) {
                     $request = array();
                     $request['request'] = $roleRequest;
@@ -87,11 +98,20 @@ 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();
+                    }
                     $role['requests'][] = $request;
                 }
+                array_multisort($sortKeys, $role['requests']);
             }
 
 		    if (Unl_Util::isArray($watchingRequests[$roleId])) {
+		    	$sortKeys = array();
                 foreach($watchingRequests[$roleId] as $requestId => $watchingRequest) {
                     $request = array();
                     $request['request'] = $watchingRequest;
@@ -104,8 +124,16 @@ 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();
+                    }
                     $role['watchingRequests'][] = $request;
                 }
+                array_multisort($sortKeys, $role['watchingRequests']);
             }
 			$roleData[] = $role;
 		}
diff --git a/application/modules/requests/views/scripts/index/index.phtml b/application/modules/requests/views/scripts/index/index.phtml
index c5d7a0af..1fe31dde 100644
--- a/application/modules/requests/views/scripts/index/index.phtml
+++ b/application/modules/requests/views/scripts/index/index.phtml
@@ -48,9 +48,9 @@
         <table class="course_list">
             <tr>
                 <!-- th id="check">&#160;</th -->
-                <th id="course">Course</th>
-                <th id="college">College</th>
-                <th id="type">Type</th>
+                <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 id="view_edit">View/Edit</th>
             </tr>
             <?php
@@ -112,9 +112,9 @@
         <table class="course_list">
             <tr>
                 <!-- th id="check">&#160;</th -->
-                <th id="course"><a href="#">Course</a></th>
-                <th id="college"><a href="#">College</a></th>
-                <th id="type"><a href="#">Type</a></th>
+                <th id="course"><a href="<?php echo $this->url(array('sortBy' => 'courseCode')); ?>">Course</a></th>
+                <th id="college"><a href="<?php echo $this->url(array('sortBy' => 'college')); ?>">College</a></th>
+                <th id="type"><a href="<?php echo $this->url(array('sortBy' => 'requestType')); ?>">Type</a></th>
                 <th id="approval_body">Approval Body</th>
                 <th id="status">Status</th>
                 <th id="view_edit">View/Edit</th>
@@ -249,9 +249,9 @@ foreach($this->roles as $roleData) {
             <table class="course_list">
                 <tr>
                     <!-- th id="check">&#160;</th -->
-                    <th class="course"><a href="#">Course</a></th>
-                    <th class="college"><a href="#">College</a></th>
-                    <th class="type"><a href="#">Type</a></th>
+                    <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="status">Status</th>
                     <th class="view_edit">View/Edit</th>
@@ -358,9 +358,9 @@ foreach($this->roles as $roleData) {
         <table class="course_list">
             <tr>
                 <!-- th id="check">&#160;</th -->
-                <th class="course">Course</th>
-                <th class="college">College</th>
-                <th class="type">Type</th>
+                <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="approval_body">Approval Body</th>
                 <th class="status">Status</th>
                 <th class="view_edit">View/Edit</th>
-- 
GitLab