Skip to content
This Course-Catalog is a project to develop a web front-end for searching and browsing course information stored in Banner.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
application
bin
docroot
library
.editorconfig
.gitignore
.gitmodules
LICENSE.txt
README.md
archive_config.ini-example
configuration.plist-example
frontend_config.ini-example
update_config.ini-example

README.md

The Course-Catalog is a web front-end for searching and browsing course information stored in Ellucian Banner.

Overview of operation

  1. (Nightly) Data from the Banner Oracle database is copied into tables in a MySQL database (via coursecatalog/bin/update-from-banner.php)
  2. (Nightly) Derived tables and views to improve the ease of fetching are built from the data now in MySQL (via coursecatalog/bin/update-from-banner.php)
  3. (Nightly) Search indices are built based on the data now in MySQL (via coursecatalog/bin/build_indices.php)
  4. The PHP data model based on the OSID Course Catalog API provides an object-oriented API for accessing the course catalog data. This API ensures consistency in data fetching so that different user-interface screens always have the same information available.<
  5. The front-end application (using the Zend Framework's MVC system) provides search, browse and display interfaces to access the course information. It also provides XML web services for using the course information in remote systems. Additionally, the front-end application includes a schedule-planning tool to help students plan their semesters. All user-interfaces and web services get their data through the OSID Course Catalog API.

Examples

Examples of the the Course-Catalog in action at Middlebury College:

Schedule Planner - Screen-shots and more information about the schedule-planner.

Installation

These instructions assume that you have a POSIX machine running Apache with PHP 7.0 or later.

  1. In a non-web-accessable directory, clone the course-catalog repository: git-clone https://github.com/middlebury/coursecatalog.git

  2. cd into the new coursecatalog/directory and fetch the submodules (osid-phpkit, ZendFramework, etc):

    cd coursecatalog
    git-submodule update --init --recursive
    
  3. Make a symbolic link to the coursecatalog/docroot/ directory in a web-accessible directory or add a virtualhost rooted in the coursecatalog/docroot/ directory.

  4. Create a MySQL database for the catalogs data and a cache of Banner data.

  5. Make copies of the example config files at configuration.plist, frontend_config.ini, and update_config.ini and edit values to match your environment.

  6. Create the database tables defined in application/library/banner/course/sql/table_creation.sql

  7. Run the script at bin/update-from-banner.php to dump Banner data into the the MySQL database:

    php bin/update-from-banner.php
    php bin/build_indices.php
    

Unit Tests

Most of the Course Catalog OSID API is covered by PHPUnit tests. To run these tests:

  1. Install PHPUnit if you do not have it available.
  2. Create an empty MySQL database for running the tests.
  3. Edit application/test/banner/configuration.plist and enter your database configuration parameters.
  4. On the command-line, change directory to your course-catalog source directory.
  5. Run the command phpunit application/test/TestSuite.php

Implementation Notes

The implementation of this system is layered such that the Web UI code is separated from the data model. The data model is an implementation of the Open Knowledge Initiative (O.K.I.) Open Service Interface Definition (OSID) for Course information, the Course OSID (detailed doc). Because of this structure, it is possible for other institutions to modify the data model (the OSID implementation) so as to use the same UI code against different data sources, be they different Banner implementations or alternative systems. See also OSID Usage.

You can’t perform that action at this time.