Skip to content
Snippets Groups Projects
Select Git revision
  • master default
  • disable-new-requests
  • fix-bulletin-view-missing-notes-error
  • add-missing-queue-managers
  • projects-task-53
  • projects-task-51
  • projects-task-43
  • projects-task-24
  • projects-task-31
  • projects-task-32
  • projects-task-8
  • project-setup-docs
  • projects-task-28
  • projects-task-27
  • projects-task-9
  • projects-task-7
  • mass-update-course-codes-in-sections
  • wdn-four
  • learning-outcomes
  • additional-bulletin-pages
  • svn-redesign
  • svn-popups
  • svn-trunk
  • svn-performance
  • svn-tim
25 results

CourseGenerations.php

Blame
  • 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);
        }
    }
    
    ?>