an administrative solution for boulder’s own kgnu radio station. tom buzbee bryan callahan eric...
TRANSCRIPT
An overview of
comrad(community radio)
An administrative solution for Boulder’s own KGNU Radio Station.
Tom BuzbeeBryan CallahanEric FreeseStephanie PittsWil St. Charles
1
The speakers:
….Tom Buzbee
….Bryan Callahan
….Wil St. Charles
….Stephanie Pitts
….Eric Freese
2
Today’s Focus
Project Overview User Interface Design Architecture Software Demo
3Stephanie Pitts
Today’s Focus
Project OverviewThe ClassThe ProblemThe Solution
User Interface Design Architecture Software Demo
4Stephanie Pitts
The Class
Computer Science Capstone 13 student led projects. Other projects:
Dine n’ Dash○ Red Robin
Graphics Programming on a Giant Spherical Screen○ Craft Technologies
5Stephanie Pitts
The Problem
Radio Station administration is complexScheduling showsKeeping show logsScheduling ticket giveawaysTracking underwritingEntering show information…
6Stephanie Pitts
The Problem
Multitude of techniques to store informationPaper and PencilPHP DatabasePlaylist entryAdministrative backend
7Stephanie Pitts
The Solution
Uses of comrad Major Requirements
Uses EnvironmentalFunctional
Conceptual View of comrad
8Stephanie Pitts
Uses
For recording information related to the day to day activities of KGNUSchedule showsRecord information about:
○ song plays○ new items○ emergency broadcasting tests○ etc…
9Stephanie Pitts
Environmental Requirements Software Environment
Client○ Internet Explorer 8.0○ Firefox 3.0○ Safari 4.0○ Chrome 3.0○ Opera 10.0○ JQuery 1.0○ HTML 4.0○ RSS 2.0
10Stephanie Pitts
Environmental Requirements Software Environment
Server○ Linux○ Apache 2.0○ MySQL 5.0○ PHP 5.0
11Stephane Pitts
Environmental Requirements Hardware Environment
Client○ Mac○ PC○ Linux
Server○ KGNU’s current server
12Stephanie Pitts
Functional Requirements
Role defined user interface Scheduling database (recursive) Events database (time slice) Music Catalog database (music) Interface for:
scheduling showsentering event metadatascheduling recurring events
13Stephanie Pitts
Conceptual view of comrad
14Stephanie Pitts
Today’s Focus
Project Overview User Interface Design
Basic use○ Roles○ Login/Portal
ShowbuilderCalendar
Architecture Software Demo
15Eric Freese
Roles
16Eric Freese
Login/Portal
17Eric Freese
Today’s Focus
Project Overview User Interface Design
Basic useShowbuilderCalendar
Architecture Software Demo
18
Eric Freese
Showbuilder
19
DJ’s main interaction with system
Used for adding songs, news, etc. to a show
Dynamic interaction with databases
Eric Freese
Today’s Focus
Project Overview User Interface Design
Basic useShowbuilderCalendar
Architecture Software Demo
20Eric Freese
Calendar
21
WebCalendarUsed as scheduling engineStores recurrence informationUsed for recurrence databaseInterface built in JQuery – Custom for KGNU
Eric Freese
Calendar
22
o Used by Schedule Manager to create and change shows and show times
o Week is primary
searchable granularity
o Month makes schedule too full to convey meaningful information
Eric Freese
Calendar
23
o Day Navigation
o Levels of granularity allow Schedule Manager to optimally enter schedule information
Eric Freese
Calendar
24
o Multitude of show recurrence options available
Eric Freese
Today’s Focus
Project Overview User Interface Design Architecture
OverviewBreak it Down
Software Demo
25Wil St. Charles
Architecture Overview
26Wil St. Charles
Break it Down – Frontend
27Wil St. Charles
Break it Down – Frontend
28Wil St. Charles
jQuery and jQuery UI for interactive components
Server-side PHP Templates to generate HTML for each pageHeadBodyClose
Break it Down – Music Catalog
29Wil St. Charles
Break it Down – Music Catalog
30Wil St. Charles
Stores music metadata MySQL Tables:
Break it Down – WebCalendar
31Wil St. Charles
32
WebCalendar
Open source, PHP Flattened recurrence information
Informs Event database WebCalendar wrapper
Provides APIUtilizes OOP
○ WebCalendar object○ Event object○ Event iterator
Wil St. Charles
Break it Down – Events
33Wil St. Charles
Break it Down – Events
34Wil St. Charles
Stores instances Song playsFeaturesEtc…
MySQL
Break it Down – Sync
35Wil St. Charles
Break it Down – Sync
36Wil St. Charles
PHP and Linux time Nightly updates between event
database and WebCalendar Event database populated with two
weeks (months) of WebCalendar information
Today’s Focus
Project Overview User Interface Design Architecture Software Demo
A day in the lifeCode review
37Tom Buzbee
Software Demo
38Tom Buzbee
Today’s Focus
Project Overview User Interface Design Architecture Software Demo
A day in the lifeCode review
39Bryan Callahan
AbstractConnector
Abstract class Handles database connection and
disconnection Provides
getDatabase()getIsConnected()
40Bryan Callahan
InterfaceModule
Interface class Implement for consistent interaction with
database tables Provides
populate()unpopulate()update()remove()
41Bryan Callahan
Typical Table Interaction
Extend AbstractConnector and implement InterfaceModule
User Class
$user = new User();$user_exists = $user->populate();$user->setPassword(‘newP@ssword12’);$user->update();
42Bryan Callahan
Detailed Look at the User ??? NEED ??? Talk about getters / setters of user
class?
>update(); BLAH BLAH BLAHA
43Bryan Callahan
AbstractConnector Revisited Provides consistent connection
$track = new PlaylistTrack($id,
$user);
44Bryan Callahan
InterfaceIterator
Interface class Implement to provide consistent access
to arrays of data Provides
hasNext()getItemCount()getNextCount()getNext()
45Bryan Callahan
Typical Iterator Interaction Extend AbstractConnector and implement
InterfaceIterator UserIterator Class
$iter = new UserIterator();while ($iter->hasNext()){
echo $iter->getNext()->getUsername();}
46Bryan Callahan
Template Overview
Secure Session / Authenticate Instantiate HeadTemplateSection Instantiate BodyTemplateSection Instantiate CloseTemplateSection
47Bryan Callahan
Initialize
Final class Performs initialization and provides basic
framework to get the system off the ground Provides
getProp($key)log($entry)lockDown()setAutoload()
48Bryan Callahan
Hello World Page
require_once(‘initialize.php’);
// Preprocessing (command execution)
$head = new HeadTemplateSection();$head->write();
// Load Javascript Libraries
$head = new BodyTemplateSection();$head->write();
// Body of Page (User Interface)
$head = new CloseTemplateSection();$head->write();
49Bryan Callahan
WebCal
Final class Interface to calendar engine Provides
insertEventBrute(…)removeEventBrute($id)readEvents($startTime, $endTime)
50Bryan Callahan
WebCalEventsIterator
Final class that implements InterfaceIterator Iterates through events given a start time and
an end time Provides simple way to pull all event data
51Bryan Callahan
A Closer Look at the Code…
52Bryan Callahan
Summary Project Overview
The ClassThe ProblemThe Solution
User Interface DesignBasic UseShow BuilderCalendar
ArchitectureOverviewClasses
Software Demo
53Tom Buzbee
Questions
54Tom Buzbee
?