/**
  * Initialize listeners and annotations required for extensions
  *
  * @param MvcEvent $e
  *
  * @throws \Doctrine\DBAL\DBALException
  */
 public function initializeBitWebDoctrineExtensions(MvcEvent $e)
 {
     $locator = $e->getApplication()->getServiceManager();
     Type::addType('file', FileType::class);
     File::setDefaultBasePath(dirname($_SERVER['SCRIPT_FILENAME']) . '/files');
     File::setDefaultUploadBasePath(File::getDefaultBasePath());
     /* @var $em EntityManager */
     $em = $locator->get(EntityManager::class);
     $em->getConfiguration()->addFilter('SoftDelete', SoftDeleteFilter::class);
     $em->getFilters()->enable('SoftDelete');
     new FileListener($em->getEventManager());
     new IpListener($em->getEventManager());
     new SoftDeletableListener($em->getEventManager());
     new UserAgentListener($em->getEventManager());
     $annotationBaseDir = __DIR__ . '/../../../doctrine-extension/src/Mapping/';
     AnnotationRegistry::registerFile($annotationBaseDir . 'File.php');
     AnnotationRegistry::registerFile($annotationBaseDir . 'Ip.php');
     AnnotationRegistry::registerFile($annotationBaseDir . 'SoftDeletable.php');
     AnnotationRegistry::registerFile($annotationBaseDir . 'UserAgent.php');
 }