@@ 299-327 (lines=29) @@ | ||
296 | * |
|
297 | * @return NodeTranslation |
|
298 | */ |
|
299 | public function copyPageFromOtherLanguage(Node $node, $sourceLocale, $locale) |
|
300 | { |
|
301 | $user = $this->getAdminUser(); |
|
302 | ||
303 | $sourceNodeTranslation = $node->getNodeTranslation($sourceLocale, true); |
|
304 | $sourceNodeVersion = $sourceNodeTranslation->getPublicNodeVersion(); |
|
305 | $sourcePage = $sourceNodeVersion->getRef($this->em); |
|
306 | $targetPage = $this->cloneHelper->deepCloneAndSave($sourcePage); |
|
307 | ||
308 | /* @var NodeTranslation $nodeTranslation */ |
|
309 | $nodeTranslation = $this->em->getRepository(NodeTranslation::class)->createNodeTranslationFor($targetPage, $locale, $node, $user); |
|
310 | $nodeVersion = $nodeTranslation->getPublicNodeVersion(); |
|
311 | ||
312 | $this->eventDispatcher->dispatch( |
|
313 | Events::COPY_PAGE_TRANSLATION, |
|
314 | new CopyPageTranslationNodeEvent( |
|
315 | $node, |
|
316 | $nodeTranslation, |
|
317 | $nodeVersion, |
|
318 | $targetPage, |
|
319 | $sourceNodeTranslation, |
|
320 | $sourceNodeVersion, |
|
321 | $sourcePage, |
|
322 | $sourceLocale |
|
323 | ) |
|
324 | ); |
|
325 | ||
326 | return $nodeTranslation; |
|
327 | } |
|
328 | ||
329 | /** |
|
330 | * @param Node $node |
|
@@ 373-401 (lines=29) @@ | ||
370 | * |
|
371 | * @return NodeTranslation |
|
372 | */ |
|
373 | public function createPageDraftFromOtherLanguage(Node $node, $sourceNodeTranslationId, $locale) |
|
374 | { |
|
375 | $user = $this->getAdminUser(); |
|
376 | ||
377 | $sourceNodeTranslation = $this->em->getRepository(NodeTranslation::class)->find($sourceNodeTranslationId); |
|
378 | $sourceNodeVersion = $sourceNodeTranslation->getPublicNodeVersion(); |
|
379 | $sourcePage = $sourceNodeVersion->getRef($this->em); |
|
380 | $targetPage = $this->cloneHelper->deepCloneAndSave($sourcePage); |
|
381 | ||
382 | /* @var NodeTranslation $nodeTranslation */ |
|
383 | $nodeTranslation = $this->em->getRepository(NodeTranslation::class)->addDraftNodeVersionFor($targetPage, $locale, $node, $user); |
|
384 | $nodeVersion = $nodeTranslation->getPublicNodeVersion(); |
|
385 | ||
386 | $this->eventDispatcher->dispatch( |
|
387 | Events::RECOPY_PAGE_TRANSLATION, |
|
388 | new RecopyPageTranslationNodeEvent( |
|
389 | $node, |
|
390 | $nodeTranslation, |
|
391 | $nodeVersion, |
|
392 | $targetPage, |
|
393 | $sourceNodeTranslation, |
|
394 | $sourceNodeVersion, |
|
395 | $sourcePage, |
|
396 | $sourceNodeTranslation->getLang() |
|
397 | ) |
|
398 | ); |
|
399 | ||
400 | return $nodeTranslation; |
|
401 | } |
|
402 | ||
403 | /** |
|
404 | * @param Node $node |