/** * @param LifecycleEventArgs $eventArgs */ public function postUpdate(LifecycleEventArgs $eventArgs) { $document = $eventArgs->getDocument(); $dm = $eventArgs->getDocumentManager(); if ($document instanceof Translation) { /** @var Translation $document */ $projectId = $document->getProjectId(); $projectInfo = $dm->getRepository('TranslationsBundle:ProjectInfo')->getProjectInfo($projectId); if (!$projectInfo) { $projectInfo = new ProjectInfo(); $projectInfo->setProjectId($projectId); } if (isset($this->cache["id"]) && $this->cache["id"] == $document->getId()) { $projectInfo->subBundle($this->cache['bundle']); $projectInfo->subCatalog($this->cache['catalog']); } $projectInfo->addBundle($document->getBundle()); $projectInfo->addCatalog($document->getCatalog()); $dm->persist($projectInfo); $dm->flush(); return; } }
/** * @param $projectId * @return ProjectInfo */ public function regenerateProjectInfo($projectId) { /** @var ProjectInfo $projectInfo */ $projectInfo = $this->getProjectInfoRepository()->getProjectInfo($projectId); if (!$projectInfo) { $projectInfo = new ProjectInfo(); $projectInfo->setProjectId($projectId); } $projectInfo->setBundles(array()); $projectInfo->setCatalogs(array()); /** @var Translation[] $translations */ $translations = $this->getTranslationRepository()->findBy(array("projectId" => intval($projectId))); foreach ($translations as $translation) { $bundle = $translation->getBundle(); $projectInfo->addBundle($bundle); $catalog = $translation->getCatalog(); $projectInfo->addCatalog($catalog); } $this->dm->persist($projectInfo); $this->dm->flush(); return $projectInfo; }