From 81f8aa2cf996613c975efed240417eb34c4c2779 Mon Sep 17 00:00:00 2001
From: Tim Steiner <tsteiner2@unl.edu>
Date: Wed, 31 Oct 2007 20:32:08 +0000
Subject: [PATCH] Add one eagerloaded row to CourseGenerations

---
 .../models/tables/CourseGenerations.php       | 57 +++++++++++++++++++
 1 file changed, 57 insertions(+)

diff --git a/application/models/tables/CourseGenerations.php b/application/models/tables/CourseGenerations.php
index 5b3ba0a8..29d83369 100644
--- a/application/models/tables/CourseGenerations.php
+++ b/application/models/tables/CourseGenerations.php
@@ -145,6 +145,63 @@ class CourseGenerations extends Nmc_Db_Table
         $childGenerations = $this->fetchAll($where);
         return $childGenerations;
     }
+
+    public function fetchAll($where = null, $order = null, $count = null, $offset = null)
+    {
+        $select = $this->getAdapter()->select();
+
+        $assetsTable = Assets::getInstance();
+        $assetsTableInfo = $assetsTable->info();
+        $detailsTable = CourseDetails::getInstance();
+        $detailsTableInfo = $detailsTable->info();
+
+        $select->from($this->getTableName());
+        $select->join($detailsTable->getTableName(),
+                      $this->getTableName() . '.' . $this->getPrimaryKeyName() . '='
+                    . $detailsTable->getTableName() . '.generation');
+        $select->join($assetsTable->getTableName(),
+                      $this->getTableName() . '.assetId = '
+                    . $assetsTable->getTableName() . '.' . $assetsTable->getPrimaryKeyName());
+        $select->where($where);
+        $select->order($order);
+        $select->limit($count, $offset);
+
+        $resultData = $this->_db->fetchAll($select);
+
+        $config = array();
+        $config['db'] = $this->_db;
+        $config['table'] = $this;
+        $config['data'] = array();
+        $config['eagerData'] = array();
+
+        foreach ($resultData as $resultDatum) {
+            $config['data'][] = array_intersect_key($resultDatum, array_flip($this->_cols));
+
+            $eagerData = array();
+            $eagerData['db'] = $assetsTable->getAdapter();
+            $eagerData['table'] = $assetsTable;
+            $eagerData['data'] = array_intersect_key($resultDatum, array_flip($assetsTableInfo['cols']));
+
+            $eagerAssetRow = new Asset($eagerData);
+
+            $eagerData = array();
+            $eagerData['db'] = $detailsTable->getAdapter();
+            $eagerData['table'] = $detailsTable;
+            $eagerData['data'] = array_intersect_key($resultDatum, array_flip($detailsTableInfo['cols']));
+
+            $eagerDetailRow = new CourseDetail($eagerData);
+
+            $config['eagerData'][] = array('asset' => $eagerAssetRow,
+                                           'courseDetail' => $eagerDetailRow);
+        }
+
+        $rowsetClass = $this->_rowsetClass;
+        $rowset = new $rowsetClass($config);
+
+        return $rowset;
+
+        return parent::fetchAll($where, $order, $count, $offset);
+    }
 }
 
 ?>
\ No newline at end of file
-- 
GitLab