/**
  * Constructor
  */
 function PKPApplication()
 {
     // Seed random number generator
     mt_srand((double) microtime() * 1000000);
     import('lib.pkp.classes.core.Core');
     import('lib.pkp.classes.core.String');
     import('lib.pkp.classes.core.Registry');
     import('lib.pkp.classes.config.Config');
     ini_set('display_errors', Config::getVar('debug', 'display_errors', ini_get('display_errors')));
     Registry::set('application', $this);
     import('lib.pkp.classes.db.DAORegistry');
     import('lib.pkp.classes.db.XMLDAO');
     import('lib.pkp.classes.cache.CacheManager');
     import('classes.security.RoleDAO');
     import('lib.pkp.classes.security.Validation');
     import('lib.pkp.classes.session.SessionManager');
     import('classes.template.TemplateManager');
     import('classes.notification.NotificationManager');
     import('lib.pkp.classes.statistics.PKPStatisticsHelper');
     import('lib.pkp.classes.plugins.PluginRegistry');
     import('lib.pkp.classes.plugins.HookRegistry');
     import('classes.i18n.AppLocale');
     // Set site time zone
     // Starting from PHP 5.3.0 PHP will throw an E_WARNING if the default
     // time zone is not set and date/time functions are used
     // http://pl.php.net/manual/en/function.date-default-timezone-set.php
     $timeZone = AppLocale::getTimeZone();
     date_default_timezone_set($timeZone);
     String::init();
     $microTime = Core::microtime();
     Registry::set('system.debug.startTime', $microTime);
     $notes = array();
     Registry::set('system.debug.notes', $notes);
     if (Config::getVar('general', 'installed')) {
         // Initialize database connection
         $conn = DBConnection::getInstance();
         if (!$conn->isConnected()) {
             if (Config::getVar('database', 'debug')) {
                 $dbconn =& $conn->getDBConn();
                 fatalError('Database connection failed: ' . $dbconn->errorMsg());
             } else {
                 fatalError('Database connection failed!');
             }
         }
     }
 }