Refactor Forms::duplicate() to use Doctrine instead of Paris

[MAILPOET-3038]
This commit is contained in:
Rodrigo Primo
2021-04-01 13:43:45 -03:00
committed by Veljko V
parent 3d2c62fc16
commit b3f82cccc5
5 changed files with 111 additions and 23 deletions

View File

@ -0,0 +1,40 @@
<?php
namespace MailPoet\Form;
use MailPoet\Entities\FormEntity;
use MailPoet\WP\Functions as WPFunctions;
use MailPoetVendor\Carbon\Carbon;
use MailPoetVendor\Doctrine\ORM\EntityManager;
class FormSaveController {
/** @var EntityManager */
private $entityManager;
/** @var WPFunctions */
private $wp;
public function __construct(
EntityManager $entityManager,
WPFunctions $wp
) {
$this->entityManager = $entityManager;
$this->wp = $wp;
}
public function duplicate(FormEntity $formEntity): FormEntity {
$duplicate = clone $formEntity;
$duplicate->setName(sprintf(__('Copy of %s', 'mailpoet'), $formEntity->getName()));
// reset timestamps
$now = Carbon::createFromTimestamp($this->wp->currentTime('timestamp'));
$duplicate->setCreatedAt($now);
$duplicate->setUpdatedAt($now);
$duplicate->setDeletedAt(null);
$this->entityManager->persist($duplicate);
$this->entityManager->flush();
return $duplicate;
}
}