// -------------------------------------------------- $eventManager = new EventManager(); Settings::setProtected('eventManager', $eventManager); // Initialize transcript controller // -------------------------------------------------- Transcript::setEventManager($eventManager); Transcript::register('load', array('TranscriptController', 'load')); Transcript::register('save', array('TranscriptController', 'save')); Transcript::register('diff', array('TranscriptController', 'diff')); // Initialize workflow controller // -------------------------------------------------- Workflow::register('callback', array('WorkflowController', 'parse')); // Initialize notifications controller // -------------------------------------------------- $notifications = Settings::getProtected('notifications'); $notificationsList = array(); foreach ($notifications as $key => $value) { // Get an array of just the keys array_push($notificationsList, $key); } $notify = new NotificationManager(); $notify->setEventManager($eventManager); $notify->registerNotifications($notificationsList, array('NotificationController', 'send')); Settings::setProtected('notify', $notify); // Parse the routes // -------------------------------------------------- // The \.?([^/]*)?/? at the end allows us to add .json, etc. for other formats // Create the routes we want to use $routes = array('#^/?$#' => 'SystemPageController::index', '#^/login/?$#' => 'SystemPageController::login', '#^/logout/?$#' => 'SystemPageController::logout', '#^/signup(\\.[^/]+)?/?$#' => 'SystemPageController::signup', '#^/signup/activate/(.*)(\\.[^/]+)?/?$#' => 'SystemPageController::activate', '#^/messages/?$#' => 'SystemPageController::message', '#^/install/?$#' => 'SystemPageController::install', '#^/test/(.*)/?$#' => 'SystemPageController::test', '#^/(users)/([^/]+)/projects/([^/]+)/items/get(\\.[^/]+)?/?#' => 'ItemPageController::getNewItem', '#^/(users)/([^/]+)/projects/([^/]+)/items/([^/.]+)/transcript(\\.[^/]+)?/?#' => 'ItemPageController::transcript', '#^/(users)/([^/]+)/projects/([^/]+)/items/([^/.]+)/delete(\\.[^/]+)?/?#' => 'ItemPageController::deleteItem', '#^/(users)/([^/]+)/projects/([^/]+)/items/([^/.]+)/(proof|review)(\\.[^/]+)?/?#' => 'ItemPageController::itemProof', '#^/(users)/([^/]+)/projects/([^/]+)/items/([^/.]+)/(proof|review|edit)(\\.[^/]+)?/?#' => 'ItemPageController::itemProof', '#^/(users)/([^/]+)/projects/([^/]+)/items/([^/.]+)(\\.[^/]+)?/?#' => 'ItemPageController::item', '#^/(users)/([^/]+)/projects/([^/]+)/items(\\.[^/]+)?/?#' => 'ItemPageController::items', '#^/(users)/([^/]+)/projects/([^/]+)/transcript/split(\\.[^/]+)?/?#' => 'ProjectPageController::splitTranscript', '#^/(users)/([^/]+)/projects/([^/]+)/transcript(\\.[^/]+)?/?#' => 'ProjectPageController::transcript', '#^/(users)/([^/]+)/projects/([^/]+)/membership/leave(\\.[^/]+)?/?#' => 'ProjectPageController::membershipLeave', '#^/(users)/([^/]+)/projects/([^/]+)/membership(\\.[^/]+)?/?#' => 'ProjectPageController::membership', '#^/(users)/([^/]+)/projects/([^/]+)/admin(\\.[^/]+)?/?#' => 'ProjectPageController::admin', '#^/(users)/([^/]+)/projects/([^/]+)/upload(\\.[^/]+)?/?#' => 'ProjectPageController::upload', '#^/(users)/([^/]+)/projects/([^/]+)/import(\\.[^/]+)?/?#' => 'ProjectPageController::import', '#^/(users)/([^/]+)/projects/new-project(\\.[^/]+)?/?#' => 'ProjectPageController::newProject', '#^/(users)/([^/]+)/projects/([^/.]+)(\\.[^/]+)?/?#' => 'ProjectPageController::projectPage', '#^/(users)/([^/]+)/projects(\\.[^/]+)?/?#' => 'ProjectPageController::projects', '#^/users/([^/]+)/dashboard(\\.[^/]+)?/?#' => 'UserPageController::userDashboard', '#^/users/([^/]+)/settings(\\.[^/]+)?/?#' => 'UserPageController::userSettings', '#^/users/([^/.]+)(\\.[^/]+)?/?#' => 'UserPageController::userPage', '#^/users(\\.[^/]+)?/?#' => 'UserPageController::users', '#^/projects/([^/]+)/items/get(\\.[^/]+)?/?#' => 'ItemPageController::getNewItem', '#^/projects/([^/]+)/items/([^/.]+)/transcript(\\.[^/]+)?/?#' => 'ItemPageController::transcript', '#^/projects/([^/]+)/items/([^/.]+)/delete(\\.[^/]+)?/?#' => 'ItemPageController::deleteItem', '#^/projects/([^/]+)/items/([^/.]+)/(proof|review)/(\\.[^/]+)/?#' => 'ItemPageController::itemProof', '#^/projects/([^/]+)/items/([^/.]+)/(proof|review|edit)(\\.[^/]+)?/?#' => 'ItemPageController::itemProof', '#^/projects/([^/]+)/items/([^/.]+)(\\.[^/]+)?/?#' => 'ItemPageController::item', '#^/projects/([^/]+)/items(\\.[^/]+)?/?#' => 'ItemPageController::items', '#^/projects/([^/]+)/transcript/split(\\.[^/]+)?/?#' => 'ProjectPageController::splitTranscript', '#^/projects/([^/]+)/transcript(\\.[^/]+)?/?#' => 'ProjectPageController::transcript', '#^/projects/([^/]+)/membership/leave(\\.[^/]+)?/?#' => 'ProjectPageController::membershipLeave', '#^/projects/([^/]+)/membership(\\.[^/]+)?/?#' => 'ProjectPageController::membership', '#^/projects/([^/]+)/admin(\\.[^/]+)?/?#' => 'ProjectPageController::admin', '#^/projects/([^/]+)/upload(\\.[^/]+)?/?#' => 'ProjectPageController::upload', '#^/projects/([^/]+)/import(\\.[^/]+)?/?#' => 'ProjectPageController::import', '#^/projects/new-project(\\.[^/]+)?/?#' => 'ProjectPageController::newProject', '#^/projects/([^/.]+)(\\.[^/]+)?/?#' => 'ProjectPageController::projectPage', '#^/projects(\\.[^/]+)?/?#' => 'ProjectPageController::projects', '#^/admin(\\.[^/]+)?/?$#' => 'AdminPageController::admin'); $router = new Router('SystemPageController::fileNotFound'); $router->route($routes);