Beispiel #1
0
 /**
  * Gibt ein Entity-Meta für ein Entity zurück
  *
  * ein EntityMeta enthält jede Menge Labels, URLs, und weitere Infos über das Entity im CMS (in verschiedenen Contexten)
  *
  * Ich habe lange überlegt, wo die "zentrale" Stelle für die EntityMetas sein soll und mich für das Modul entschieden, da es sowohl im DCPackage ist (und damit im Controller eines EntityServices)
  * sowohl auch in einer "Main" vorhanden sein muss (und man es damit injecten kann)
  * 
  * EntityMetas die hier erzeugt werden haben die ClassMetadata von Doctrine aus der übergebenen Connection bzw EntityManager
  * @param string|NULL|EntityManager|Doctrine\ORM\Mapping\ClassMetadata $classMetadataInjection der Manager nach dem nach der ClassMetadata gefragt wird angeben durch $con oder durch einen EntityManager, oder die ClassMetadata selbst
  */
 public function getEntityMeta($entityName, $classMetadataInjection = NULL)
 {
     $entityClass = $this->getEntityName($entityName);
     // normalize
     // cache
     if (!array_key_exists($entityClass, $this->entityMetas)) {
         if ($classMetadataInjection instanceof EntityManager) {
             $classMetadata = $classMetadataInjection->getClassMetadata($entityClass);
         } elseif ($classMetadataInjection instanceof \Doctrine\ORM\Mapping\ClassMetadata) {
             $classMetadata = $classMetadataInjection;
         } else {
             $classMetadata = $this->getEntityManager($classMetadataInjection)->getClassMetadata($entityClass);
         }
         // erstelle ein "doofes" EntityMeta ohne viele Infos
         $meta = new \Psc\CMS\EntityMeta($entityClass, $classMetadata, $entityName);
         $this->entityMetas[$entityClass] = $meta;
         $this->manager->dispatchEvent('Psc.Doctrine.initEntityMeta', (object) array('module' => $this), $meta);
     }
     return $this->entityMetas[$entityClass];
 }