Deprecated: Assigning the return value of new by reference is deprecated in /home/bluestat/public_html/source/index.php on line 477
.
error_reporting(E_ALL & ~E_NOTICE);
// Define path constants.
define('PHALANX_ROOT', dirname(__FILE__) . '/phalanx');
define('BUGDAR_ROOT', dirname(__FILE__));
// Load some standard Bugdar files.
require_once BUGDAR_ROOT . '/includes/core.php';
require_once BUGDAR_ROOT . '/includes/localizer.php';
require_once BUGDAR_ROOT . '/includes/view_helpers.php';
require_once BUGDAR_ROOT . '/events/standard_error.php';
require_once BUGDAR_ROOT . '/events/standard_success.php';
$dispatcher = new phalanx\events\HTTPDispatcher();
$view_handler = new phalanx\events\ViewOutputHandler();
$pump = phalanx\events\EventPump::Pump();
// Use the Views system to render output.
// TODO: enable webservice and CLI.
$pump->set_output_handler($view_handler);
// Events are named in reverse order to be more human readable. Rather than
// user_register, it's register_user. After reversing the components, events
// are loaded from the events/ directory. The class name is the CammelCase
// version of the underscored name, suffixed by the word 'Event'.
$dispatcher->set_event_loader(
function($name)
{
$name = preg_replace('/[^a-z0-9_\-\.]/i', '', $name);
$parts = explode('_', $name);
$parts = array_reverse($parts);
$name = implode('_', $parts);
$path = "./events/$name.php";
if (!file_exists($path))
phalanx\events\EventPump::Pump()->RaiseEvent(new StandardErrorEvent('Could not load event ' . $name));
require_once $path;
return phalanx\base\UnderscoreToCamelCase($name) . 'Event';
}
);
// Register bypass rules.
$dispatcher->AddBypassRule('', 'home');
$dispatcher->AddBypassRule('list', 'list_bug');
$dispatcher->AddBypassRule('new', 'new_bug');
$dispatcher->AddBypassRule('view', 'view_bug');
$dispatcher->AddBypassRule('login', 'login_user');
$dispatcher->AddBypassRule('logout', 'logout_user');
// Transform the event name into a template name.
phalanx\views\View::set_template_path(dirname(__FILE__) . '/templates/%s.tpl');
phalanx\views\View::set_cache_path(dirname(__FILE__) . '/cache');
$view_handler->set_template_loader(
function($event_class)
{
$name = preg_replace('/Event$/', '', $event_class);
return phalanx\base\CamelCaseToUnderscore($name);
}
);
// Read the configuration file.
$config_path = BUGDAR_ROOT . '/includes/config.php';
if (!file_exists($config_path) || !is_readable($config_path))
throw new CoreException('Could not read configuration file');
$config = new phalanx\base\KeyDescender(require $config_path);
// Setup common functionality.
Bugdar::BootstrapDatabase($config);
Bugdar::BootstrapAuthentication($config);
// Finally, begin processing events.
$dispatcher->Start();
try
{
$pump->StopPump();
}
catch (phalanx\views\ViewException $e)
{
// We got a view exception, meaning a template couldn't be loaded. If we
// have any output on the buffer, let it slide. Otherwise, re-throw.
if (strlen(ob_get_contents()) <= 0)
throw $e;
}