Select Git revision
CourseGenerations.php
-
Tim Steiner authoredTim Steiner authored
CourseGenerations.php 8.19 KiB
<?php
class CourseGenerations extends Nmc_Db_Table
{
protected $_primary = 'courseGenerationId';
protected $_rowClass = 'CourseGeneration';
protected static $_instance;
/**
* getInstance() - return singleton
*
* @param array $config
* @return Nmc_Db_Table
*/
static public function getInstance($config = array())
{
if(!self::$_instance) {
self::$_instance = new CourseGenerations($config);
}
return self::$_instance;
}
/*public function find($val)
{
$row = parent::find($val);
$config = array('db' => $this->getAdapter(),
'table' => $this,
'data' => $row->toArray());
return new CourseGeneration($config);
}*/
static public function fetchBySubjectNumberLetter($subject, $number, $letter = null)
{
$me = CourseGenerations::getInstance();
$row = CourseCrosslistings::fetchBySubjectNumberLetter($subject, $number, $letter);
if(!$row->getPrimaryKey()) {
return null;
}
return $row->getParentCourse();
}
static public function getNext($subject, $number, $letter = null)
{
$db = self::getInstance()->getAdapter();
$sql = 'SELECT id FROM ('
. 'SELECT id, subject, courseNumber, courseLetter FROM creqCourseGenerations '
. $db->quoteInto('WHERE subject >= ? ', $subject)
. $db->quoteInto('AND courseNumber >= ? ', $number)
. $db->quoteInto('AND courseLetter > ? ', $letter)
. 'UNION '
. 'SELECT id, subject, courseNumber, courseLetter FROM creqCourseGenerations '
. $db->quoteInto('WHERE subject >= ? ', $subject)
. $db->quoteInto('AND courseNumber > ? ', $number)
. 'UNION '
. 'SELECT id, subject, courseNumber, courseLetter FROM creqCourseGenerations '
. $db->quoteInto('WHERE subject > ? ', $subject)
. 'UNION '
. 'SELECT parentCourse AS id, subject, courseNumber, courseLetter FROM creqCourseCrosslistings '
. $db->quoteInto('WHERE subject >= ? ', $subject)
. $db->quoteInto('AND courseNumber >= ? ', $number)
. $db->quoteInto('AND courseLetter > ? ', $letter)
. 'UNION '
. 'SELECT parentCourse AS id, subject, courseNumber, courseLetter FROM creqCourseCrosslistings '
. $db->quoteInto('WHERE subject >= ? ', $subject)
. $db->quoteInto('AND courseNumber > ? ', $number)
. 'UNION '
. 'SELECT parentCourse AS id, subject, courseNumber, courseLetter FROM creqCourseCrosslistings '
. $db->quoteInto('WHERE subject > ? ', $subject)
. 'ORDER BY subject, courseNumber, courseLetter '
. ') AS subTable LIMIT 1 ';
$record = $db->fetchOne($sql);
$record = CourseGenerations::getInstance()->findOne($record);
return $record;
}
static public function getPrevious($subject, $number, $letter = null)
{
$db = self::getInstance()->getAdapter();
$sql = 'SELECT id FROM ('
. 'SELECT id, subject, courseNumber, courseLetter FROM creqCourseGenerations '
. $db->quoteInto('WHERE subject <= ? ', $subject)
. $db->quoteInto('AND courseNumber <= ? ', $number)
. $db->quoteInto('AND courseLetter < ? ', $letter)
. 'UNION '
. 'SELECT id, subject, courseNumber, courseLetter FROM creqCourseGenerations '
. $db->quoteInto('WHERE subject <= ? ', $subject)
. $db->quoteInto('AND courseNumber < ? ', $number)
. 'UNION '
. 'SELECT id, subject, courseNumber, courseLetter FROM creqCourseGenerations '
. $db->quoteInto('WHERE subject < ? ', $subject)
. 'UNION '
. 'SELECT parentCourse AS id, subject, courseNumber, courseLetter FROM creqCourseCrosslistings '
. $db->quoteInto('WHERE subject <= ? ', $subject)
. $db->quoteInto('AND courseNumber <= ? ', $number)
. $db->quoteInto('AND courseLetter < ? ', $letter)
. 'UNION '
. 'SELECT parentCourse AS id, subject, courseNumber, courseLetter FROM creqCourseCrosslistings '
. $db->quoteInto('WHERE subject <= ? ', $subject)
. $db->quoteInto('AND courseNumber < ? ', $number)
. 'UNION '
. 'SELECT parentCourse AS id, subject, courseNumber, courseLetter FROM creqCourseCrosslistings '
. $db->quoteInto('WHERE subject < ? ', $subject)
. 'ORDER BY subject DESC, courseNumber DESC, courseLetter DESC '
. ') AS subTable LIMIT 1 ';
$record = $db->fetchOne($sql);
$record = CourseGenerations::getInstance()->findOne($record);
return $record;
}
public function fetchNew()
{
$newHomeCrosslist = CourseCrosslistings::getInstance()->fetchNew();
$newHomeCrosslist->type = 'home listing';
/*
$newFixedCredit = CourseCredits::getInstance()->fetchNew();
$newFixedCredit->type = 1;
$newFixedCredit->hours = 3;
$newMaxCredit = CourseCredits::getInstance()->fetchNew();
$newMaxCredit->type = 5;
$newMaxCredit->hours = 3;
*/
$newRecord = parent::fetchNew();
$newRecord->termsOffered = array('Fall', 'Spring', 'Summer');
$newRecord->gradingType = 'unrestricted';
/*
$newRecord->credits[] = $newFixedCredit;
$newRecord->credits[] = $newMaxCredit;
*/
$newRecord->deliveryMethods = array('Classroom');
$newRecord->campuses = array('UNL');
//print_r($newRecord->credits);
return $newRecord;
}
public function fetchWithParentGeneration(CourseGeneration $parentGeneration)
{
$where = $this->_db->quoteInto('parent=?', $parentGeneration->getPrimaryKey());
$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);
}
}
?>