/**
  * {@inheritdoc}
  */
 public function onBootstrap(EventInterface $e)
 {
     /** @var ApplicationInterface $app */
     $app = $e->getTarget();
     $serviceManager = $app->getServiceManager();
     /** @var Options $options */
     $options = $serviceManager->get('BuggymanOptions');
     if ($options->getEnabled() && $options->getToken()) {
         Buggyman::setToken($options->getToken());
         Buggyman::setErrorLevel($options->getErrorLevel());
         Buggyman::setRoot(getcwd());
         Buggyman::init();
         $app->getEventManager()->attach([MvcEvent::EVENT_DISPATCH_ERROR, MvcEvent::EVENT_RENDER_ERROR], function (MvcEvent $event) use($serviceManager) {
             if ($event->getParam('exception') instanceof Exception) {
                 Buggyman::reportException($event->getParam('exception'));
             }
         });
         if ($options->getPublicToken() && !isset($_SERVER['HTTPS'])) {
             /** @var HelperPluginManager $pluginManager */
             $pluginManager = $serviceManager->get('ViewHelperManager');
             /** @var InlineScript $inline */
             $inline = $pluginManager->get('InlineScript');
             $inline($inline::FILE, 'http://cdn.buggyman.io/v1/js/' . $options->getPublicToken() . '/collector.js');
         }
     }
 }
Exemple #2
0
 public function testExceptionToArray()
 {
     Buggyman::setRoot(__DIR__);
     $exception = new \Exception('message', 432, new \RuntimeException('subexception'));
     $array = Buggyman::exceptionToArray($exception);
     $this->assertEquals('message', $array['message']);
     $this->assertEquals('Exception', $array['exception']);
     $this->assertEquals('subexception', $array['previous']['message']);
     $this->assertEquals('RuntimeException', $array['previous']['exception']);
     $this->assertEquals(432, $array['code']);
     $this->assertEquals(17, $array['line']);
     $this->assertTrue(strlen($array['file']) > 0);
     $this->assertTrue(strlen($array['stack']) > 0);
     $this->assertEquals(__DIR__, $array['root']);
 }