From bb24e5d376a3a75a0f2b92e72e00f733ca53a643 Mon Sep 17 00:00:00 2001
From: Tim Steiner <tsteiner2@unl.edu>
Date: Tue, 1 Jul 2008 16:36:48 +0000
Subject: [PATCH] Raw dump of courses in iACE Committee now available at /iace
 in tab separated values format

---
 .../iace/controllers/IndexController.php      | 87 +++++++++++++++++++
 .../requests/models/ApprovalRoleModel.php     | 33 ++++++-
 library/Unl/Controller/Action.php             |  9 +-
 3 files changed, 126 insertions(+), 3 deletions(-)
 create mode 100644 application/modules/iace/controllers/IndexController.php

diff --git a/application/modules/iace/controllers/IndexController.php b/application/modules/iace/controllers/IndexController.php
new file mode 100644
index 00000000..813ea30c
--- /dev/null
+++ b/application/modules/iace/controllers/IndexController.php
@@ -0,0 +1,87 @@
+<?php
+
+class Iace_IndexController extends App_Controller_Action 
+{
+
+	public function indexAction()
+	{
+        $this->_disableLayoutAndView();
+        
+		$iAceRole = Requests_ApprovalRoleModel::find(114);
+		$requests = Requests_RequestModel::findByWatchingRole($iAceRole);
+		$proposedCourses = Courses_CourseModel::findLatestOfRequest($requests);
+		$parentCourses = Courses_CourseModel::findParentOfRequest($requests);
+		echo ''
+           . 'Course Code' . "\t"
+           . 'Title' . "\t"
+           . 'Crosslistings' . "\t"
+           . 'Activities' . "\t"
+           . 'Credits' . "\t"
+           . 'Grading Type' . "\t"
+           . 'DF Removal' . "\t"
+           . 'Campuses' . "\t"
+           . 'DelivelyMethods' . "\t"
+           . 'Terms Offered' . "\t"
+           . 'Effective Semester' . "\t"
+           . 'Prerequisite' . "\t"
+           . 'Notes' . "\t"
+           . 'Description' . "\t"
+           . 'Grad Credits' . "\t"
+           . 'Grad Notes' . "\t"
+           . 'Grad Prerequisites' . "\t"
+           . 'Request Type' . "\t"
+           . 'Justification' . "\t"
+           . 'ACE Outcomes' . "\t"
+           . 'ACE Reinforcements' . "\t"
+		   . "\n";
+	    foreach ($requests as $request) {
+	    	$parentCourse = $parentCourses[$request->getId()];
+	    	$proposedCourse = $proposedCourses[$request->getId()];
+	    	$course = $proposedCourse;
+	    	
+	    	$gradTieIn = $course->getGradTieIn();
+	    	$aceOutcomes = $course->getAceOutcomes();
+	    	$aceOutcomeText = '';
+	    	foreach ($aceOutcomes as $aceOutcome) {
+	    		$aceOutcomeText .= $aceOutcome['name'] . ':'
+	    		                 . $aceOutcome['justification'] . ':'
+	    		                 . $aceOutcome['studentWork'] . ':'
+	    		                 . $aceOutcome['assesmentPlan'] . ';';
+	    	}
+	    	$aceOutcomeText = strtr($aceOutcomeText, array("\n" => ' ', "\r" => ' ', "\t" => ' '));
+	    	
+	    	$aceReinforcements = $course->getAceReinforcements();
+	    	$aceReinforcementText = '';
+	    	foreach ($aceReinforcements as $aceReinforcement) {
+	    		$aceReinforcementText .= $aceReinforcement['name'] . ':'
+	    		                       . $aceReinforcement['description'] . ';';
+	    	}
+            $aceReinforcementText = strtr($aceReinforcementText, array("\n" => ' ', "\r" => ' ', "\t" => ' '));
+	    	
+	    	echo ''
+	    	   . $course->getCourseCode() . "\t"
+	    	   . $course->getTitle() . "\t"
+	    	   . $course->getCrosslistingsText() . "\t"
+	    	   . $course->getActivityText() . "\t"
+	    	   . $course->getCreditsText() . "\t"
+	    	   . $course->getGradingType() . "\t"
+	    	   . $course->getDfRemoval() . "\t"
+	    	   . implode(', ', $course->getCampuses()) . "\t"
+	    	   . implode(', ', $course->getDeliveryMethods()) . "\t"
+	    	   . implode(', ', $course->getTermsOffered()) . "\t"
+	    	   . $course->getEffectiveSemester() . "\t"
+	    	   . $course->getPrerequisite() . "\t"
+	    	   . $course->getNotes() . "\t"
+	    	   . $course->getDescription() . "\t"
+               . $gradTieIn['credits'] . "\t"
+               . $gradTieIn['notes'] . "\t"
+               . $gradTieIn['prerequisites'] . "\t"
+               . $request->getType() . "\t"
+               . $request->getJustification() . "\t"
+               . $aceOutcomeText . "\t"
+               . $aceReinforcementText . "\t"
+	    	   . "\n";
+	    }
+	}
+	
+}
\ No newline at end of file
diff --git a/application/modules/requests/models/ApprovalRoleModel.php b/application/modules/requests/models/ApprovalRoleModel.php
index 80ab878d..6d2702fd 100644
--- a/application/modules/requests/models/ApprovalRoleModel.php
+++ b/application/modules/requests/models/ApprovalRoleModel.php
@@ -2,7 +2,38 @@
 
 class Requests_ApprovalRoleModel extends Unl_Model
 {
-
+	
+    static public function find($id)
+    {
+        $db = Zend_Registry::get('db');
+        $select = new Zend_Db_Select($db);
+
+        $select->from(array('r' => 'creqApprovalBodyRoles'));
+
+        if (Unl_Util::isArray($id)) {
+            if (count($id) == 0) {
+                return new Unl_Model_Collection(__CLASS__);
+            }
+            $select->where('approvalBodyRoleId IN(?)', $id);
+        } else {
+            $select->where('approvalBodyRoleId = ?', $id);
+        }
+        $records = $select->query()->fetchAll();
+        $objects = new Unl_Model_Collection(__CLASS__);
+        foreach ($records as $record) {
+            $object = Unl_Model_Registry::getInstance()->getOrAdd(new self($record));
+            $objects[$object->getId()] = $object;
+        }
+
+        // if we were passed an array of users, return an array for each user
+        if (Unl_Util::isArray($id)) {
+            return $objects;
+        // otherwise, return an array of groups for the single user we were passed
+        } else {
+            return $objects[$id];
+        }
+    }
+    
 	static public function findByUser($user)
 	{
 		$db = Zend_Registry::get('db');
diff --git a/library/Unl/Controller/Action.php b/library/Unl/Controller/Action.php
index 7ff65886..5508ba80 100644
--- a/library/Unl/Controller/Action.php
+++ b/library/Unl/Controller/Action.php
@@ -18,10 +18,15 @@ class Unl_Controller_Action extends Zend_Controller_Action
 
     protected function _redirect($appUrl, $code = 302)
     {
-        $this->_helper->layout->disableLayout();
-        $this->getFrontController()->setParam('noViewRenderer', true);
+    	$this->_disableLayoutAndView();
         $redirectUrl = $this->getFrontController()->getBaseUrl() . $appUrl;
         $this->getResponse()->setRedirect($redirectUrl, $code);
     }
+    
+    protected function _disableLayoutAndView()
+    {
+        $this->_helper->layout->disableLayout();
+        $this->getFrontController()->setParam('noViewRenderer', true);
+    }
 }
 
-- 
GitLab