/**
  * Add discriminator values to class MetaData when a content class is loaded
  * Occur on classcontent.include events.
  *
  * @param Event $event
  */
 public function onInclude(Event $event)
 {
     $shortClassname = AbstractClassContent::getShortClassname($event->getTarget());
     $fullClassname = AbstractClassContent::getFullClassname($event->getTarget());
     foreach (class_parents($fullClassname) as $classname) {
         //            @gvf todo container injection
         $this->serviceContainer->get('doctrine.orm.default_entity_manager')->getClassMetadata($classname)->addDiscriminatorMapClass($shortClassname, $fullClassname);
         if ('BackBee\\CoreDomain\\ClassContent\\AbstractClassContent' === $classname) {
             break;
         }
     }
 }
 /**
  * @param Page  $page
  * @param array $classnames
  *
  * @return AbstractContent
  */
 public function getLastByMainnode(Page $page, $classnames = array())
 {
     try {
         $q = $this->createQueryBuilder('c');
         foreach ($classnames as $classname) {
             $q->orWhere('c INSTANCE OF ' . AbstractClassContent::getFullClassname($classname));
         }
         $q->andWhere('c._mainnode = :node')->orderby('c._modified', 'desc')->setMaxResults(1)->setParameters(array('node' => $page));
         $entity = $q->getQuery()->getSingleResult();
     } catch (\Exception $e) {
         $entity = null;
     }
     return $entity;
 }