Use WP timestamp in TimestampListener
[MAILPOET-2014]
This commit is contained in:
@ -104,6 +104,7 @@ class ContainerConfigurator implements IContainerConfigurator {
|
||||
$container->autowire(\MailPoetVendor\Doctrine\ORM\EntityManager::class)
|
||||
->setFactory([new Reference(\MailPoet\Doctrine\EntityManagerFactory::class), 'createEntityManager'])
|
||||
->setPublic(true);
|
||||
$container->autowire(\MailPoet\Doctrine\EventListeners\TimestampListener::class);
|
||||
// Cron
|
||||
$container->autowire(\MailPoet\Cron\Daemon::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\Cron\DaemonHttpRunner::class)->setPublic(true);
|
||||
|
@ -16,9 +16,12 @@ class EntityManagerFactory {
|
||||
/** @var Configuration */
|
||||
private $configuration;
|
||||
|
||||
function __construct(Connection $connection, Configuration $configuration) {
|
||||
private $timestamp_listener;
|
||||
|
||||
function __construct(Connection $connection, Configuration $configuration, TimestampListener $timestamp_listener) {
|
||||
$this->connection = $connection;
|
||||
$this->configuration = $configuration;
|
||||
$this->timestamp_listener = $timestamp_listener;
|
||||
}
|
||||
|
||||
function createEntityManager() {
|
||||
@ -30,7 +33,7 @@ class EntityManagerFactory {
|
||||
private function setupTimestampListener(EntityManager $entity_manager) {
|
||||
$entity_manager->getEventManager()->addEventListener(
|
||||
[Events::prePersist, Events::preUpdate],
|
||||
new TimestampListener()
|
||||
$this->timestamp_listener
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -5,6 +5,7 @@ namespace MailPoet\Doctrine\EventListeners;
|
||||
use Carbon\Carbon;
|
||||
use MailPoet\Doctrine\EntityTraits\CreatedAtTrait;
|
||||
use MailPoet\Doctrine\EntityTraits\UpdatedAtTrait;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
use MailPoetVendor\Doctrine\ORM\Event\LifecycleEventArgs;
|
||||
use ReflectionObject;
|
||||
|
||||
@ -12,8 +13,8 @@ class TimestampListener {
|
||||
/** @var Carbon */
|
||||
private $now;
|
||||
|
||||
function __construct() {
|
||||
$this->now = Carbon::now();
|
||||
function __construct(WPFunctions $wp) {
|
||||
$this->now = Carbon::createFromTimestamp($wp->currentTime('timestamp'));
|
||||
}
|
||||
|
||||
function prePersist(LifecycleEventArgs $event_args) {
|
||||
|
@ -5,6 +5,8 @@ namespace MailPoet\Test\Doctrine\EventListeners;
|
||||
use Carbon\Carbon;
|
||||
use MailPoet\Doctrine\ConfigurationFactory;
|
||||
use MailPoet\Doctrine\EntityManagerFactory;
|
||||
use MailPoet\Doctrine\EventListeners\TimestampListener;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
|
||||
require_once __DIR__ . '/TimestampEntity.php';
|
||||
|
||||
@ -12,12 +14,18 @@ class TimestampListenerTest extends \MailPoetTest {
|
||||
/** @var Carbon */
|
||||
private $now;
|
||||
|
||||
/** @var WPFunctions */
|
||||
private $wp;
|
||||
|
||||
/** @var string */
|
||||
private $table_name;
|
||||
|
||||
function _before() {
|
||||
$this->now = Carbon::now();
|
||||
Carbon::setTestNow($this->now);
|
||||
$timestamp = time();
|
||||
$this->now = Carbon::createFromTimestamp($timestamp);
|
||||
$this->wp = $this->make(WPFunctions::class, [
|
||||
'currentTime' => $timestamp,
|
||||
]);
|
||||
|
||||
$this->table_name = $this->entity_manager->getClassMetadata(TimestampEntity::class)->getTableName();
|
||||
$this->connection->executeUpdate("DROP TABLE IF EXISTS $this->table_name");
|
||||
@ -64,7 +72,6 @@ class TimestampListenerTest extends \MailPoetTest {
|
||||
|
||||
function _after() {
|
||||
parent::_after();
|
||||
Carbon::setTestNow();
|
||||
$this->connection->executeUpdate("DROP TABLE IF EXISTS $this->table_name");
|
||||
}
|
||||
|
||||
@ -75,7 +82,8 @@ class TimestampListenerTest extends \MailPoetTest {
|
||||
$metadata_driver = $configuration->newDefaultAnnotationDriver([__DIR__]);
|
||||
$configuration->setMetadataDriverImpl($metadata_driver);
|
||||
|
||||
$entity_manager_factory = new EntityManagerFactory($this->connection, $configuration);
|
||||
$timestamp_listener = new TimestampListener($this->wp);
|
||||
$entity_manager_factory = new EntityManagerFactory($this->connection, $configuration, $timestamp_listener);
|
||||
return $entity_manager_factory->createEntityManager();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user