Use WordPress current_time for setting lats engagement

[MAILPOET-3762]
This commit is contained in:
Rostislav Wolny
2021-09-03 16:03:55 +02:00
committed by Veljko V
parent a6b58e501a
commit eae0072f24
4 changed files with 60 additions and 22 deletions

View File

@@ -18,6 +18,9 @@ use MailPoetVendor\Doctrine\ORM\Query\Expr\Join;
* @extends Repository<SubscriberEntity>
*/
class SubscribersRepository extends Repository {
/** @var WPFunctions */
private $wp;
protected $ignoreColumnsForUpdate = [
'wp_user_id',
'is_woocommerce_user',
@@ -26,6 +29,11 @@ class SubscribersRepository extends Repository {
'last_subscribed_at',
];
public function __construct(EntityManager $entityManager, WPFunctions $wp) {
$this->wp = $wp;
parent::__construct($entityManager);
}
protected function getEntityClassName() {
return SubscriberEntity::class;
}
@@ -312,12 +320,13 @@ class SubscribersRepository extends Repository {
if ($userAgent instanceof UserAgentEntity && $userAgent->getUserAgentType() === UserAgentEntity::USER_AGENT_TYPE_MACHINE) {
return;
}
$now = Carbon::createFromTimestamp((int)$this->wp->currentTime('timestamp'));
// Do not update engagement if was recently updated to avoid unnecessary updates in DB
if ($subscriberEntity->getLastEngagementAt() && $subscriberEntity->getLastEngagementAt() > Carbon::now()->subMinute()) {
if ($subscriberEntity->getLastEngagementAt() && $subscriberEntity->getLastEngagementAt() > $now->subMinute()) {
return;
}
// Update last engagement for human (and also unknown) user agent
$subscriberEntity->setLastEngagementAt(Carbon::now());
$subscriberEntity->setLastEngagementAt($now);
$this->flush();
}
}